<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>TechFuel HQ</title><link>https://techfuelhq.com/</link><description>Recent content on TechFuel HQ</description><generator>Hugo</generator><language>en-us</language><managingEditor>LK Wood IV</managingEditor><lastBuildDate>Sat, 25 Jul 2026 00:00:00 -0500</lastBuildDate><atom:link href="https://techfuelhq.com/index.xml" rel="self" type="application/rss+xml"/><atom:link href="https://pubsubhubbub.appspot.com/" rel="hub"/><item><title>Self-Hosted Read-It-Later Apps: Life After Pocket (2026)</title><link>https://techfuelhq.com/homelab/self-hosted-read-it-later-2026/</link><pubDate>Sat, 25 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/homelab/self-hosted-read-it-later-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-07-25 · Updated 2026-07-25 · ~11 min read · St. Louis County, MO&lt;/p>
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p>&lt;strong>TL;DR · Decide whether you want to &lt;em>read&lt;/em> or to &lt;em>organize&lt;/em>&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Pocket is gone&lt;/strong> — shut down 2025-07-08, data deleted from &lt;strong>2025-11-12&lt;/strong> (not the October 8 date most write-ups repeat).&lt;/li>
&lt;li>&lt;strong>The export was URLs only.&lt;/strong> Mozilla's CSV did not contain your article text, so no migration carries your saved reading across.&lt;/li>
&lt;li>&lt;strong>Want to read?&lt;/strong> &lt;strong>Readeck&lt;/strong> (0.22.3, AGPL-3.0) or &lt;strong>wallabag&lt;/strong> (2.6.14, MIT) — both extract and store the readable article.&lt;/li>
&lt;li>&lt;strong>Want to organize links?&lt;/strong> &lt;strong>linkding&lt;/strong> (1.45.0, MIT — one container on SQLite) or &lt;strong>Shiori&lt;/strong> (1.8.0, MIT, single Go binary).&lt;/li>
&lt;li>&lt;strong>Want archive-everything at scale?&lt;/strong> That is the bookmark-manager end — see &lt;a href="https://techfuelhq.com/homelab/karakeep-vs-linkwarden-2026/">Karakeep vs Linkwarden&lt;/a>.&lt;/li>
&lt;/ul>
&lt;p>Versions checked 2026-07-25 against each project's release API. Check the changelog before copying a compose file.&lt;/p>
&lt;/div>
&lt;img src="https://techfuelhq.com/images/homelab/self-hosted-read-it-later-2026.svg" width="1200" height="720" loading="lazy" decoding="async" alt="Decision diagram for self-hosted read-it-later apps in 2026: if you want to read articles later, choose Readeck 0.22.3 AGPL-3.0 or wallabag 2.6.14 MIT, both of which extract and store readable article text; if you want to organize links, choose linkding 1.45.0 MIT which is a single container on SQLite with archiving only in the latest-plus image, or Shiori 1.8.0 MIT which is a single Go binary; if you want to archive and organize at scale, that is the bookmark-manager end covered by Karakeep and Linkwarden. A banner notes Pocket shut down on 2025-07-08 and deleted data from 2025-11-12, and that its export contained URLs only." style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;h2 id="what-actually-happened-to-pocket">What actually happened to Pocket&lt;/h2>
&lt;p>Mozilla announced the phase-out on &lt;strong>2025-05-22&lt;/strong>, writing that it had &amp;ldquo;made the difficult decision to phase out two products: Pocket, our read-it-later and content discovery app, and Fakespot&amp;rdquo; (&lt;a href="https://blog.mozilla.org/en/mozilla/building-whats-next/" rel="noopener">Mozilla&lt;/a>). The service &lt;strong>shut down on 2025-07-08&lt;/strong> and dropped into export-only mode.&lt;/p>
&lt;p>Here is the part almost every write-up gets wrong. The original announcement said data would be deleted after &lt;strong>October 8, 2025&lt;/strong>, and that date is what got copied across the internet. It was superseded. Mozilla&amp;rsquo;s own support article states plainly: &lt;em>&amp;ldquo;As of November 12, 2025, user data export has been disabled, and all user data has been queued for permanent deletion&amp;rdquo;&lt;/em> — the same date the Pocket API was switched off (&lt;a href="https://web.archive.org/web/20260502145211id_/https://support.mozilla.org/en-US/kb/future-of-pocket" rel="noopener">Mozilla Support, via Internet Archive&lt;/a>). If you are reading this in 2026 wondering whether your list is still recoverable: it is not.&lt;/p>
&lt;p>Two details matter more than the dates, because they shape what a replacement can actually do for you:&lt;/p>
&lt;p>&lt;strong>The export was a CSV of links.&lt;/strong> Mozilla&amp;rsquo;s instructions told users to click &amp;ldquo;Export CSV file&amp;rdquo; at &lt;code>getpocket.com/export&lt;/code>, and the support article is explicit that the file contains the URLs of saved items rather than the article text (&lt;a href="https://web.archive.org/web/20260420164430id_/https://support.mozilla.org/en-US/kb/exporting-your-pocket-list" rel="noopener">Mozilla Support, via Internet Archive&lt;/a>). Ten years of saved reading came back as a spreadsheet of addresses.&lt;/p>
&lt;p>&lt;strong>Every official escape route was another cloud.&lt;/strong> Mozilla published a list of &amp;ldquo;third-party services that we understand support the import of Pocket data&amp;rdquo; — GoodLinks, Futurwise, Instapaper, Matter, Raindrop.io and Readwise — while explicitly stating it had not vetted them (&lt;a href="https://web.archive.org/web/20250802094606id_/https://support.mozilla.org/en-US/kb/future-of-pocket" rel="noopener">Mozilla Support, via Internet Archive&lt;/a>). Every one is hosted. Not a single self-hosted option appeared — which is the whole reason this page exists.&lt;/p>
&lt;h2 id="read-it-later-or-bookmark-manager-answer-this-first">Read-it-later or bookmark manager? Answer this first&lt;/h2>
&lt;p>Most &amp;ldquo;Pocket alternative&amp;rdquo; lists quietly mix two different products, and it is the single biggest source of disappointment when people migrate.&lt;/p>
&lt;ul>
&lt;li>A &lt;strong>read-it-later app&lt;/strong> is built around &lt;em>consuming&lt;/em> an article. It extracts the readable text, strips navigation and ads, and gives you a reader view — the thing Pocket actually was.&lt;/li>
&lt;li>A &lt;strong>bookmark manager&lt;/strong> is built around &lt;em>organizing and preserving&lt;/em> links, usually with a full-page snapshot so the page survives link rot. Excellent at recall; not necessarily a nice place to read.&lt;/li>
&lt;/ul>
&lt;p>Self-hosting threads keep re-litigating this, with people pointing out that a given &amp;ldquo;Pocket alternatives&amp;rdquo; roundup is mostly bookmark managers, and others arriving at the same conclusion after trying half a dozen tools. If your goal is &amp;ldquo;I want to read these six articles on the couch tonight,&amp;rdquo; a bookmark manager will technically store them and still leave you unsatisfied.&lt;/p>
&lt;p>This page covers the reading end, plus the lightweight link-organizers people most often reach for as Pocket replacements — some of which describe themselves as bookmark managers, and are included here precisely because that overlap is where the confusion lives. What this page does &lt;em>not&lt;/em> try to settle is heavyweight archival at scale: the two strongest options there get a dedicated head-to-head in &lt;a href="https://techfuelhq.com/homelab/karakeep-vs-linkwarden-2026/">Karakeep vs Linkwarden&lt;/a>, which resolves the organize-versus-archive split within that category.&lt;/p>
&lt;h2 id="the-tools-by-the-job-they-do">The tools, by the job they do&lt;/h2>
&lt;h3 id="readeck--the-closest-thing-to-pocket-self-hosted">Readeck — the closest thing to &amp;ldquo;Pocket, self-hosted&amp;rdquo;&lt;/h3>
&lt;p>Readeck describes itself as an app that &amp;ldquo;lets you save the precious readable content of web pages you like and want to keep forever&amp;rdquo; (&lt;a href="https://codeberg.org/readeck/readeck" rel="noopener">Readeck on Codeberg&lt;/a>). That framing is the point: it is a reader first, an archive second.&lt;/p>
&lt;p>Current stable is &lt;strong>0.22.3, released 2026-04-16&lt;/strong>, under &lt;strong>AGPL-3.0&lt;/strong>, with the repository actively updated as of this writing (verified via the Codeberg API on 2026-07-25). It is the tool that comes up most often in self-hosting threads as the recommendation &lt;em>over&lt;/em> the heavier options, usually on resource-efficiency grounds — though that is community sentiment, not a benchmark.&lt;/p>
&lt;h3 id="wallabag--the-veteran-and-the-one-with-real-export">wallabag — the veteran, and the one with real export&lt;/h3>
&lt;p>wallabag is the veteran option here. It is explicitly a content-extraction app — its README describes saving a web page and keeping only readable content, built on the Graby and php-readability extraction stack (&lt;a href="https://raw.githubusercontent.com/wallabag/wallabag/master/README.md" rel="noopener">wallabag README&lt;/a>).&lt;/p>
&lt;p>Current stable is &lt;strong>2.6.14, released 2025-10-07&lt;/strong>, under the &lt;strong>MIT&lt;/strong> license, with commits on the default branch as recently as 2026-07-24. It is a PHP application requiring PHP 7.4+ and a PDO database — SQLite, MySQL/MariaDB, or PostgreSQL (&lt;a href="https://doc.wallabag.org/admin/installation/requirements/" rel="noopener">requirements&lt;/a>) — and the documented Docker quick-start runs on SQLite (&lt;a href="https://doc.wallabag.org/admin/installation/installation/" rel="noopener">installation&lt;/a>).&lt;/p>
&lt;p>Two things wallabag has that most of this field does not: &lt;strong>in-article annotations and highlights&lt;/strong> (&lt;a href="https://doc.wallabag.org/user/articles/annotations/" rel="noopener">annotations docs&lt;/a>), and &lt;strong>per-article export to ePUB&lt;/strong>, PDF, XML, JSON and CSV, including exporting a whole category at once (&lt;a href="https://doc.wallabag.org/user/articles/download/" rel="noopener">download docs&lt;/a>). If you want saved articles on an e-reader, that is the feature to look at. It also ships first-party Android and iOS apps plus the wallabagger browser extension.&lt;/p>
&lt;p>Honest counterweight, from self-hosting threads rather than the docs: wallabag&amp;rsquo;s initial setup gets criticised for requiring an OAuth client ID and secret on top of a username and password, and one long-time user reported Android sync degrading past roughly fifteen thousand saved articles. Both are single data points, but the scale ceiling is the only concrete one anyone named in this space.&lt;/p>
&lt;h3 id="linkding--minimal-fast-and-archiving-is-opt-in">linkding — minimal, fast, and archiving is opt-in&lt;/h3>
&lt;p>linkding is positioned as a minimal, fast, Docker-first bookmark manager, and it is the tool the community reliably names when someone asks which is snappiest. Current stable is &lt;strong>1.45.0, released 2026-01-06&lt;/strong>, under the &lt;strong>MIT&lt;/strong> license, on a steady cadence (five stable releases between 2025-08-16 and that date). It is a Django app using SQLite by default, with PostgreSQL optional (no MySQL), and its image runs on ARM including Raspberry Pi.&lt;/p>
&lt;p>The detail that surprises people: &lt;strong>server-side archiving is not in the base image.&lt;/strong> HTML snapshots live in the &lt;code>latest-plus&lt;/code> variant, which drives &lt;code>singlefile-cli&lt;/code> against a headless Chromium, and whose documentation asks for &lt;strong>at least 1 GB of RAM&lt;/strong> to run that Chromium (&lt;a href="https://linkding.link/archiving/" rel="noopener">linkding archiving docs&lt;/a>). linkding can also push pages to the Internet Archive instead of storing snapshots locally. So the &amp;ldquo;linkding is light&amp;rdquo; reputation applies to the base image — which is not the archiving one.&lt;/p>
&lt;h3 id="shiori--one-go-binary-slow-and-steady">Shiori — one Go binary, slow and steady&lt;/h3>
&lt;p>Shiori is a bookmark manager distributed as a &lt;strong>single Go binary&lt;/strong>, usable as a CLI or a web app, and explicitly modelled on Pocket (&lt;a href="https://raw.githubusercontent.com/go-shiori/shiori/master/README.md" rel="noopener">Shiori README&lt;/a>). It does archive page content by default, parsing readable content and storing an offline copy. Current stable is &lt;strong>1.8.0, released 2025-09-26&lt;/strong>, &lt;strong>MIT&lt;/strong> licensed, with SQLite by default and PostgreSQL/MySQL/MariaDB available.&lt;/p>
&lt;p>The honest caveat is velocity: the project&amp;rsquo;s own FAQ describes it as maintained but slow-moving, with a single primary active maintainer (&lt;a href="https://raw.githubusercontent.com/go-shiori/shiori/master/docs/faq.md" rel="noopener">Shiori FAQ&lt;/a>), and the browser extension is self-declared beta. The last stable release is the oldest of the four here — though the default branch had commits as recently as 2026-07-10, so this is a pace-and-bus-factor risk, not an abandoned project.&lt;/p>
&lt;h2 id="footprint-and-capability-side-by-side">Footprint and capability, side by side&lt;/h2>
&lt;p>Versions verified 2026-07-25 from each project&amp;rsquo;s release API.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">&lt;/th>
&lt;th scope="col">Readeck 0.22.3&lt;/th>
&lt;th scope="col">wallabag 2.6.14&lt;/th>
&lt;th scope="col">linkding 1.45.0&lt;/th>
&lt;th scope="col">Shiori 1.8.0&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Primary job&lt;/td>
&lt;td>Read saved articles&lt;/td>
&lt;td>Read + annotate + export&lt;/td>
&lt;td>Organize links fast&lt;/td>
&lt;td>Organize links, single binary&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>License&lt;/td>
&lt;td>AGPL-3.0&lt;/td>
&lt;td>MIT&lt;/td>
&lt;td>MIT&lt;/td>
&lt;td>MIT&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Latest release&lt;/td>
&lt;td>2026-04-16&lt;/td>
&lt;td>2025-10-07&lt;/td>
&lt;td>2026-01-06&lt;/td>
&lt;td>2025-09-26&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Stores readable text&lt;/td>
&lt;td>Yes&lt;/td>
&lt;td>Yes (Graby extraction)&lt;/td>
&lt;td>Base image: no; &lt;code>latest-plus&lt;/code>: HTML snapshot&lt;/td>
&lt;td>Yes, offline archive by default&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Database&lt;/td>
&lt;td>See &lt;a href="https://readeck.org/en/docs/" rel="noopener">Readeck docs&lt;/a>&lt;/td>
&lt;td>SQLite / MySQL / PostgreSQL&lt;/td>
&lt;td>SQLite default, PostgreSQL optional&lt;/td>
&lt;td>SQLite default, PostgreSQL / MySQL&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Notable extra&lt;/td>
&lt;td>Reader-first design&lt;/td>
&lt;td>ePUB export, annotations&lt;/td>
&lt;td>Internet Archive integration, ARM/Pi&lt;/td>
&lt;td>CLI + web from one binary&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Documented RAM figure&lt;/td>
&lt;td>none published&lt;/td>
&lt;td>none published&lt;/td>
&lt;td>≥1 GB for &lt;code>latest-plus&lt;/code> (Chromium)&lt;/td>
&lt;td>none published&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Nobody in this category except linkding publishes a RAM figure, and linkding&amp;rsquo;s is specifically for the archiving image. Treat any &amp;ldquo;uses only X MB&amp;rdquo; claim you read elsewhere as unverified unless it names a version and a workload.&lt;/p>
&lt;h2 id="what-the-pocket-export-actually-gives-you">What the Pocket export actually gives you&lt;/h2>
&lt;p>If you still have a CSV you exported before 2025-11-12, understand what it is before you plan a migration.&lt;/p>
&lt;p>It is a list of URLs and metadata. Your new app will re-fetch each page itself — which means the result depends entirely on whether those pages still exist and still serve their content to a server-side fetcher. Pages that died, went behind a paywall, or now require JavaScript in the years since you saved them will not come back. One self-hoster hit exactly this warning while importing into Readeck; another reported a painless import into Karakeep. Both are single data points, and they are not contradictory — the import mechanics differ by tool, but the missing-article-text problem is Pocket&amp;rsquo;s, not the importer&amp;rsquo;s.&lt;/p>
&lt;p>The lesson generalises past Pocket: &lt;strong>a service that only stores your links is one shutdown away from being a list of 404s.&lt;/strong> That is the argument for running a tool that extracts and stores the article text — Readeck, wallabag, Shiori&amp;rsquo;s default archive, or linkding in its archiving image — rather than one that keeps only the URL.&lt;/p>
&lt;h2 id="gotchas-the-project-docs-dont-mention">Gotchas the project docs don&amp;rsquo;t mention&lt;/h2>
&lt;p>These come from self-hosting community threads rather than documentation. Each is one or a few data points — corroborate before betting on them.&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Paywalled and JS-heavy pages need the browser, not the server.&lt;/strong> The recurring workaround is the SingleFile browser extension: your logged-in browser renders the page, then pushes that snapshot into the app. Server-side crawlers get blocked precisely because they are not you. This one is not folklore — linkding documents the SingleFile-to-API upload path directly (&lt;a href="https://linkding.link/archiving/" rel="noopener">linkding archiving docs&lt;/a>).&lt;/li>
&lt;li>&lt;strong>Cookie banners get archived too.&lt;/strong> They are part of the rendered page, and users report consent overlays dominating captured copies at scale.&lt;/li>
&lt;li>&lt;strong>Reddit archiving was broken across tools as of June 2026&lt;/strong> — one user reported Karakeep, Readeck with SingleFile, Linkwarden and linkding all failing to render post content, with a maintainer replying in the same thread (&lt;a href="https://www.reddit.com/r/selfhosted/comments/1u4a11c/" rel="noopener">r/selfhosted&lt;/a>). Timestamped deliberately: this is the kind of thing that gets fixed, so re-check before assuming.&lt;/li>
&lt;li>&lt;strong>&amp;ldquo;Archived&amp;rdquo; and &amp;ldquo;readable offline in the app&amp;rdquo; are different claims.&lt;/strong> One Karakeep user found the offline copy existed server-side but was not viewable in the iOS app. Test the phone path specifically.&lt;/li>
&lt;li>&lt;strong>Resume-reading position is a feature people repeatedly miss.&lt;/strong> Its absence is cited across separate threads as the reason users abandoned an otherwise good tool.&lt;/li>
&lt;/ol>
&lt;h2 id="which-one-should-you-run">Which one should you run?&lt;/h2>
&lt;p>&lt;strong>Choose Readeck&lt;/strong> if you want the closest thing to what Pocket was — a reader-first app whose job is making saved articles pleasant to read, with a current release and an active repo.&lt;/p>
&lt;p>&lt;strong>Choose wallabag&lt;/strong> if you want the mature option, annotations, and above all &lt;strong>ePUB export&lt;/strong> to get saved articles onto an e-reader. Accept a heavier PHP stack and a fiddlier initial setup.&lt;/p>
&lt;p>&lt;strong>Choose linkding&lt;/strong> if speed and a tiny footprint matter more than reading experience, and you either do not need local archiving or are willing to run the &lt;code>latest-plus&lt;/code> image with the RAM that Chromium wants.&lt;/p>
&lt;p>&lt;strong>Choose Shiori&lt;/strong> if you want one binary, no database server, and a CLI — with open eyes about a single-maintainer pace.&lt;/p>
&lt;p>&lt;strong>Choose neither, and read the bookmark-manager comparison instead&lt;/strong>, if what you actually want is durable full-page archival with heavy organization across thousands of links. That is a different job, and &lt;a href="https://techfuelhq.com/homelab/karakeep-vs-linkwarden-2026/">Karakeep vs Linkwarden&lt;/a> resolves it.&lt;/p>
&lt;p>Whichever you pick, it belongs on the same box as the rest of your stack — see &lt;a href="https://techfuelhq.com/articles/self-hosted-apps-replace-saas-2026/">self-hosted apps that replace SaaS&lt;/a> for how this fits alongside the other dozen services worth running, and back it up: a reading archive you never backed up is a reading archive you will eventually lose, which is exactly what the &lt;a href="https://techfuelhq.com/homelab/3-2-1-backup-rule-homelab-2026/">3-2-1 backup rule&lt;/a> is for.&lt;/p>
&lt;h2 id="related-reading">Related reading&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/karakeep-vs-linkwarden-2026/">Karakeep vs Linkwarden&lt;/a> — the bookmark-manager end of this category, organize vs archive&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/articles/self-hosted-apps-replace-saas-2026/">Self-hosted apps that replace SaaS&lt;/a> — where a read-later app ranks against the other candidates&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/bookstack-docker-self-hosted-2026/">BookStack on Docker&lt;/a> — for docs you write, rather than pages you save&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/paperless-ngx-docker-setup-2026/">Paperless-ngx setup&lt;/a> — the same archive-and-search idea, for scanned paper&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/3-2-1-backup-rule-homelab-2026/">The 3-2-1 backup rule&lt;/a> — because a self-hosted archive is only as good as its backups&lt;/li>
&lt;/ul>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://blog.mozilla.org/en/mozilla/building-whats-next/" rel="noopener">https://blog.mozilla.org/en/mozilla/building-whats-next/&lt;/a> — Mozilla&amp;rsquo;s phase-out announcement (2025-05-22)&lt;/li>
&lt;li>&lt;a href="https://web.archive.org/web/20260502145211id_/https://support.mozilla.org/en-US/kb/future-of-pocket" rel="noopener">https://web.archive.org/web/20260502145211id_/https://support.mozilla.org/en-US/kb/future-of-pocket&lt;/a> — Mozilla Support, shutdown and deletion dates (archived; the live host is behind a bot challenge)&lt;/li>
&lt;li>&lt;a href="https://web.archive.org/web/20250802094606id_/https://support.mozilla.org/en-US/kb/future-of-pocket" rel="noopener">https://web.archive.org/web/20250802094606id_/https://support.mozilla.org/en-US/kb/future-of-pocket&lt;/a> — earlier capture of the same page, carrying the third-party import list (archived)&lt;/li>
&lt;li>&lt;a href="https://web.archive.org/web/20260420164430id_/https://support.mozilla.org/en-US/kb/exporting-your-pocket-list" rel="noopener">https://web.archive.org/web/20260420164430id_/https://support.mozilla.org/en-US/kb/exporting-your-pocket-list&lt;/a> — Mozilla Support, export format (archived)&lt;/li>
&lt;li>&lt;a href="https://codeberg.org/readeck/readeck" rel="noopener">https://codeberg.org/readeck/readeck&lt;/a> — Readeck source, releases and license&lt;/li>
&lt;li>&lt;a href="https://readeck.org/en/docs/" rel="noopener">https://readeck.org/en/docs/&lt;/a> — Readeck documentation&lt;/li>
&lt;li>&lt;a href="https://raw.githubusercontent.com/wallabag/wallabag/master/README.md" rel="noopener">https://raw.githubusercontent.com/wallabag/wallabag/master/README.md&lt;/a> — wallabag extraction stack&lt;/li>
&lt;li>&lt;a href="https://doc.wallabag.org/admin/installation/requirements/" rel="noopener">https://doc.wallabag.org/admin/installation/requirements/&lt;/a> — wallabag requirements&lt;/li>
&lt;li>&lt;a href="https://doc.wallabag.org/admin/installation/installation/" rel="noopener">https://doc.wallabag.org/admin/installation/installation/&lt;/a> — wallabag Docker quick-start (SQLite)&lt;/li>
&lt;li>&lt;a href="https://doc.wallabag.org/user/articles/annotations/" rel="noopener">https://doc.wallabag.org/user/articles/annotations/&lt;/a> — wallabag annotations&lt;/li>
&lt;li>&lt;a href="https://doc.wallabag.org/user/articles/download/" rel="noopener">https://doc.wallabag.org/user/articles/download/&lt;/a> — wallabag export formats&lt;/li>
&lt;li>&lt;a href="https://github.com/sissbruecker/linkding" rel="noopener">https://github.com/sissbruecker/linkding&lt;/a> — linkding source, releases and license&lt;/li>
&lt;li>&lt;a href="https://linkding.link/installation/" rel="noopener">https://linkding.link/installation/&lt;/a> — linkding installation and image variants&lt;/li>
&lt;li>&lt;a href="https://linkding.link/archiving/" rel="noopener">https://linkding.link/archiving/&lt;/a> — linkding archiving, &lt;code>latest-plus&lt;/code>, SingleFile and the 1 GB RAM figure&lt;/li>
&lt;li>&lt;a href="https://raw.githubusercontent.com/go-shiori/shiori/master/README.md" rel="noopener">https://raw.githubusercontent.com/go-shiori/shiori/master/README.md&lt;/a> — Shiori design, storage backends and license&lt;/li>
&lt;li>&lt;a href="https://raw.githubusercontent.com/go-shiori/shiori/master/docs/faq.md" rel="noopener">https://raw.githubusercontent.com/go-shiori/shiori/master/docs/faq.md&lt;/a> — Shiori FAQ, maintenance pace&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Community reports.&lt;/strong> The gotchas section and the tool-by-tool caveats draw on r/selfhosted threads read via a front-end mirror; the canonical thread URLs are below. Each is community sentiment — usually one or a few data points — not an authority, and is labelled as such in the body.&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.reddit.com/r/selfhosted/comments/1ktgzpf/" rel="noopener">https://www.reddit.com/r/selfhosted/comments/1ktgzpf/&lt;/a> — the Pocket-shutdown thread&lt;/li>
&lt;li>&lt;a href="https://www.reddit.com/r/selfhosted/comments/1sc0vpd/" rel="noopener">https://www.reddit.com/r/selfhosted/comments/1sc0vpd/&lt;/a> — &amp;ldquo;What bookmark manager are you currently using?&amp;rdquo;&lt;/li>
&lt;li>&lt;a href="https://www.reddit.com/r/selfhosted/comments/1ea8w8o/" rel="noopener">https://www.reddit.com/r/selfhosted/comments/1ea8w8o/&lt;/a> — &amp;ldquo;Current favourite read-it-later app — Readeck&amp;rdquo;&lt;/li>
&lt;li>&lt;a href="https://www.reddit.com/r/selfhosted/comments/1u4a11c/" rel="noopener">https://www.reddit.com/r/selfhosted/comments/1u4a11c/&lt;/a> — Reddit archiving broken across tools (June 2026)&lt;/li>
&lt;li>&lt;a href="https://www.reddit.com/r/selfhosted/comments/1pqspwj/" rel="noopener">https://www.reddit.com/r/selfhosted/comments/1pqspwj/&lt;/a> — &amp;ldquo;Still no true Omnivore read-it-later replacement?&amp;rdquo;&lt;/li>
&lt;li>&lt;a href="https://www.reddit.com/r/selfhosted/comments/1gr87l0/" rel="noopener">https://www.reddit.com/r/selfhosted/comments/1gr87l0/&lt;/a> — &amp;ldquo;Read it later application&amp;rdquo;&lt;/li>
&lt;li>&lt;a href="https://www.reddit.com/r/selfhosted/comments/1fu8l1s/" rel="noopener">https://www.reddit.com/r/selfhosted/comments/1fu8l1s/&lt;/a> — self-hosted read-it-later recommendations&lt;/li>
&lt;li>&lt;a href="https://www.reddit.com/r/selfhosted/comments/186rsrv/" rel="noopener">https://www.reddit.com/r/selfhosted/comments/186rsrv/&lt;/a> — wallabag scale and sync reports&lt;/li>
&lt;li>&lt;a href="https://www.reddit.com/r/selfhosted/comments/1q12fw3/" rel="noopener">https://www.reddit.com/r/selfhosted/comments/1q12fw3/&lt;/a> — Karakeep 2025 wrapped (maintainer post; treat as vendor claim)&lt;/li>
&lt;li>&lt;a href="https://www.reddit.com/r/selfhosted/comments/1pi72bt/" rel="noopener">https://www.reddit.com/r/selfhosted/comments/1pi72bt/&lt;/a> — Linkwarden mobile launch (maintainer post; treat as vendor claim)&lt;/li>
&lt;/ul></description></item><item><title>What PSU Does an RTX 5070 Need? (2026)</title><link>https://techfuelhq.com/articles/what-psu-for-rtx-5070-2026/</link><pubDate>Sat, 25 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/what-psu-for-rtx-5070-2026/</guid><description>&lt;p>&lt;strong>650W.&lt;/strong> That is NVIDIA&amp;rsquo;s own minimum system power figure for the RTX 5070, a card rated at 250W total graphics power, and for most builds it is the right number to buy rather than a bare floor. Where it stops being right is a 200W-plus processor or a planned upgrade to a bigger card — both push you to 750W. A genuinely efficient build can sit on 550W, with one caveat worth knowing before you shop.&lt;/p>
&lt;p>Here is where each of those numbers comes from.&lt;/p>
&lt;h2 id="the-cards-actual-power-specification">The card&amp;rsquo;s actual power specification&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Specification&lt;/th>
&lt;th scope="col">RTX 5070&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Total graphics power (TGP)&lt;/td>
&lt;td>250W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>NVIDIA required system power&lt;/td>
&lt;td>650W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Power connectors&lt;/td>
&lt;td>2x PCIe 8-pin (adapter in box), &lt;strong>or&lt;/strong> one 300W-or-greater PCIe Gen 5 cable&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Two things in that table matter more than the headline. First, the 250W is the &lt;em>card&lt;/em>, while the 650W is the &lt;em>system&lt;/em> — NVIDIA&amp;rsquo;s figure already carries an allowance for a processor, drives, and fans, which is why it lands 400W above the card itself. Second, the 5070 does not force you onto a 12V-2x6 cable: it ships with an adapter for two ordinary 8-pin PCIe connectors, so an older quality supply is still in play.&lt;/p>
&lt;h2 id="what-a-5070-build-actually-draws">What a 5070 build actually draws&lt;/h2>
&lt;p>The graphics card is the biggest single number but not the whole story, and the processor swings the total more than anything else. Summing real component draw the way our &lt;a href="https://techfuelhq.com/tools/psu-wattage-calculator/">PSU calculator&lt;/a> does — 45W for an ATX motherboard, 5W per RAM stick, 8W for a Gen4 M.2 drive, 2W per case fan, 12W for an AIO, plus a 10W miscellaneous allowance — a reference build of two RAM sticks, one M.2 drive, four fans and an AIO adds &lt;strong>93W&lt;/strong> on top of the card and processor. That puts a 5070 build here:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Your processor&lt;/th>
&lt;th scope="col">Example&lt;/th>
&lt;th scope="col">System peak&lt;/th>
&lt;th scope="col">Smallest PSU that works&lt;/th>
&lt;th scope="col">Comfortable choice&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>65W&lt;/td>
&lt;td>Ryzen 5 9600X&lt;/td>
&lt;td>~408W&lt;/td>
&lt;td>550W&lt;/td>
&lt;td>650W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>120W&lt;/td>
&lt;td>Ryzen 7 7800X3D&lt;/td>
&lt;td>~463W&lt;/td>
&lt;td>650W&lt;/td>
&lt;td>750W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>170W&lt;/td>
&lt;td>Ryzen 9 9950X&lt;/td>
&lt;td>~513W&lt;/td>
&lt;td>650W&lt;/td>
&lt;td>750W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>250W&lt;/td>
&lt;td>Core i9-14900K, unrestricted&lt;/td>
&lt;td>~593W&lt;/td>
&lt;td>750W&lt;/td>
&lt;td>850W&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>&amp;ldquo;Smallest that works&amp;rdquo; is peak draw plus a 20% margin, rounded up to a size actually sold. &amp;ldquo;Comfortable&amp;rdquo; is one size above that, putting your peak near 60-70% of the rating — workable and quiet, with room for a future card. Worth knowing if you also run the tool: its headline recommendation targets nearer half load, so it will suggest a larger unit than this column. Both are defensible; this table is the smaller, cheaper end of the range.&lt;/p>
&lt;p>Whether a given processor will hold the card back in games is a separate question from what it costs you in watts — the &lt;a href="https://techfuelhq.com/tools/pc-bottleneck-calculator/">PC bottleneck calculator&lt;/a> answers that one for a specific pairing.&lt;/p>
&lt;p>Notice that the mainstream gaming row lands exactly on NVIDIA&amp;rsquo;s 650W — a useful cross-check on the arithmetic, though NVIDIA does not publish the build behind its figure. Vendor minimums tend to be deliberately worst-case, so treat the agreement as confirmation rather than as proof they assumed this exact build. Either way, the recommendation moves the moment your CPU does.&lt;/p>
&lt;h2 id="when-650w-is-not-the-answer">When 650W is not the answer&lt;/h2>
&lt;p>&lt;strong>Go to 750W if your CPU is a flagship.&lt;/strong> A 9950X or an unrestricted 14900K can pull more than double what an X3D gaming chip draws, and that difference lands entirely on your power budget. The 250W row above peaks at 593W — on a 650W unit that is 91% load, past the point where a supply is working hard enough to get loud and to risk tripping protection.&lt;/p>
&lt;p>&lt;strong>Go to 750W if you plan to upgrade the card.&lt;/strong> A 5070 Ti is a 300W card and NVIDIA&amp;rsquo;s minimum for it is 750W — so that upgrade costs you nothing extra if you buy 750W now. A 5080 is different: 360W, and NVIDIA asks for 850W, so stepping up to one is a power-supply purchase as well as a card purchase. If you are weighing that decision now, the &lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5070-vs-5070-ti-2026/">RTX 5070 vs 5070 Ti comparison&lt;/a> covers what the extra 50W buys you.&lt;/p>
&lt;p>&lt;strong>You can consider 550W if the build is genuinely lean&lt;/strong> — an efficient 65W processor, one drive, no AIO. The arithmetic supports it — that build peaks near 394W, which a 550W unit covers with margin. The practical caveat is a shopping one rather than an electrical one: in our experience shopping the category, quality ATX 3.x units below 650W are thin on the ground, so the 550W shelf skews older. If a good 550W and a good 650W are twenty dollars apart, take the 650W.&lt;/p>
&lt;h2 id="transient-spikes-honestly">Transient spikes, honestly&lt;/h2>
&lt;p>Graphics cards draw in bursts rather than a flat line, and this is where PSU advice usually turns into &amp;ldquo;buy double.&amp;rdquo; It should not.&lt;/p>
&lt;p>Intel&amp;rsquo;s ATX 3.0 design guide requires a compliant unit to survive excursions up to 200% of its rated wattage for 100 microseconds, with lower brackets for longer events. That headroom is already in the standard, but only under both conditions at once: the unit must be above 450W &lt;strong>and&lt;/strong> ship a native 12V-2x6 connector. A 650W supply with that cable meets the bar; a 650W supply without one does not. Smaller units, or ones lacking the connector, are held to a lower requirement.&lt;/p>
&lt;p>The practical translation for a 5070: on a compliant modern unit, size for your sustained peak plus the headroom in the table above and stop padding for spikes. On an older ATX 2.x supply, leave more room, because it was never designed against those brackets. The full methodology, including where every coefficient comes from, is published on the &lt;a href="https://techfuelhq.com/tools/psu-wattage-calculator/">PSU calculator&lt;/a>.&lt;/p>
&lt;h2 id="the-connector">The connector&lt;/h2>
&lt;p>The 5070 accepts either two PCIe 8-pin cables — an adapter is in the box — or a single PCIe Gen 5 cable rated 300W or higher. Neither is more &amp;ldquo;correct&amp;rdquo;; the native Gen 5 cable is simply tidier and avoids stacking an adapter behind the card.&lt;/p>
&lt;p>If you use the 12V-2x6 connector, seat it fully until it clicks and do not put a sharp bend right at the plug. The current design shortens the sense pins specifically so that a plug which is not fully seated fails to deliver full power rather than making partial, high-resistance contact.&lt;/p>
&lt;h2 id="if-you-already-own-the-power-supply">If you already own the power supply&lt;/h2>
&lt;p>Check the label on the unit itself rather than guessing from the case badge. Most supplies report nothing to Windows — there is no standard sensor for it — so the label is the reliable answer; only high-end units with digital monitoring report telemetry, and then through their own software. What you want is the continuous 12V rating, not the peak sticker number. If the unit is multi-rail, follow the manual&amp;rsquo;s rail distribution and give the card its own cables instead of daisy-chaining one pigtail.&lt;/p>
&lt;p>A supply that is merely old is not automatically a problem, but one that is failing looks a lot like one that is undersized — random shutdowns under load, reboots in games. &lt;a href="https://techfuelhq.com/articles/psu-failure-symptoms-2026/">PSU failure symptoms&lt;/a> covers how to tell those two apart before you spend money on the wrong fix.&lt;/p>
&lt;h2 id="lowering-the-number">Lowering the number&lt;/h2>
&lt;p>Undervolting is the one free lever here. Dropping a card&amp;rsquo;s voltage cuts real wattage while holding clocks, and the effect is big enough to matter: at the roughly 50W our own results database reports for a mid-range card, the 120W-CPU build above falls from 463W to 413W — enough to drop it a PSU size — while running cooler and quieter. The &lt;a href="https://techfuelhq.com/articles/how-to-undervolt-gpu-2026/">complete GPU undervolting guide&lt;/a> covers the method, and our &lt;a href="https://techfuelhq.com/articles/gpu-undervolt-settings-database/">undervolt results database&lt;/a> lists what other owners actually measured card by card.&lt;/p>
&lt;p>For where the 5070 sits against its alternatives on raw speed, see the &lt;a href="https://techfuelhq.com/articles/gpu-hierarchy-2026/">GPU hierarchy&lt;/a>; for the AMD side of this decision, the &lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5070-vs-rx-9070-2026/">RTX 5070 vs RX 9070 comparison&lt;/a> covers both power and performance.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>NVIDIA GeForce RTX 5070 official specifications — total graphics power, required system power, and supplementary power connectors — &lt;a href="https://www.nvidia.com/en-us/geforce/graphics-cards/50-series/rtx-5070-family/" rel="noopener">RTX 5070 family specifications&lt;/a>, verified live 2026-07-25. The RTX 5070 Ti figures (300W, 750W) come from the same page.&lt;/li>
&lt;li>NVIDIA GeForce RTX 5080 official specifications — the 360W total graphics power and 850W required system power cited in the upgrade section — &lt;a href="https://www.nvidia.com/en-us/geforce/graphics-cards/50-series/rtx-5080/" rel="noopener">RTX 5080 specifications&lt;/a>, verified live 2026-07-25.&lt;/li>
&lt;li>Intel ATX 3.0 desktop power supply design guide — the power-excursion brackets and the wattage/connector conditions that qualify a unit for them (&lt;a href="https://edc.intel.com/content/www/us/en/design/ipla/software-development-platforms/client/platforms/alder-lake-desktop/atx-version-3-0-multi-rail-desktop-platform-power-supply-design-guide/2.0/2.01/psu-power-excursion/" rel="noopener">Intel ATX 3.0 PSU power excursion&lt;/a>).&lt;/li>
&lt;li>Component draw coefficients and the sizing rules used in the build table are this site&amp;rsquo;s own published figures, listed in full in the &lt;a href="https://techfuelhq.com/tools/psu-wattage-calculator/">PSU calculator methodology&lt;/a>.&lt;/li>
&lt;/ul></description></item><item><title>What PSU Does an RTX 5080 Need? (2026)</title><link>https://techfuelhq.com/articles/what-psu-for-rtx-5080-2026/</link><pubDate>Sat, 25 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/what-psu-for-rtx-5080-2026/</guid><description>&lt;p>&lt;strong>850W.&lt;/strong> That is NVIDIA&amp;rsquo;s required system power for the RTX 5080, a card rated at 360W, and for a normal build it is the number to buy rather than a floor to argue with. The variable that catches people out is not the processor — it is which 5080 you bought. A factory-overclocked board draws roughly 60W more than a Founders Edition, and at the top of the CPU range that difference is worth an entire power-supply tier.&lt;/p>
&lt;h2 id="the-cards-actual-power-specification">The card&amp;rsquo;s actual power specification&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Specification&lt;/th>
&lt;th scope="col">RTX 5080&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Total graphics power (TGP)&lt;/td>
&lt;td>360W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>NVIDIA required system power&lt;/td>
&lt;td>850W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Power connectors&lt;/td>
&lt;td>3x PCIe 8-pin (adapter in box), &lt;strong>or&lt;/strong> one 450W-or-greater PCIe Gen 5 cable&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Both connector figures moved up from the RTX 5070, which asks for two 8-pins or a 300W Gen 5 cable. That matters on an upgrade: an older supply with two spare 8-pin cables may not have a third, and a Gen 5 cable rated for a 5070 is not necessarily rated for this card. Check the cable, not just the wattage on the box.&lt;/p>
&lt;h2 id="which-5080-did-you-buy">Which 5080 did you buy?&lt;/h2>
&lt;p>This is the question that decides your answer, and it is specific to this tier. Summing component draw the way our &lt;a href="https://techfuelhq.com/tools/psu-wattage-calculator/">PSU calculator&lt;/a> does — 45W for an ATX board, 5W per RAM stick, 8W for a Gen4 M.2, 2W per fan, 12W for an AIO, plus a 10W miscellaneous allowance, so 93W for a reference build of two sticks, one drive, four fans and an AIO — the two variants land like this:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Your processor&lt;/th>
&lt;th scope="col">360W Founders-class card&lt;/th>
&lt;th scope="col">~420W factory-OC card&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>65W&lt;/td>
&lt;td>518W peak → 650W&lt;/td>
&lt;td>578W peak → 750W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>120W&lt;/td>
&lt;td>573W peak → 750W&lt;/td>
&lt;td>633W peak → 850W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>170W&lt;/td>
&lt;td>623W peak → 750W&lt;/td>
&lt;td>683W peak → 850W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>250W&lt;/td>
&lt;td>703W peak → 850W&lt;/td>
&lt;td>763W peak → &lt;strong>1000W&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Sizes are peak draw plus a 20% margin, rounded up to a wattage actually sold — the &lt;em>smallest unit that works&lt;/em>, in the calculator&amp;rsquo;s language, not the most comfortable one. As on the &lt;a href="https://techfuelhq.com/articles/what-psu-for-rtx-5070-2026/">5070 page&lt;/a>, one tier above each figure is the quieter, longer-lived choice. Read across any row: the overclocked board costs you a tier on its own — same silicon, different power target.&lt;/p>
&lt;p>Our own reference card is the overclocked kind, and we have logged it. Across a 25-minute gaming session on the &lt;a href="https://techfuelhq.com/gpu-reviews/rog-astral-rtx-5080-oc-review-2026/">ASUS ROG Astral RTX 5080 OC&lt;/a> — 308 HWiNFO64 samples on the hand-tuned profile — board power averaged &lt;strong>261W&lt;/strong> and peaked at &lt;strong>326W&lt;/strong>. That is comfortably under the ~420W the calculator uses for an overclocked board, which is the point: you size a supply for the worst case it must survive, not for the average it will usually see.&lt;/p>
&lt;p>Notice that our arithmetic for a Founders-class card with a mainstream CPU lands at 750W, below NVIDIA&amp;rsquo;s 850W. That is not a gap to exploit. Vendor minimums tend to be worst-case, and NVIDIA&amp;rsquo;s note on the RTX 5090 is the one place they show their assumption — that figure is based on a system built around a Ryzen 9 9950X, a flagship chip. Read their 850W as covering the bottom of that table rather than the middle, and buy it.&lt;/p>
&lt;h2 id="when-850w-becomes-1000w">When 850W becomes 1000W&lt;/h2>
&lt;p>Three things push you up, and they stack:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>A factory-overclocked board&lt;/strong> — roughly 60W over a Founders-class card.&lt;/li>
&lt;li>&lt;strong>A processor at or above 200W.&lt;/strong> A Ryzen 9 9950X sits right around 200W by our calculator&amp;rsquo;s figure; an unrestricted Core i9 goes well past it and lands you in the bottom row.&lt;/li>
&lt;li>&lt;strong>Manual overclocking or a raised power limit&lt;/strong>, which moves the card past its stock target entirely.&lt;/li>
&lt;/ul>
&lt;p>Any two together make 1000W the sensible buy. Whether a given processor limits your frame rate rather than your power budget is a different question — the &lt;a href="https://techfuelhq.com/tools/pc-bottleneck-calculator/">PC bottleneck calculator&lt;/a> covers that one.&lt;/p>
&lt;h2 id="transient-spikes-honestly">Transient spikes, honestly&lt;/h2>
&lt;p>A 360W card draws in bursts rather than a flat line, and this is where PSU advice usually becomes &amp;ldquo;buy double.&amp;rdquo; It should not.&lt;/p>
&lt;p>Intel&amp;rsquo;s ATX 3.0 design guide requires a compliant unit to survive excursions to 200% of its rated wattage for 100 microseconds, with lower brackets for longer events — but only where both conditions hold: the unit is above 450W &lt;strong>and&lt;/strong> ships a native 12VHPWR / 12V-2x6 connector. An 850W ATX 3.x supply with that cable meets the bar; one without the native cable does not, whatever its wattage.&lt;/p>
&lt;p>So on a compliant modern unit, size for sustained peak plus the headroom in the table and stop padding for spikes. On an older ATX 2.x supply paired with a 5080, leave more room — it was never designed against those brackets. The full methodology is published on the &lt;a href="https://techfuelhq.com/tools/psu-wattage-calculator/">PSU calculator&lt;/a>.&lt;/p>
&lt;h2 id="the-undervolt-that-can-buy-a-tier-back">The undervolt that can buy a tier back&lt;/h2>
&lt;p>The 5080 sits right on a tier boundary, which makes undervolting worth more here than the raw watts suggest. Curve undervolting a 5080 is widely reported to cut &lt;strong>30–70W&lt;/strong> depending on where your silicon lands, and our own &lt;a href="https://techfuelhq.com/articles/rtx-5080-undervolt-guide-2026/">RTX 5080 undervolt guide&lt;/a> uses that published range rather than a single number, because the spread between chips is the whole point.&lt;/p>
&lt;p>Against the table above, even the middle of that range matters. A ~420W overclocked card with a 120W processor peaks near 633W and wants 850W; take 50W off and it peaks near 583W, which a 750W unit covers.&lt;/p>
&lt;p>The honest caveat is that you cannot bank it in advance. Silicon varies, the range is wide, and a PSU has to cover the case where your card undervolts poorly. Buy for the stock figure, undervolt afterwards, and treat the saving as headroom you gained rather than money you saved. Our &lt;a href="https://techfuelhq.com/articles/gpu-undervolt-settings-database/">undervolt results database&lt;/a> lists what specific cards achieved, with the source behind each row.&lt;/p>
&lt;h2 id="if-you-are-coming-from-a-smaller-card">If you are coming from a smaller card&lt;/h2>
&lt;p>Sizing for an RTX 5070 is a different exercise — 250W, 650W of system power, two 8-pins — and it is covered in &lt;a href="https://techfuelhq.com/articles/what-psu-for-rtx-5070-2026/">what PSU an RTX 5070 needs&lt;/a>. Moving from a 5070 to a 5080 is genuinely a power-supply purchase as well as a card purchase, worth budgeting before the card arrives rather than after. For where both land on raw speed, see the &lt;a href="https://techfuelhq.com/articles/gpu-hierarchy-2026/">GPU hierarchy&lt;/a>.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>NVIDIA GeForce RTX 5080 official specifications — total graphics power, required system power, and supplementary power connectors — &lt;a href="https://www.nvidia.com/en-us/geforce/graphics-cards/50-series/rtx-5080/" rel="noopener">RTX 5080 specifications&lt;/a>, verified live 2026-07-25.&lt;/li>
&lt;li>NVIDIA GeForce RTX 5070 specifications, for the upgrade comparison — &lt;a href="https://www.nvidia.com/en-us/geforce/graphics-cards/50-series/rtx-5070-family/" rel="noopener">RTX 5070 family&lt;/a>, verified live 2026-07-25.&lt;/li>
&lt;li>Intel ATX 3.0 desktop power supply design guide — the excursion brackets and the wattage/connector conditions that qualify a unit (&lt;a href="https://edc.intel.com/content/www/us/en/design/ipla/software-development-platforms/client/platforms/alder-lake-desktop/atx-version-3-0-multi-rail-desktop-platform-power-supply-design-guide/2.0/2.01/psu-power-excursion/" rel="noopener">Intel ATX 3.0 PSU power excursion&lt;/a>).&lt;/li>
&lt;li>NVIDIA GeForce RTX 5090 specifications — the note stating its minimum-system-power figure is based on a system configured with a Ryzen 9 9950X — &lt;a href="https://www.nvidia.com/en-us/geforce/graphics-cards/50-series/rtx-5090/" rel="noopener">RTX 5090&lt;/a>, verified live 2026-07-25.&lt;/li>
&lt;li>The ~420W figure for a factory-overclocked 5080 is this site&amp;rsquo;s own sizing estimate, taken from the GPU list in the &lt;a href="https://techfuelhq.com/tools/psu-wattage-calculator/">PSU calculator&lt;/a>; it is a conservative peak for sizing, not a measured gaming draw.&lt;/li>
&lt;li>The 261W average / 326W peak board-power figures are our own first-party telemetry: 308 HWiNFO64 samples across a 25-minute gaming session on the hand-tuned profile, published in the &lt;a href="https://techfuelhq.com/gpu-reviews/rog-astral-rtx-5080-oc-review-2026/">ROG Astral RTX 5080 OC review&lt;/a> with the raw dataset.&lt;/li>
&lt;li>The 30–70W curve-undervolting range is the published community range cited in our &lt;a href="https://techfuelhq.com/articles/rtx-5080-undervolt-guide-2026/">RTX 5080 undervolt guide&lt;/a>.&lt;/li>
&lt;li>Component draw coefficients and sizing rules are this site&amp;rsquo;s own published figures, listed in full in the &lt;a href="https://techfuelhq.com/tools/psu-wattage-calculator/">PSU calculator methodology&lt;/a>.&lt;/li>
&lt;/ul></description></item><item><title>GPU Undervolt Settings Database: Real Results by Card (2026)</title><link>https://techfuelhq.com/articles/gpu-undervolt-settings-database/</link><pubDate>Fri, 24 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/gpu-undervolt-settings-database/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-07-24 · ~6 min read · St. Louis County, MO&lt;/p>
&lt;p>Undervolting is one of the highest-value ten-minute tweaks in a PC — but the single question everyone asks is &lt;em>&amp;ldquo;what settings should I actually use for my card?&amp;rdquo;&lt;/em> Published guides give a method; this page gives &lt;strong>data&lt;/strong>: an open, crowdsourced table of real undervolt settings and the results people measured, one row per tested configuration.&lt;/p>
&lt;p>It is the data companion to our &lt;a href="https://techfuelhq.com/articles/how-to-undervolt-gpu-2026/">complete guide to undervolting your GPU&lt;/a>, which walks through the method itself on both NVIDIA and AMD. Use that to learn &lt;em>how&lt;/em>; use the table below to see &lt;em>where other people&amp;rsquo;s cards landed&lt;/em>.&lt;/p>
&lt;h2 id="the-results">The results&lt;/h2>
&lt;p>Each row is a real, sourced result. NVIDIA rows list the MSI Afterburner voltage-frequency point (voltage @ clock); AMD rows list the Adrenalin offset (or, on RDNA 3, the absolute max voltage) plus any power-limit change. Where a number was not measured, the cell is blank rather than guessed.&lt;/p>
&lt;div class="uvdb-wrap">
&lt;div class="uvdb-meta">
&lt;span class="uvdb-badge">8 verified results&lt;/span>
&lt;span class="uvdb-lic">CC BY 4.0 &amp;middot; updated 2026-07-24 &amp;middot; open dataset&lt;/span>
&lt;/div>
&lt;div class="uvdb-scroll">
&lt;table class="uvdb-table">
&lt;caption class="uvdb-cap">Community GPU undervolt results &amp;mdash; measured settings and outcomes, one row per tested configuration. Sourced; contribute your card by pull request.&lt;/caption>
&lt;thead>
&lt;tr>
&lt;th scope="col">GPU&lt;/th>
&lt;th scope="col">Method &amp;amp; setting&lt;/th>
&lt;th scope="col">Power saved&lt;/th>
&lt;th scope="col">Temp drop&lt;/th>
&lt;th scope="col">FPS change&lt;/th>
&lt;th scope="col">Stability test&lt;/th>
&lt;th scope="col">Source&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;th scope="row" class="uvdb-gpu">RTX 5080&lt;span class="uvdb-board">ASUS ROG Astral OC&lt;/span>&lt;/th>
&lt;td>950 mV @ 2750 MHz, power limit 90%&lt;span class="uvdb-method">MSI Afterburner V/F curve&lt;/span>&lt;/td>
&lt;td>~50 W&lt;/td>
&lt;td>&amp;mdash;&lt;/td>
&lt;td>&amp;plusmn;0% &lt;span class="uvdb-parity">(parity)&lt;/span>&lt;/td>
&lt;td class="uvdb-stab">Settings follow the worked example in our RTX 5080 undervolt guide; the ~50W saving sits inside the 30-70W range that guide cites from community testing at hardware review sites. Not a logged before/after measurement on our own card.&lt;/td>
&lt;td>&lt;a href="https://techfuelhq.com/articles/rtx-5080-undervolt-guide-2026/">TechFuel HQ&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th scope="row" class="uvdb-gpu">RX 9070 XT&lt;span class="uvdb-board">Sapphire NITRO&amp;#43;&lt;/span>&lt;/th>
&lt;td>-100 mV offset (power limit left at stock)&lt;span class="uvdb-method">AMD Adrenalin voltage offset&lt;/span>&lt;/td>
&lt;td>&amp;mdash;&lt;/td>
&lt;td>&amp;mdash;&lt;/td>
&lt;td>&lt;span class="uvdb-up">+10%&lt;/span>&lt;/td>
&lt;td class="uvdb-stab">Stress-tested in a demanding game after stepping the offset down from -40 mV; validated in real play, not just a short benchmark&lt;/td>
&lt;td>&lt;a href="https://www.xda-developers.com/i-undervolted-my-gpu-and-got-the-upgrade-i-actually-wanted/" rel="nofollow noopener" target="_blank">www.xda-developers.com&lt;/a> &amp;middot; &lt;a href="https://www.reddit.com/r/radeon/comments/1j6mbey/mega_thread_9070_xt_undervoltoverclockbrand/" rel="nofollow noopener" target="_blank">2&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th scope="row" class="uvdb-gpu">RTX 4090&lt;/th>
&lt;td>940 mV @ 2700 MHz (&amp;#43;1200 memory)&lt;span class="uvdb-method">MSI Afterburner V/F curve&lt;/span>&lt;/td>
&lt;td>~100 W&lt;/td>
&lt;td>&amp;mdash;&lt;/td>
&lt;td>&amp;plusmn;0% &lt;span class="uvdb-parity">(parity)&lt;/span>&lt;/td>
&lt;td class="uvdb-stab">Loop a demanding title / stress test (instability shows as crashes or black screens). FE silicon often stable ~925 mV; AIB cards ~950-975 mV.&lt;/td>
&lt;td>&lt;a href="https://forums.overclockers.co.uk/threads/undervolting-power-curve-on-4090.18988981/" rel="nofollow noopener" target="_blank">forums.overclockers.co.uk&lt;/a> &amp;middot; &lt;a href="https://www.techpowerup.com/301649/nvidia-geforce-rtx-4090-with-nearly-half-its-power-limit-and-undervolting-loses-just-8-performance" rel="nofollow noopener" target="_blank">2&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th scope="row" class="uvdb-gpu">RTX 4080 Super&lt;/th>
&lt;td>950 mV @ 2760 MHz&lt;span class="uvdb-method">MSI Afterburner V/F curve&lt;/span>&lt;/td>
&lt;td>~50 W&lt;/td>
&lt;td>~8&amp;deg;C&lt;/td>
&lt;td>&amp;plusmn;0% &lt;span class="uvdb-parity">(parity)&lt;/span>&lt;/td>
&lt;td class="uvdb-stab">Extended in-game / ray-tracing stress test (not just synthetics); some cards need &amp;#43;12-25 mV in heavy RT titles.&lt;/td>
&lt;td>&lt;a href="https://evezone.evetech.co.za/deep-dives/rtx-4080-super-undervolt-guide" rel="nofollow noopener" target="_blank">evezone.evetech.co.za&lt;/a> &amp;middot; &lt;a href="https://www.sagetweaks.com/blog/how-to-undervolt-gpu-msi-afterburner" rel="nofollow noopener" target="_blank">2&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th scope="row" class="uvdb-gpu">RTX 5090&lt;/th>
&lt;td>900 mV @ 2800 MHz (flatten curve above the point)&lt;span class="uvdb-method">MSI Afterburner V/F curve&lt;/span>&lt;/td>
&lt;td>~100 W&lt;/td>
&lt;td>~10&amp;deg;C&lt;/td>
&lt;td>&lt;span class="uvdb-down">-2%&lt;/span>&lt;/td>
&lt;td class="uvdb-stab">Several hours in a memory-heavy title (Cyberpunk 2077 / Monster Hunter). Verify your Afterburner build supports 50-series curve editing.&lt;/td>
&lt;td>&lt;a href="https://www.overclock.net/threads/5090-undervolt-overclock-curve-optimizer.1817485/" rel="nofollow noopener" target="_blank">www.overclock.net&lt;/a> &amp;middot; &lt;a href="https://rtx50series.co.uk/light-undervolting-rtx-5090-safe-temps-stable-4k/" rel="nofollow noopener" target="_blank">2&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th scope="row" class="uvdb-gpu">RTX 5070 Ti&lt;/th>
&lt;td>935 mV @ 2955 MHz (via &amp;#43;450 MHz core offset), &amp;#43;1500 memory&lt;span class="uvdb-method">MSI Afterburner V/F curve&lt;/span>&lt;/td>
&lt;td>~50 W&lt;/td>
&lt;td>&amp;mdash;&lt;/td>
&lt;td>&lt;span class="uvdb-up">+4%&lt;/span>&lt;/td>
&lt;td class="uvdb-stab">Flatten the V/F curve at the target point; achievable clock at 935 mV varies by card (~2932-2945 MHz measured on the source unit).&lt;/td>
&lt;td>&lt;a href="https://www.esportstales.com/tech-tips/how-to-undervolt-the-5070-ti-with-msi-afterburner" rel="nofollow noopener" target="_blank">www.esportstales.com&lt;/a> &amp;middot; &lt;a href="https://www.msi.com/blog/rtx-5070-5060ti-overclocking-undervolting-guide-with-msi-afterburner-part-2" rel="nofollow noopener" target="_blank">2&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th scope="row" class="uvdb-gpu">RX 7900 XTX&lt;/th>
&lt;td>1100 mV max voltage (~-50 mV vs ~1150 mV stock), power limit &amp;#43;15%&lt;span class="uvdb-method">AMD Adrenalin max voltage (RDNA3 absolute)&lt;/span>&lt;/td>
&lt;td>&amp;mdash;&lt;/td>
&lt;td>&amp;mdash;&lt;/td>
&lt;td>&amp;plusmn;0% &lt;span class="uvdb-parity">(parity)&lt;/span>&lt;/td>
&lt;td class="uvdb-stab">Lower max voltage in 10-15 mV steps; if it crashes/black-screens, raise 10-15 mV and retest (an invalid UV just resets on reboot). Validate with 15-20 min stress &amp;#43; 20-30 min gameplay.&lt;/td>
&lt;td>&lt;a href="https://tier1settings.com/rx-7900-xtx-undervolt-guide/" rel="nofollow noopener" target="_blank">tier1settings.com&lt;/a> &amp;middot; &lt;a href="https://community.topazlabs.com/t/7900-xtx-under-volting-suscess-3-400-watts-down-to-200/89312" rel="nofollow noopener" target="_blank">2&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th scope="row" class="uvdb-gpu">RX 9070&lt;/th>
&lt;td>-100 mV offset, -30% power limit (efficiency-biased)&lt;span class="uvdb-method">AMD Adrenalin voltage offset&lt;/span>&lt;/td>
&lt;td>&amp;mdash;&lt;/td>
&lt;td>&amp;mdash;&lt;/td>
&lt;td>&lt;span class="uvdb-down">-7%&lt;/span>&lt;/td>
&lt;td class="uvdb-stab">-100 mV reported daily-stable; community reports crashes past ~-170 mV. This is an EFFICIENCY tune: the -30% power limit trades ~7% FPS for large power/thermal savings. A milder -80 to -100 mV at 0% power limit is the performance-neutral option.&lt;/td>
&lt;td>&lt;a href="https://www.notebookcheck.net/Radeon-RX-9070-undervolting-yields-surprising-performance-still-beats-RTX-4070-Ti-Super.977181.0.html" rel="nofollow noopener" target="_blank">www.notebookcheck.net&lt;/a> &amp;middot; &lt;a href="https://forums.tomshardware.com/threads/does-anyone-know-how-to-undervolt-an-rx-9070-xt.3880899/" rel="nofollow noopener" target="_blank">2&lt;/a>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p class="uvdb-contribute">&lt;strong>Have results for your card?&lt;/strong> This is an open dataset &amp;mdash; add a row by pull request against &lt;code>data/undervolt_results.json&lt;/code>. Submit a pull request against https://github.com/iBlessi/gpu-undervolt-db adding one object to the &amp;#34;results&amp;#34; array in data/undervolt_results.json. The repository&amp;#39;s .github/PULL_REQUEST_TEMPLATE.md fills in automatically with the required fields and methodology, and an automated check validates schema, plausibility, and sourcing on every PR. Every numeric value must cite a resolvable source.&lt;/p>
&lt;/div>
&lt;script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Dataset",
"name": "\"TechFuelHQ Community GPU Undervolt Results\"",
"description": "\"An open, crowdsourced dataset of real GPU undervolt settings and their measured results. Contribute your card via a pull request; git is the moderation queue.\"",
"license": "https://creativecommons.org/licenses/by/4.0/",
"creator": {"@type": "Organization", "name": "TechFuelHQ"},
"dateModified": "\"2026-07-24\"",
"isAccessibleForFree": true,
"variableMeasured": ["undervolt voltage/offset", "core clock", "power limit", "power saved (W)", "hotspot temperature drop (C)", "FPS change (%)", "stability"]
}
&lt;/script>
&lt;style>
.uvdb-wrap{margin:1.5rem 0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}
.uvdb-meta{display:flex;flex-wrap:wrap;gap:.5rem 1rem;align-items:baseline;margin-bottom:.6rem}
.uvdb-badge{background:#c8ff00;color:#0b0f1e;font-weight:700;font-size:.8rem;padding:2px 10px;border-radius:20px}
.uvdb-lic{font-size:.78rem;color:#8f9bb3}
.uvdb-scroll{overflow-x:auto;border:1px solid #1e1e3a;border-radius:8px}
.uvdb-table{width:100%;border-collapse:collapse;font-size:.9rem;min-width:720px}
.uvdb-cap{caption-side:top;text-align:left;font-size:.8rem;color:#8f9bb3;padding:.6rem .8rem;line-height:1.5}
.uvdb-table th,.uvdb-table td{text-align:left;padding:.6rem .8rem;border-top:1px solid #1e1e3a;vertical-align:top}
.uvdb-table thead th{border-top:none;border-bottom:1.5px solid rgba(200,255,0,.3);color:#7a869c;font-weight:600;font-size:.78rem;white-space:nowrap}
.uvdb-gpu{font-weight:700;white-space:nowrap}
.uvdb-board{display:block;font-weight:400;font-size:.75rem;color:#8f9bb3}
.uvdb-method{display:block;font-size:.75rem;color:#8f9bb3;margin-top:2px}
.uvdb-up{color:#7dd88f;font-weight:700}
.uvdb-down{color:#ed6a5a;font-weight:700}
.uvdb-parity{color:#8f9bb3;font-size:.8rem}
.uvdb-stab{font-size:.82rem;color:#a0a0b8;max-width:22rem}
.uvdb-flagnote{font-size:.8rem;color:#8f9bb3;margin:.6rem 0 0}
.uvdb-contribute{font-size:.85rem;color:#a0a0b8;margin-top:1rem;padding-top:.8rem;border-top:1px solid #1e1e3a;line-height:1.6}
.uvdb-contribute code{background:rgba(255,255,255,.06);padding:1px 5px;border-radius:4px;font-size:.85em}
&lt;/style>
&lt;h2 id="how-to-read-it">How to read it&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Method &amp;amp; setting&lt;/strong> — the exact tune. NVIDIA cards undervolt through the &lt;a href="https://techfuelhq.com/articles/how-to-undervolt-gpu-2026/">MSI Afterburner&lt;/a> voltage-frequency curve (pin a low-voltage point to your stock clock); AMD cards use a negative voltage offset in Adrenalin.&lt;/li>
&lt;li>&lt;strong>Power saved / temp drop&lt;/strong> — the efficiency win at the same performance. This is where the value is on most cards.&lt;/li>
&lt;li>&lt;strong>FPS change&lt;/strong> — usually &lt;strong>±0%&lt;/strong> (same frames, cooler and quieter). A positive number means the card was &lt;strong>power-limited&lt;/strong>, so freeing voltage let it boost higher — the reason the &lt;a href="https://techfuelhq.com/articles/rx-9070-xt-undervolt-2026/">RX 9070 XT can gain about 10% FPS&lt;/a>.&lt;/li>
&lt;li>&lt;strong>Silicon lottery&lt;/strong> — treat every row as a &lt;em>starting point&lt;/em>, not a guarantee. Two identical cards can need 25–50mV apart. Start conservative, test, and step down.&lt;/li>
&lt;/ul>
&lt;p>None of the seed rows is a logged first-party before/after run yet — they are community-consensus settings, community-verified results, and review-measured values, each with its source linked in the table. Our own &lt;a href="https://techfuelhq.com/articles/rtx-5080-undervolt-guide-2026/">RTX 5080&lt;/a> and &lt;a href="https://techfuelhq.com/articles/rx-9070-xt-undervolt-2026/">RX 9070 XT&lt;/a> guides are where those settings are worked through. First-party measured rows are exactly what this database is built to accumulate, starting with submissions.&lt;/p>
&lt;h2 id="contribute-your-card">Contribute your card&lt;/h2>
&lt;p>This dataset grows by submission, and the submissions repository is now open: &lt;strong>&lt;a href="https://github.com/iBlessi/gpu-undervolt-db" rel="noopener">github.com/iBlessi/gpu-undervolt-db&lt;/a>&lt;/strong>. There is no login to create, no account, and no backend — &lt;strong>git is the moderation queue&lt;/strong>. To add your result:&lt;/p>
&lt;ol>
&lt;li>Undervolt your card (our &lt;a href="https://techfuelhq.com/articles/how-to-undervolt-gpu-2026/">guide&lt;/a> covers the method) and record what you changed and what you measured.&lt;/li>
&lt;li>Fork the repo and add &lt;strong>one&lt;/strong> object to the &lt;code>results&lt;/code> array in &lt;code>data/undervolt_results.json&lt;/code>, then open a pull request. The submission template fills in automatically with the field guide and checklist — the card, the offset or voltage curve you set, and the numbers you measured.&lt;/li>
&lt;li>An automated check runs on your PR. It &lt;strong>blocks&lt;/strong> on hard problems — malformed schema, impossible values, a missing source — and &lt;strong>warns&lt;/strong> on statistical outliers, which can still merge but are held out of the table above until a maintainer confirms them. You can run the same check locally with &lt;code>python scripts/undervolt_outlier_flag.py --check&lt;/code>.&lt;/li>
&lt;/ol>
&lt;p>Prefer not to use GitHub? Email &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a> with the same information and we will open the pull request for you.&lt;/p>
&lt;p>The only hard rule is &lt;strong>honesty&lt;/strong>: every number should trace to something real — a review, a forum thread, or your own screenshot. Unmeasured fields stay &lt;code>null&lt;/code>. Implausible submissions are flagged and held out of the table until reviewed.&lt;/p>
&lt;h2 id="what-the-data-shows-so-far">What the data shows so far&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Undervolting is almost free performance.&lt;/strong> Across every card here, the tuned result is the same frames (or a few more) at meaningfully lower power and temperature.&lt;/li>
&lt;li>&lt;strong>The bigger the card, the bigger the win.&lt;/strong> A 575W RTX 5090 or 450W RTX 4090 reclaims ~100W; a mid-range card saves ~50W. The &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">power &amp;amp; cost calculator&lt;/a> turns those watts into dollars per year.&lt;/li>
&lt;li>&lt;strong>Power-limited cards gain FPS.&lt;/strong> The RX 9070 XT is the clearest example — undervolting lets it hold higher clocks within its power budget.&lt;/li>
&lt;li>&lt;strong>The consensus voltages are tight.&lt;/strong> Modern NVIDIA cards cluster at 900–950mV; RDNA 4 AMD cards at -80 to -100mV. That convergence is exactly what a crowdsourced dataset is good at confirming.&lt;/li>
&lt;/ul>
&lt;h2 id="sources-and-methodology">Sources and methodology&lt;/h2>
&lt;p>Every row cites its source in the table. Community rows link to the review or forum thread the numbers came from; rows drawn from our own guides link to the guide that works the settings through. The dataset is published under CC BY 4.0, and the field definitions and contribution rules travel with it in the file&amp;rsquo;s own &lt;code>meta&lt;/code> block. If you find an error, open a pull request against &lt;a href="https://github.com/iBlessi/gpu-undervolt-db" rel="noopener">the repository&lt;/a> or email &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a> with the card and the correction — corrections are treated the same as new submissions and are checked against a source before the table changes.&lt;/p></description></item><item><title>How to Undervolt Your GPU: The Complete Guide (2026)</title><link>https://techfuelhq.com/articles/how-to-undervolt-gpu-2026/</link><pubDate>Fri, 24 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/how-to-undervolt-gpu-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-07-24 · ~9 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/articles/how-to-undervolt-gpu-2026.svg" width="1200" height="630" loading="eager" fetchpriority="high" decoding="async" alt="How to undervolt your GPU in 2026: on NVIDIA use the MSI Afterburner voltage-frequency curve, pinning a point near 0.9V to your stock clock; on AMD set a negative voltage offset in Adrenalin. The five-step method is the same on both - baseline, lower voltage, hold or raise clocks, stress-test 15 minutes, save. Lower voltage frees headroom, so a power-limited card can boost higher for a few more FPS. Safe and reversible." style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;h2 id="what-undervolting-actually-does">What undervolting actually does&lt;/h2>
&lt;p>Every graphics card leaves the factory with more voltage than it strictly needs. AMD and NVIDIA program a voltage-frequency curve that has to keep the &lt;em>worst&lt;/em> chip of a given model stable, so most cards run higher voltage at a given clock than their particular silicon requires. Undervolting reclaims that margin: you tell the card to run the same clocks at a lower voltage.&lt;/p>
&lt;p>The payoff comes in one of two forms, depending on your card:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Lower heat, power, and noise at the same performance.&lt;/strong> Less voltage means less power turned into heat, so temperatures drop, fans spin slower, and the card is quieter — with the same frame rates.&lt;/li>
&lt;li>&lt;strong>A few more frames.&lt;/strong> On a card that runs into its &lt;strong>power limit&lt;/strong> under load (common on higher-end GPUs), lowering voltage frees up power budget, and the boost algorithm spends it on &lt;em>higher&lt;/em> sustained clocks. That&amp;rsquo;s why undervolting can come out slightly &lt;em>faster&lt;/em>, not slower.&lt;/li>
&lt;/ul>
&lt;p>It is one of the highest-value ten-minute tweaks in a PC, it costs nothing, and it&amp;rsquo;s fully reversible. This guide covers the method for both brands; for card-specific settings and measured results, it links down to our worked examples on a &lt;a href="https://techfuelhq.com/articles/rtx-5080-undervolt-guide-2026/">NVIDIA RTX 5080&lt;/a> and an &lt;a href="https://techfuelhq.com/articles/rx-9070-xt-undervolt-2026/">AMD RX 9070 XT&lt;/a>.&lt;/p>
&lt;h2 id="before-you-start-baseline-your-card">Before you start: baseline your card&lt;/h2>
&lt;p>You can&amp;rsquo;t tell an improvement from a placebo without a reference point. Run a demanding game or a benchmark for 10–15 minutes with a monitoring overlay (HWiNFO64, or AMD&amp;rsquo;s built-in metrics), and note four numbers under sustained load:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Core clock&lt;/strong> (the &lt;em>sustained&lt;/em> clock, not the momentary boost spike)&lt;/li>
&lt;li>&lt;strong>Core voltage&lt;/strong> (VID / SVI)&lt;/li>
&lt;li>&lt;strong>Power draw&lt;/strong> (board watts)&lt;/li>
&lt;li>&lt;strong>Temperature&lt;/strong> — watch the hotspot / junction temperature, not just the edge temperature&lt;/li>
&lt;/ul>
&lt;p>Those are the numbers you&amp;rsquo;re trying to beat: same or higher clock, at lower power and temperature.&lt;/p>
&lt;h2 id="nvidia-the-msi-afterburner-curve">NVIDIA: the MSI Afterburner curve&lt;/h2>
&lt;p>NVIDIA cards are undervolted through &lt;strong>MSI Afterburner&lt;/strong>&amp;rsquo;s voltage-frequency curve editor — the same tool works across every NVIDIA card, and on AMD cards too. The method:&lt;/p>
&lt;ol>
&lt;li>Download and open &lt;a href="https://www.msi.com/Landing/afterburner/" rel="noopener">MSI Afterburner&lt;/a> and press &lt;strong>Ctrl+F&lt;/strong> to open the curve editor — a graph of clock (MHz) against voltage (mV).&lt;/li>
&lt;li>Note where your card runs at stock under load (from your baseline). Pick a &lt;strong>lower voltage target&lt;/strong> — around &lt;strong>0.9V (900mV)&lt;/strong> is a widely used, safe starting point — and drag that point &lt;em>up&lt;/em> to your stock sustained clock.&lt;/li>
&lt;li>&lt;strong>Flatten the curve&lt;/strong> to the right of your chosen point so the card can&amp;rsquo;t climb back to higher voltages, then click Apply.&lt;/li>
&lt;li>Stress test (below). Once stable, save the profile and enable &amp;ldquo;apply at startup&amp;rdquo; so it loads every boot.&lt;/li>
&lt;/ol>
&lt;p>The idea is simple: you&amp;rsquo;re forcing the card to hit its normal clock at a lower voltage, and capping it there. For the full curve-editor walkthrough with measured before/after numbers on a current card, see the &lt;a href="https://techfuelhq.com/articles/rtx-5080-undervolt-guide-2026/">RTX 5080 undervolt guide&lt;/a>.&lt;/p>
&lt;h2 id="amd-the-adrenalin-voltage-offset">AMD: the Adrenalin voltage offset&lt;/h2>
&lt;p>AMD makes this easier — everything is built into &lt;strong>AMD Software: Adrenalin Edition&lt;/strong>, so there&amp;rsquo;s no third-party tool. Rather than editing a curve point by point, you apply a &lt;strong>negative voltage offset&lt;/strong> across the whole curve:&lt;/p>
&lt;ol>
&lt;li>Press &lt;strong>Alt+R&lt;/strong> to open Adrenalin, go to &lt;strong>Performance → Tuning&lt;/strong>, and set the Tuning Control to &lt;strong>Custom&lt;/strong>.&lt;/li>
&lt;li>Enable &lt;strong>GPU Tuning&lt;/strong> and lower the voltage with a &lt;strong>negative offset&lt;/strong> — start conservative at around &lt;strong>-40mV&lt;/strong>.&lt;/li>
&lt;li>Optionally enable &lt;strong>Power Tuning&lt;/strong> and trim the power limit (around -10% as a mild starting cut keeps performance closest to stock while lowering temperatures; deeper cuts trade performance for efficiency).&lt;/li>
&lt;li>Apply, stress test, and step the offset deeper (toward -80 to -100mV) as stability allows.&lt;/li>
&lt;/ol>
&lt;p>The &lt;a href="https://techfuelhq.com/articles/rx-9070-xt-undervolt-2026/">RX 9070 XT undervolt guide&lt;/a> covers the Adrenalin controls, the community-converged offsets, and the efficiency-versus-performance trade in full. Older AMD cards and ASUS cards can also use GPU Tweak III, but the Adrenalin route works on any modern Radeon.&lt;/p>
&lt;h2 id="test-for-stability-dont-skip-this">Test for stability (don&amp;rsquo;t skip this)&lt;/h2>
&lt;p>An undervolt that looks fine for five minutes and crashes an hour into a game is worse than no undervolt. Test it properly:&lt;/p>
&lt;ul>
&lt;li>Run a &lt;strong>demanding, real game&lt;/strong> or a benchmark like &lt;strong>3DMark&lt;/strong> for at least &lt;strong>15 minutes&lt;/strong> — longer is better.&lt;/li>
&lt;li>Watch for &lt;strong>crashes, driver timeouts (a black screen that recovers), or artifacts&lt;/strong> — these mean the voltage is too low for the clock you set. Raise the voltage (NVIDIA) or reduce the negative offset (AMD) slightly and retest.&lt;/li>
&lt;li>A common trap: an undervolt can pass a heavy all-core stress test but crash at lighter loads, so play normally for a few hours before you trust it.&lt;/li>
&lt;/ul>
&lt;p>When a setting survives real use, you&amp;rsquo;ve found your card&amp;rsquo;s stable point. Save it.&lt;/p>
&lt;h2 id="what-to-expect">What to expect&lt;/h2>
&lt;p>Results vary by chip and by game — no two cards are identical — but the pattern is consistent: &lt;strong>lower temperatures and power draw, quieter fans, and either the same or slightly better performance&lt;/strong>. On efficiency-focused cards the win is mostly thermal and acoustic; on power-limited, higher-end cards, undervolting can recover a few percent of performance on top. The &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">power &amp;amp; cost calculator&lt;/a> turns the watts you save into an annual dollar figure, and the &lt;a href="https://techfuelhq.com/tools/psu-wattage-calculator/">PSU wattage calculator&lt;/a> sizes a supply for the card&amp;rsquo;s real peak.&lt;/p>
&lt;h2 id="card-specific-guides-and-the-cpu-too">Card-specific guides and the CPU too&lt;/h2>
&lt;p>The steps above are the general method; the exact voltages and results depend on your specific card. For measured, step-by-step walkthroughs:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://techfuelhq.com/articles/rtx-5080-undervolt-guide-2026/">RTX 5080 undervolt guide&lt;/a>&lt;/strong> — the NVIDIA / MSI Afterburner curve, tuned for efficiency and 24/7 AI-inference use.&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://techfuelhq.com/articles/rx-9070-xt-undervolt-2026/">RX 9070 XT undervolt guide&lt;/a>&lt;/strong> — the AMD / Adrenalin offset, including why this power-limited card can gain FPS.&lt;/li>
&lt;/ul>
&lt;p>And to see where &lt;em>other people&amp;rsquo;s&lt;/em> cards landed — the RTX 4090, 5090, RX 7900 XTX and more — the &lt;strong>&lt;a href="https://techfuelhq.com/articles/gpu-undervolt-settings-database/">GPU undervolt settings database&lt;/a>&lt;/strong> is an open, crowdsourced table of real settings and their measured results. Look up your card, or add yours by pull request.&lt;/p>
&lt;p>And undervolting isn&amp;rsquo;t only for the GPU. Modern AMD CPUs undervolt through &lt;strong>Curve Optimizer&lt;/strong>, which follows the same logic — lower voltage, freed headroom, cooler &lt;em>or&lt;/em> faster. If you run a Ryzen X3D chip, the &lt;a href="https://techfuelhq.com/articles/9800x3d-undervolt-guide-2026/">9800X3D undervolt guide&lt;/a> applies the same idea to the processor.&lt;/p>
&lt;p>Pick your card, follow the method, and test it honestly. Ten minutes buys a cooler, quieter, and often slightly faster GPU, for free.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>The general method (MSI Afterburner voltage-frequency curve for NVIDIA; ~0.9V as a common safe starting target; AMD Adrenalin for Radeon cards) reflects the long-established, widely-documented consensus across community guides and vendor documentation, and is applied with measured, card-specific numbers in our linked RTX 5080 and RX 9070 XT guides.&lt;/li>
&lt;li>How-To Geek — &lt;a href="https://www.howtogeek.com/tips-for-undervolting-your-gaming-gpu/" rel="noopener">8 Tips for Undervolting Your Gaming GPU&lt;/a> (AMD Adrenalin method; per-game profiles) — verified live 2026-07-24&lt;/li>
&lt;li>MSI Afterburner is the free NVIDIA/AMD tuning utility used for the curve method; download it from MSI&amp;rsquo;s official &lt;a href="https://www.msi.com/Landing/afterburner/" rel="noopener">Afterburner page&lt;/a>.&lt;/li>
&lt;li>Card-specific measurements and community-consensus settings are cited in the linked &lt;a href="https://techfuelhq.com/articles/rtx-5080-undervolt-guide-2026/">RTX 5080&lt;/a> and &lt;a href="https://techfuelhq.com/articles/rx-9070-xt-undervolt-2026/">RX 9070 XT&lt;/a> undervolt guides.&lt;/li>
&lt;/ul></description></item><item><title>PC Part Prices 2026: Verified Reference Dataset</title><link>https://techfuelhq.com/data/pc-part-prices-2026/</link><pubDate>Fri, 24 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/data/pc-part-prices-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-07-24 · Updated 2026-07-25 · ~6 min read · St. Louis County, MO&lt;/p>
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p>&lt;strong>What this is — verified 2026 PC part prices, honestly dated&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>30 parts, 7 categories&lt;/strong> — CPU, GPU, motherboard, RAM, storage, PSU, case — with real 2026 street prices.&lt;/li>
&lt;li>&lt;strong>Most re-verified 2026-07-24&lt;/strong> (23 of 30 parts); the other 7 keep their earlier 2026-06-09 date. Each part carries its own &lt;code>last_verified&lt;/code> date — check it before you rely on a number.&lt;/li>
&lt;li>&lt;strong>This is a point-in-time reference, not a live tracker.&lt;/strong> We date the prices instead of pretending they are real-time.&lt;/li>
&lt;li>&lt;strong>Open data (CC BY 4.0).&lt;/strong> Fork it, remix it, or build your own tracker on top of it — attribution required.&lt;/li>
&lt;/ul>
&lt;p>Prices move — GPUs, RAM, and SSDs most of all. Confirm the live price at the retailer before you buy.&lt;/p>
&lt;/div>
&lt;img src="https://techfuelhq.com/images/data/pc-part-prices-2026.svg" width="1200" height="675" loading="lazy" decoding="async" alt="Verified 2026 PC part prices by category, most re-verified 2026-07-24: CPUs $176 to $445, GPUs $445 to $1,844, motherboards $176 to $549, DDR5 RAM $149 to $1,000, NVMe SSDs $350 to $600, power supplies $115 to $239, and cases $79 to $160, across 30 parts, published as an open CC BY 4.0 dataset that is a point-in-time reference rather than a live tracker." style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;h2 id="the-short-version">The short version&lt;/h2>
&lt;p>This page is a browsable window into the &lt;a href="https://techfuelhq.com/data/">TechFuelHQ PC Builder parts dataset&lt;/a> — 30 off-the-shelf components with verified 2026 street prices. The one thing most price pages get wrong is &lt;em>freshness honesty&lt;/em>: they show a number without telling you when it was true. Every price here is stamped with the date it was last checked, and most of those dates are now &lt;strong>2026-07-24&lt;/strong> — the prices were re-verified against live US retailer listings that day — while a few parts whose exact new SKU couldn&amp;rsquo;t be re-confirmed keep an earlier &lt;strong>2026-06-09&lt;/strong> date.&lt;/p>
&lt;p>That means two things, stated plainly. First, on their verification date these were real, sourced street prices — not MSRP fiction. Second, prices move, and a figure verified weeks ago is a planning reference, not a checkout guarantee. Confirm the live price at the retailer before you buy. Honest data freshness is the whole point of this page.&lt;/p>
&lt;h2 id="when-these-prices-were-last-verified">When these prices were last verified&lt;/h2>
&lt;p>&lt;strong>23 of the 30 parts were re-verified on 2026-07-24&lt;/strong>, against live US retailer listings (primarily Amazon). The other &lt;strong>7 keep their earlier 2026-06-09 date&lt;/strong> — we only move a date when we actually re-confirm the price, never as a cosmetic bump. The parts still at 2026-06-09, because their exact new standalone SKU couldn&amp;rsquo;t be confirmed at re-verification, are the Intel Core i5-14600K and Core Ultra 7 265K, the RTX 5080 Founders Edition (not sold at Amazon retail), the Corsair Vengeance DDR5-7200 kit, the Corsair HX1000i power supply, and the Fractal Pop Air Mini and Meshify 2 Compact cases. There is no live scraping — verification is a deliberate manual pass, which is why we show each date rather than hide it.&lt;/p>
&lt;p>How to read the staleness:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Within ~30 days of the verified date&lt;/strong> — treat the figures as current-enough for build planning.&lt;/li>
&lt;li>&lt;strong>30–90 days out&lt;/strong> — still a useful band, but re-check anything volatile (GPUs, DDR5 kits, NVMe SSDs) at the retailer, because 2026&amp;rsquo;s memory-price swings have been sharp.&lt;/li>
&lt;li>&lt;strong>Beyond ~90 days&lt;/strong> — use the ranges for rough planning only, and expect the next verification pass to have moved several numbers.&lt;/li>
&lt;/ul>
&lt;p>The prices are &lt;strong>street prices&lt;/strong>, not manufacturer MSRP — compiled from retailer listings and manufacturer pages, so they reflect the discounts and markups you would actually pay, as of the verification date.&lt;/p>
&lt;h2 id="2026-pc-part-prices-by-category">2026 PC part prices by category&lt;/h2>
&lt;p>Most parts re-verified 2026-07-24 (the dataset carries per-part dates). These are mid-to-upper mainstream picks — a realistic build-planning band, not the cheapest possible part or the halo flagship.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Category&lt;/th>
&lt;th scope="col">Parts&lt;/th>
&lt;th scope="col">Price range&lt;/th>
&lt;th scope="col">Re-verified 2026-07-24&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>CPU&lt;/td>
&lt;td>6&lt;/td>
&lt;td>$176 – $445&lt;/td>
&lt;td>4 of 6&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GPU&lt;/td>
&lt;td>6&lt;/td>
&lt;td>$445 – $1,844&lt;/td>
&lt;td>5 of 6&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Motherboard&lt;/td>
&lt;td>5&lt;/td>
&lt;td>$176 – $549&lt;/td>
&lt;td>5 of 5&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>RAM (DDR5)&lt;/td>
&lt;td>3&lt;/td>
&lt;td>$149 – $1,000&lt;/td>
&lt;td>2 of 3&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Storage (NVMe SSD)&lt;/td>
&lt;td>3&lt;/td>
&lt;td>$350 – $600&lt;/td>
&lt;td>3 of 3&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Power supply&lt;/td>
&lt;td>3&lt;/td>
&lt;td>$115 – $239&lt;/td>
&lt;td>2 of 3&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Case&lt;/td>
&lt;td>4&lt;/td>
&lt;td>$79 – $160&lt;/td>
&lt;td>2 of 4&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Whole dataset&lt;/strong>&lt;/td>
&lt;td>&lt;strong>30&lt;/strong>&lt;/td>
&lt;td>&lt;strong>$79 – $1,844&lt;/strong>&lt;/td>
&lt;td>&lt;strong>23 of 30&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>For the individual parts — exact model, price, socket, TDP, and its own &lt;code>last_verified&lt;/code> date — the &lt;a href="https://techfuelhq.com/tools/pc-builder/">interactive PC Builder&lt;/a> is built on the same dataset and does the compatibility math for you, or you can read the &lt;a href="https://techfuelhq.com/data/pc-builder-parts.json">raw JSON&lt;/a> directly.&lt;/p>
&lt;h2 id="why-a-verified-snapshot-and-not-a-live-tracker">Why a verified snapshot, and not a live tracker&lt;/h2>
&lt;p>A live price tracker sounds better than a dated snapshot until you ask what keeps it honest. A tracker that scrapes prices continuously is only as trustworthy as its last successful scrape — and when a scrape silently fails, it shows a stale number &lt;em>with no warning that it is stale&lt;/em>. A dated snapshot has the opposite failure mode: the number might be old, but you always know exactly how old, because the date is right next to it.&lt;/p>
&lt;p>For a reference dataset that other people cite and build on, that trade is worth making. This is the deliberate, light version: verified dates and honest staleness labels, not a real-time feed we cannot promise to keep accurate. If and when a live tracker is warranted, it will be built as its own thing — not bolted onto a reference dataset where it would quietly erode the one property that makes the data worth trusting.&lt;/p>
&lt;h2 id="where-the-prices-come-from">Where the prices come from&lt;/h2>
&lt;p>Per the dataset&amp;rsquo;s own methodology note, 2026 street prices are compiled from manufacturer product pages, &lt;a href="https://www.techpowerup.com/" rel="noopener">TechPowerUp&lt;/a>, Tom&amp;rsquo;s Hardware, and verified retailer listings (Amazon, Newegg, Micro Center). Performance-tier labels in the dataset are TechFuelHQ editorial assessments based on aggregate review consensus — except where a part appears in a TechFuelHQ open bench dataset, in which case its tier is anchored to first-party measurements. Treat them as rough tiering, not head-to-head benchmark claims.&lt;/p>
&lt;h2 id="use-the-data-cc-by-40">Use the data (CC BY 4.0)&lt;/h2>
&lt;p>The &lt;a href="https://techfuelhq.com/data/pc-builder-parts.json">PC Builder parts dataset&lt;/a> is released under &lt;a href="https://creativecommons.org/licenses/by/4.0/" rel="noopener">Creative Commons Attribution 4.0&lt;/a>. You may share and adapt it, including commercially and including building your own price tracker on top of it, as long as you attribute TechFuelHQ and link back.&lt;/p>
&lt;p>Attribution line (copy-paste):&lt;/p>
&lt;blockquote>
&lt;p>TechFuelHQ PC Builder Parts Dataset (CC BY 4.0). &lt;a href="https://techfuelhq.com/tools/pc-builder/" rel="noopener">https://techfuelhq.com/tools/pc-builder/&lt;/a>&lt;/p>&lt;/blockquote>
&lt;p>The raw JSON carries the per-part &lt;code>last_verified&lt;/code> dates, so a downstream tracker can key off them directly.&lt;/p>
&lt;h2 id="related-reading">Related reading&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://techfuelhq.com/tools/pc-builder/">PC Builder — interactive parts picker&lt;/a> — the same dataset, with interactive compatibility and PSU-wattage checks&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/data/">TechFuelHQ Datasets&lt;/a> — the dataset home, license posture, and provenance&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/articles/ddr5-ram-buying-guide-2025/">DDR5 RAM buying guide&lt;/a> — why RAM prices sit high in 2026&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/pc-builds/2500-dollar-7800x3d-rtx-5080-4k-build-2026/">$2,500 7800X3D + RTX 5080 4K build&lt;/a> — where these parts land in a real build&lt;/li>
&lt;/ul>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://techfuelhq.com/data/pc-builder-parts.json" rel="noopener">https://techfuelhq.com/data/pc-builder-parts.json&lt;/a> — the dataset, with per-part &lt;code>last_verified&lt;/code> dates&lt;/li>
&lt;li>&lt;a href="https://creativecommons.org/licenses/by/4.0/" rel="noopener">https://creativecommons.org/licenses/by/4.0/&lt;/a> — CC BY 4.0 license&lt;/li>
&lt;li>&lt;a href="https://www.techpowerup.com/" rel="noopener">https://www.techpowerup.com/&lt;/a> and &lt;a href="https://www.tomshardware.com/" rel="noopener">https://www.tomshardware.com/&lt;/a> — price-compilation sources named in the dataset methodology&lt;/li>
&lt;li>The dataset&amp;rsquo;s &lt;code>_meta&lt;/code> methodology note is the canonical, full source list (it also names manufacturer product pages and the retailer listings — Amazon, Newegg, Micro Center — the street prices were checked against)&lt;/li>
&lt;/ul></description></item><item><title>The 3-2-1 Backup Rule for Homelabs (2026)</title><link>https://techfuelhq.com/homelab/3-2-1-backup-rule-homelab-2026/</link><pubDate>Fri, 24 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/homelab/3-2-1-backup-rule-homelab-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-07-24 · Updated 2026-07-24 · ~12 min read · St. Louis County, MO&lt;/p>
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p>&lt;strong>TL;DR · 3 copies, 2 devices, 1 off-site — and RAID is none of them&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>The rule.&lt;/strong> Three copies of your data, on two different devices, with one copy off-site. Your live data is copy 1, so you still need &lt;em>two&lt;/em> more.&lt;/li>
&lt;li>&lt;strong>RAID is not a backup.&lt;/strong> It is redundancy for uptime. A deletion, a ransomware run or a bad update hits every disk in the array at once.&lt;/li>
&lt;li>&lt;strong>A snapshot on the same box is not a backup either.&lt;/strong> A ZFS snapshot lives in the same pool it protects — it dies with the pool.&lt;/li>
&lt;li>&lt;strong>The off-site copy is the one people skip&lt;/strong>, and it is the one that survives fire, theft and flood. Cloud object storage (B2, S3) or a box at another building.&lt;/li>
&lt;li>&lt;strong>3-2-1-1-0&lt;/strong> adds one immutable/air-gapped copy (defeats ransomware) and zero errors (verify and test-restore).&lt;/li>
&lt;/ul>
&lt;p>This page is the platform-agnostic strategy. The tool and per-platform how-tos live in the linked guides — pick your three copies here first, then go implement them.&lt;/p>
&lt;/div>
&lt;img src="https://techfuelhq.com/images/homelab/3-2-1-backup-rule-homelab-2026.svg" width="1200" height="760" loading="lazy" decoding="async" alt="The 3-2-1 backup rule mapped to a homelab: copy 1 is live data on your NAS where RAID lives but redundancy is not a copy, copy 2 is a local backup on a separate disk or box, copy 3 is an off-site copy in a cloud bucket or another building; a warning band notes RAID and same-pool snapshots are not backups, and a footer explains the 3-2-1-1-0 extension of one immutable copy and zero verified errors." style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;h2 id="the-short-version">The short version&lt;/h2>
&lt;p>The 3-2-1 rule is one sentence: keep &lt;strong>three copies of your data, on two different media, with one copy off-site&lt;/strong> (&lt;a href="https://www.backblaze.com/blog/whats-the-diff-3-2-1-vs-3-2-1-1-0-vs-4-3-2/" rel="noopener">Backblaze&lt;/a>). It is usually traced to photographer Peter Krogh&amp;rsquo;s &lt;em>The DAM Book&lt;/em>, though vendors hedge the attribution and even disagree on the year, so treat the origin as folklore and the rule as the point.&lt;/p>
&lt;p>Almost every explanation of it online is written by an enterprise backup vendor selling immutable cloud storage. The rule is sound; the framing assumes a data center. This guide translates it for the machine in your basement — and spends most of its length on the two things those pages gloss over, because they are the two things homelabbers actually get wrong: &lt;strong>RAID is not one of the three copies, and neither is a snapshot on the same box.&lt;/strong>&lt;/p>
&lt;p>Get the three copies right conceptually first. The tool you use to move bytes is a later, smaller decision.&lt;/p>
&lt;h2 id="what-the-three-numbers-actually-mean">What the three numbers actually mean&lt;/h2>
&lt;p>&lt;strong>3 — three copies, and your live data is one of them.&lt;/strong> Your three copies are your original production data plus two more (&lt;a href="https://www.backblaze.com/blog/the-3-2-1-backup-strategy/" rel="noopener">Backblaze&lt;/a>). In a homelab, the files on your NAS or server that you use every day are copy 1. So you already hold one of the three — you need two more copies, not three from scratch. Enterprise framing counts differently: it treats the production data as &lt;em>the data&lt;/em> rather than a copy at all — a distinction homelabbers argue over directly (&lt;a href="https://www.reddit.com/r/DataHoarder/comments/1agd73m/" rel="noopener">r/DataHoarder&lt;/a>). For a home lab, three copies including the original is the usual and reasonable target.&lt;/p>
&lt;p>&lt;strong>2 — two different media, which today means two different devices.&lt;/strong> The original rule said two media &lt;em>types&lt;/em> — the classic example was disk plus tape. Modern guidance relaxes that: you store the data on two different storage media &amp;ldquo;such as a local drive and a cloud storage service&amp;rdquo; (&lt;a href="https://www.backblaze.com/blog/the-3-2-1-backup-strategy/" rel="noopener">Backblaze&lt;/a>). So a local disk and a cloud bucket already satisfy the &amp;ldquo;2.&amp;rdquo; The reason the &amp;ldquo;2&amp;rdquo; exists at all is common-mode failure: two identical drives, bought together and run under identical conditions, tend to fail together. Nakivo puts it plainly — keeping all your backups &amp;ldquo;on the same type of storage media makes it more likely that both devices would fail at about the same time due to a defect or simple wear and tear&amp;rdquo; (&lt;a href="https://www.nakivo.com/blog/3-2-1-backup-rule-efficient-data-protection-strategy/" rel="noopener">Nakivo&lt;/a>). The homelab-practical reading of the &amp;ldquo;2&amp;rdquo;: don&amp;rsquo;t put every copy on drives from the same batch.&lt;/p>
&lt;p>&lt;strong>1 — one copy off-site, far enough that one disaster can&amp;rsquo;t take all three.&lt;/strong> Keep one copy &amp;ldquo;off-site in a remote location, ideally more than a few miles away from your other two copies to protect against natural and physical disasters&amp;rdquo; (&lt;a href="https://www.backblaze.com/blog/the-3-2-1-backup-strategy/" rel="noopener">Backblaze&lt;/a>). A NAS and a second backup disk in the same room are still one house fire away from total loss. This is the copy people skip, and it is the copy that matters most.&lt;/p>
&lt;h2 id="raid-is-not-a-backup-neither-is-a-snapshot-on-the-same-box">RAID is not a backup. Neither is a snapshot on the same box.&lt;/h2>
&lt;p>This is the heart of it, and it is where the homelab community is as close to unanimous as it ever gets.&lt;/p>
&lt;p>RAID gives you &lt;strong>redundancy for uptime&lt;/strong> — the array keeps serving while you swap a failed drive. That is genuinely valuable, and it is not a backup. On a fresh r/selfhosted thread asking exactly whether RAIDZ counts as one of the 3-2-1 copies, the original poster was downvoted to zero and the answers were blunt: &amp;ldquo;Raid is NOT a backup! Raid is a redundancy against a drive failure and nothing more&amp;rdquo; (&lt;a href="https://www.reddit.com/r/selfhosted/comments/1v2fhk3/" rel="noopener">r/selfhosted&lt;/a>). The clearest statement of &lt;em>why&lt;/em> came from someone actively replacing a dead drive: &amp;ldquo;raid is for uptime… But if I change a file or delete it on accident then it&amp;rsquo;ll still be gone from the entire system. Raid doesn&amp;rsquo;t help with that&amp;rdquo; (&lt;a href="https://www.reddit.com/r/selfhosted/comments/1v2fhk3/" rel="noopener">r/selfhosted&lt;/a>).&lt;/p>
&lt;p>The list of what RAID does &lt;strong>not&lt;/strong> protect against is exactly the list of things that actually kill homelab data: &amp;ldquo;fat-fingering an rm -rf, ransomware encrypting the array, a bad update corrupting data, or the whole box getting stolen or fried in a fire. All of those replicate across every disk in the array instantly because RAID doesn&amp;rsquo;t know the difference between a good write and a mistake&amp;rdquo; (&lt;a href="https://www.reddit.com/r/selfhosted/comments/1v2fhk3/" rel="noopener">r/selfhosted&lt;/a>). A mirror is the same trap: delete a file and it is deleted on the mirror too.&lt;/p>
&lt;p>&lt;strong>Snapshots are the subtler version of the same mistake.&lt;/strong> A ZFS snapshot is &amp;ldquo;a read-only copy of a file system or volume&amp;rdquo; (&lt;a href="https://openzfs.github.io/openzfs-docs/man/master/7/zfsconcepts.7.html" rel="noopener">OpenZFS&lt;/a>) — but it lives &lt;em>inside the same pool&lt;/em> as the data it captures. It &amp;ldquo;initially consume[s] no additional space within the pool,&amp;rdquo; growing as the active data changes (&lt;a href="https://openzfs.github.io/openzfs-docs/man/master/7/zfsconcepts.7.html" rel="noopener">OpenZFS&lt;/a>). Because it shares the pool&amp;rsquo;s disks, it shares the pool&amp;rsquo;s fate: pool fails, snapshots gone. A snapshot protects against you deleting a file by accident. It does nothing about the disks themselves dying, or the machine being stolen. It is not one of your three copies until it has been sent somewhere else.&lt;/p>
&lt;p>So: run RAID for availability if you want it, take snapshots for fast rollback — both are good. Just count &lt;strong>zero&lt;/strong> of your three copies against either one.&lt;/p>
&lt;h2 id="choose-your-three-copies-before-you-choose-a-tool">Choose your three copies before you choose a tool&lt;/h2>
&lt;p>The mistake is starting from &amp;ldquo;which backup software should I use.&amp;rdquo; Start from &lt;em>where each copy physically lives&lt;/em>, and the tool falls out of that almost automatically.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Copy 1 — live data:&lt;/strong> already exists, on your NAS, server or desktop.&lt;/li>
&lt;li>&lt;strong>Copy 2 — local backup:&lt;/strong> a separate disk or a separate box, on-site. This is the copy you restore from fastest when something breaks, because it is on your own network rather than at the far end of a home internet connection. One r/DataHoarder commenter framed the whole point of the on-site copy cleanly: &amp;ldquo;The primary backup is the one that provides the fastest data recovery&amp;rdquo; (&lt;a href="https://www.reddit.com/r/DataHoarder/comments/1tf2c9t/" rel="noopener">r/DataHoarder&lt;/a>).&lt;/li>
&lt;li>&lt;strong>Copy 3 — off-site:&lt;/strong> cloud object storage, or a machine somewhere else.&lt;/li>
&lt;/ul>
&lt;p>Only once you know where a copy lands do you pick the software, and the destination decides it: a cloud bucket points you at &lt;a href="https://techfuelhq.com/homelab/restic-vs-borg-vs-kopia-2026/">restic or Kopia, an SSH box at Borg&lt;/a> — that comparison picks the file-level tool by where the backup lands, and corrects the four-year-stale myth that restic has no compression. restic writes directly to Amazon S3 and Backblaze B2 (&lt;a href="https://restic.readthedocs.io/en/stable/030_preparing_a_new_repo.html" rel="noopener">restic docs&lt;/a>); Kopia targets S3-compatible storage, B2, GCS and Azure (&lt;a href="https://kopia.io/docs/repositories/" rel="noopener">Kopia docs&lt;/a>); and rclone bridges to &amp;ldquo;over 70 cloud storage products&amp;rdquo; if you just need to push an existing backup set off-site (&lt;a href="https://rclone.org/" rel="noopener">rclone&lt;/a>).&lt;/p>
&lt;h2 id="the-off-site-copy-how-to-actually-build-copy-3">The off-site copy: how to actually build copy 3&lt;/h2>
&lt;p>This is the copy most homelabs never finish, so make it the one you automate first.&lt;/p>
&lt;p>For a file-level off-site copy, &lt;a href="https://techfuelhq.com/tutorials/automated-offsite-backups-restic-2026/">automated off-site backups with restic&lt;/a> builds exactly this leg end to end — a Backblaze B2 repository on a systemd timer, client-side encryption and deduplication, a 7-daily / 4-weekly / 6-monthly retention policy, and monitoring on failure, at roughly &lt;strong>$1.40/month for 200 GB&lt;/strong> (Backblaze B2 is $6.95/TB/month). It assumes copies 1 and 2 already exist and builds copy 3.&lt;/p>
&lt;p>Two things the tutorials can&amp;rsquo;t decide for you, but this strategy layer should flag:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>If your backup client holds credentials that can delete, so can whatever compromises that client.&lt;/strong> If the machine being backed up is breached, unrestricted credentials sitting on it can wipe the repository — the exact scenario off-site backup exists to survive. Turn on object lock or versioning at the bucket, and scope the client&amp;rsquo;s key to write-and-list without delete. Hardening the off-site copy this way is also how most homelabs satisfy the &amp;ldquo;+1 immutable&amp;rdquo; of 3-2-1-1-0 — the same copy 3, made immutable, rather than a separate fourth copy.&lt;/li>
&lt;li>&lt;strong>Egress costs at restore time.&lt;/strong> Cold-storage tiers are cheap to fill and expensive to empty. As one r/DataHoarder thread warned about Glacier specifically: &amp;ldquo;Before you store anything at all in Glacier make sure you understand the cost of getting your files out&amp;rdquo; (&lt;a href="https://www.reddit.com/r/DataHoarder/comments/1fp5txp/" rel="noopener">r/DataHoarder&lt;/a>). The cheapest storage tier is not the cheapest &lt;em>backup&lt;/em> if you ever have to restore from it in a hurry.&lt;/li>
&lt;/ul>
&lt;h2 id="the-per-platform-how-tos">The per-platform how-tos&lt;/h2>
&lt;p>The strategy is platform-agnostic; the implementation is not. Two common homelab stacks have a native path:&lt;/p>
&lt;p>&lt;strong>Proxmox.&lt;/strong> If your data lives in VMs and LXC containers, &lt;a href="https://techfuelhq.com/tutorials/proxmox-backup-server-3-2-1-2026/">Proxmox Backup Server in a 3-2-1 layout&lt;/a> builds copies 2 and 3 for you — a deduplicated local datastore, incremental backups that read and send only the delta, SHA-256 verification, and an off-site leg via a sync job to a second PBS or restic to B2. PBS deduplication means &amp;ldquo;periodic backups produce large amounts of duplicate data… the deduplication layer avoids redundancy and minimizes the storage space used&amp;rdquo; (&lt;a href="https://pbs.proxmox.com/docs/introduction.html" rel="noopener">PBS docs&lt;/a>), so retaining many restore points stays affordable.&lt;/p>
&lt;p>&lt;strong>ZFS.&lt;/strong> If you are on ZFS, &lt;a href="https://techfuelhq.com/tutorials/sanoid-syncoid-zfs-snapshots-2026/">Sanoid and Syncoid&lt;/a> automate the snapshot policy and then replicate it off the box — Syncoid &amp;ldquo;facilitates the asynchronous incremental replication of ZFS filesystems&amp;rdquo; (&lt;a href="https://github.com/jimsalterjrs/sanoid" rel="noopener">sanoid&lt;/a>). That replication step is the important one: it is what turns a same-pool snapshot (not a backup) into a genuine second or third copy on separate hardware.&lt;/p>
&lt;p>Both are implementations of the same three copies. Neither replaces the strategy on this page; they execute two legs of it.&lt;/p>
&lt;h2 id="3-2-1-1-0-the-modern-extension-and-why-ransomware-forced-it">3-2-1-1-0: the modern extension, and why ransomware forced it&lt;/h2>
&lt;p>The classic rule predates ransomware that specifically hunts backups. So vendors extended it. Veeam&amp;rsquo;s version: &amp;ldquo;we extended the rule to 3-2-1-1-0. It adds one immutable copy, and results in zero recovery errors&amp;rdquo; (&lt;a href="https://www.veeam.com/blog/321-backup-rule.html" rel="noopener">Veeam&lt;/a>).&lt;/p>
&lt;p>&lt;strong>The extra 1 — one offline, air-gapped or immutable copy&lt;/strong> (&lt;a href="https://community.veeam.com/cybersecurity-170/concepts-3-2-1-1-0-10369" rel="noopener">Veeam community&lt;/a>). This is the copy malware cannot reach or rewrite. One mechanism is write-once-read-many storage: immutable backups &amp;ldquo;cannot be modified or deleted&amp;rdquo; (&lt;a href="https://www.nakivo.com/blog/3-2-1-backup-rule-efficient-data-protection-strategy/" rel="noopener">Nakivo&lt;/a>), which matters because &amp;ldquo;ransomware increasingly targets backups. If your only protection is connected to your network, it can be compromised&amp;rdquo; (&lt;a href="https://www.veeam.com/blog/321-backup-rule.html" rel="noopener">Veeam&lt;/a>). In a homelab this is typically your off-site copy 3 with object lock on a B2 or S3 bucket, or a copy you physically disconnect — you harden an existing copy rather than add a whole new one. Sync alone is not enough — if a device is compromised and its files are encrypted, &amp;ldquo;if you don&amp;rsquo;t notice in time then it will eventually propagate to ALL your backups being unreadable&amp;rdquo; (&lt;a href="https://www.reddit.com/r/DataHoarder/comments/1fp5txp/" rel="noopener">r/DataHoarder&lt;/a>).&lt;/p>
&lt;p>&lt;strong>The 0 — zero errors, which means you verify and test-restore.&lt;/strong> A job that reported success is not a backup you can restore until you have proven it. For restic, run &lt;code>check&lt;/code> regularly, and add &lt;code>--read-data&lt;/code> so it verifies &amp;ldquo;the actual pack files on disk,&amp;rdquo; catching bit rot rather than only structural consistency (&lt;a href="https://restic.readthedocs.io/en/stable/045_working_with_repos.html" rel="noopener">restic docs&lt;/a>). For Proxmox Backup Server, &amp;ldquo;it is recommended that you reverify all backups at least monthly, even if a previous verification was successful&amp;rdquo; (&lt;a href="https://pbs.proxmox.com/docs/maintenance.html" rel="noopener">PBS docs&lt;/a>). And beyond automated checks, restore a real file on a schedule. The pointed r/DataHoarder version of this: &amp;ldquo;So… have you tested your restore processes?&amp;rdquo; (&lt;a href="https://www.reddit.com/r/DataHoarder/comments/1tf2c9t/" rel="noopener">r/DataHoarder&lt;/a>).&lt;/p>
&lt;h2 id="the-gotchas-that-never-make-it-into-the-diagram">The gotchas that never make it into the diagram&lt;/h2>
&lt;p>Five things from real homelab setups that the clean vendor version omits:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Two copies on drives from the same batch can fail as one.&lt;/strong> During the SanDisk Extreme SSD failures, people &amp;ldquo;were getting bitten by having all three copies of their data on three different Sandisk Extreme SSDs, all of which were from the defective batch&amp;rdquo; (&lt;a href="https://www.reddit.com/r/DataHoarder/comments/1fp5txp/" rel="noopener">r/DataHoarder&lt;/a>). This is the real reason the &amp;ldquo;2&amp;rdquo; exists — mix brands or manufacture dates.&lt;/li>
&lt;li>&lt;strong>The RAID rebuild is when the second drive dies.&lt;/strong> A real anecdote of a second disk failing mid-rebuild, twice: &amp;ldquo;The first time it was rebuilding a raid5 and everything was lost. The second time it was rebuilding a raid6 because I learned&amp;rdquo; (&lt;a href="https://www.reddit.com/r/DataHoarder/comments/1fp5txp/" rel="noopener">r/DataHoarder&lt;/a>). Redundancy is most fragile exactly when you are leaning on it.&lt;/li>
&lt;li>&lt;strong>Paying a cloud provider is not the same as them backing up your data.&lt;/strong> &amp;ldquo;Unless specified in the SLA for whatever you pay for, it&amp;rsquo;s better to assume that there is no backup of your data&amp;rdquo; (&lt;a href="https://www.reddit.com/r/DataHoarder/comments/1fp5txp/" rel="noopener">r/DataHoarder&lt;/a>). Commodity object storage is durable, not versioned-for-you.&lt;/li>
&lt;li>&lt;strong>On-site is usually the primary because it restores fastest, not because it&amp;rsquo;s safer.&lt;/strong> &amp;ldquo;restoring 100TB from a local backup takes me a couple days vs a few weeks to restore from an off-site backup over the internet&amp;rdquo; (&lt;a href="https://www.reddit.com/r/DataHoarder/comments/1tf2c9t/" rel="noopener">r/DataHoarder&lt;/a>). Bandwidth, not location, decides which copy you reach for first.&lt;/li>
&lt;li>&lt;strong>A backup that doesn&amp;rsquo;t run automatically doesn&amp;rsquo;t run.&lt;/strong> Schedule it, monitor it, and alert on failure — the difference between a backup plan and a good intention is a timer and a notification.&lt;/li>
&lt;/ol>
&lt;h2 id="related-reading">Related reading&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/restic-vs-borg-vs-kopia-2026/">restic vs Borg vs Kopia: which backup tool&lt;/a> — pick the file-level tool by where the backup lands&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/automated-offsite-backups-restic-2026/">Automated off-site backups with restic&lt;/a> — build copy 3 to Backblaze B2, scheduled and monitored&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/proxmox-backup-server-3-2-1-2026/">Proxmox Backup Server in a 3-2-1 layout&lt;/a> — copies 2 and 3 for VMs and LXCs, with dedup and verify jobs&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/sanoid-syncoid-zfs-snapshots-2026/">Sanoid and Syncoid for ZFS snapshots&lt;/a> — the snapshot layer, and the replication that turns it into a backup&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/proxmox-truenas-unraid-storage-backend-2026/">Proxmox vs TrueNAS vs Unraid as a storage backend&lt;/a> — picking the box these copies live on&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/best-nas-hard-drives-2026/">Best NAS hard drives&lt;/a> — and why they shouldn&amp;rsquo;t all come from the same batch&lt;/li>
&lt;/ul>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://www.backblaze.com/blog/the-3-2-1-backup-strategy/" rel="noopener">https://www.backblaze.com/blog/the-3-2-1-backup-strategy/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.backblaze.com/blog/whats-the-diff-3-2-1-vs-3-2-1-1-0-vs-4-3-2/" rel="noopener">https://www.backblaze.com/blog/whats-the-diff-3-2-1-vs-3-2-1-1-0-vs-4-3-2/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.veeam.com/blog/321-backup-rule.html" rel="noopener">https://www.veeam.com/blog/321-backup-rule.html&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://community.veeam.com/cybersecurity-170/concepts-3-2-1-1-0-10369" rel="noopener">https://community.veeam.com/cybersecurity-170/concepts-3-2-1-1-0-10369&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.nakivo.com/blog/3-2-1-backup-rule-efficient-data-protection-strategy/" rel="noopener">https://www.nakivo.com/blog/3-2-1-backup-rule-efficient-data-protection-strategy/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://openzfs.github.io/openzfs-docs/man/master/7/zfsconcepts.7.html" rel="noopener">https://openzfs.github.io/openzfs-docs/man/master/7/zfsconcepts.7.html&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://restic.readthedocs.io/en/stable/030_preparing_a_new_repo.html" rel="noopener">https://restic.readthedocs.io/en/stable/030_preparing_a_new_repo.html&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://restic.readthedocs.io/en/stable/045_working_with_repos.html" rel="noopener">https://restic.readthedocs.io/en/stable/045_working_with_repos.html&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://kopia.io/docs/repositories/" rel="noopener">https://kopia.io/docs/repositories/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://rclone.org/" rel="noopener">https://rclone.org/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://pbs.proxmox.com/docs/introduction.html" rel="noopener">https://pbs.proxmox.com/docs/introduction.html&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://pbs.proxmox.com/docs/maintenance.html" rel="noopener">https://pbs.proxmox.com/docs/maintenance.html&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/jimsalterjrs/sanoid" rel="noopener">https://github.com/jimsalterjrs/sanoid&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.reddit.com/r/selfhosted/comments/1v2fhk3/" rel="noopener">https://www.reddit.com/r/selfhosted/comments/1v2fhk3/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.reddit.com/r/DataHoarder/comments/1fp5txp/" rel="noopener">https://www.reddit.com/r/DataHoarder/comments/1fp5txp/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.reddit.com/r/DataHoarder/comments/1tf2c9t/" rel="noopener">https://www.reddit.com/r/DataHoarder/comments/1tf2c9t/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.reddit.com/r/DataHoarder/comments/1agd73m/" rel="noopener">https://www.reddit.com/r/DataHoarder/comments/1agd73m/&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>9800X3D Undervolt Guide: Curve Optimizer Done Right</title><link>https://techfuelhq.com/articles/9800x3d-undervolt-guide-2026/</link><pubDate>Thu, 23 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/9800x3d-undervolt-guide-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-07-23 · ~9 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/articles/9800x3d-undervolt-guide-2026.svg" width="1200" height="630" loading="eager" fetchpriority="high" decoding="async" alt="Ryzen 7 9800X3D undervolt via Curve Optimizer: set a negative offset in BIOS under Precision Boost Overdrive, starting near -10 and stepping toward -30, preferring per-core over all-core. Lower voltage frees headroom, giving either an efficiency outcome (cooler at the same speed) or a performance outcome (about 5,425 MHz all-core, +4.8% geomean). SkatterBencher measured voltage dropping from 1.13V to about 0.998V at 5.1 GHz with a -40 offset." style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;h2 id="the-first-x3d-chip-amd-actually-let-you-tune">The first X3D chip AMD actually let you tune&lt;/h2>
&lt;p>For two generations, X3D tuning was only half available. The 5800X3D and 7800X3D stacked 3D V-Cache &lt;em>on top&lt;/em> of the compute die, which trapped heat, so AMD locked &lt;strong>manual multiplier and voltage control&lt;/strong> to protect the cache. Curve Optimizer itself was not off-limits — plenty of 7800X3D owners ran PBO with negative offsets — but you could not set a fixed clock above AMD&amp;rsquo;s boost ceiling.&lt;/p>
&lt;p>The &lt;strong>Ryzen 7 9800X3D removed that last limit.&lt;/strong> AMD reversed the stack this generation, placing the cache &lt;em>beneath&lt;/em> the cores for better heat transfer, and the chip ships with full official overclocking support — as &lt;a href="https://skatterbencher.com/2024/11/06/skatterbencher-82-ryzen-7-9800x3d-overclocked-to-5750-mhz/" rel="noopener">SkatterBencher&lt;/a> puts it, &amp;ldquo;for the first time, the X3D also gets official overclocking support.&amp;rdquo; So here you get Curve Optimizer &lt;em>and&lt;/em> real multiplier and PBO headroom. (If you&amp;rsquo;re still deciding whether to make the jump, we covered that in &lt;a href="https://techfuelhq.com/articles/7800x3d-vs-9800x3d-upgrade-2026/">7800X3D vs 9800X3D&lt;/a>.)&lt;/p>
&lt;h2 id="decide-which-outcome-you-want-first">Decide which outcome you want first&lt;/h2>
&lt;p>This is where most guides go wrong. Undervolting a 9800X3D does &lt;strong>not&lt;/strong> automatically make it cooler — what the freed headroom becomes depends entirely on your power limits:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>The efficiency path.&lt;/strong> Apply a negative offset and leave the stock limits alone (120W TDP, PPT 162W). The chip needs less voltage for the same clocks, so it draws less power and runs cooler at effectively the same performance. This is what most people actually want.&lt;/li>
&lt;li>&lt;strong>The performance path.&lt;/strong> Apply a negative offset &lt;em>and&lt;/em> let Precision Boost Overdrive spend the headroom. The chip converts the savings into higher sustained clocks. &lt;a href="https://skatterbencher.com/2024/11/06/skatterbencher-82-ryzen-7-9800x3d-overclocked-to-5750-mhz/" rel="noopener">SkatterBencher&lt;/a> measured a &lt;strong>-40 all-core offset&lt;/strong> taking voltage from about &lt;strong>1.13V down to ~0.998V at 5.1 GHz&lt;/strong>, landing roughly &lt;strong>5,425 MHz all-core&lt;/strong> and a &lt;strong>geomean gain near 4.8%&lt;/strong> over stock. Temperatures did &lt;em>not&lt;/em> fall — they logged &lt;strong>84.6°C average in OCCT&lt;/strong>, because PBO deliberately spends thermal headroom on frequency.&lt;/li>
&lt;/ul>
&lt;p>Pick one before you start. &amp;ldquo;Undervolted and still hitting 85°C&amp;rdquo; is not a failure; it means you chose the performance path.&lt;/p>
&lt;h2 id="know-your-stock-numbers">Know your stock numbers&lt;/h2>
&lt;p>Worth having in front of you. The architecture and clock figures are AMD&amp;rsquo;s published specs; the Precision Boost 2 limits below are SkatterBencher&amp;rsquo;s measurements of the stock configuration:&lt;/p>
&lt;div style="overflow-x:auto;margin:1.5rem 0;">
&lt;table style="border-collapse:collapse;width:100%;min-width:520px;font-size:0.93rem;">
&lt;thead>&lt;tr style="background:rgba(200,255,0,0.06);text-align:left;">
&lt;th style="padding:0.6rem 0.75rem;border-bottom:1px solid #2a2a44;">Stock parameter&lt;/th>
&lt;th style="padding:0.6rem 0.75rem;border-bottom:1px solid #2a2a44;">Value&lt;/th>
&lt;/tr>&lt;/thead>
&lt;tbody>
&lt;tr>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">Cores / architecture&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">8-core Zen 5, 3D V-Cache&lt;/td>&lt;/tr>
&lt;tr>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">Base / boost clock&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">4.7 GHz / up to 5.2 GHz&lt;/td>&lt;/tr>
&lt;tr>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">TDP&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">120W&lt;/td>&lt;/tr>
&lt;tr>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">PPT / TDC / EDC&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">162W / 120A / 180A&lt;/td>&lt;/tr>
&lt;tr>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">Programmed Fmax&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">5,250 MHz&lt;/td>&lt;/tr>
&lt;tr>&lt;td style="padding:0.55rem 0.75rem;">Maximum VID&lt;/td>&lt;td style="padding:0.55rem 0.75rem;">1.40V&lt;/td>&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;h2 id="step-1-baseline-before-you-touch-anything">Step 1: Baseline before you touch anything&lt;/h2>
&lt;p>Run a repeatable load for 10–15 minutes and record it. HWiNFO64 alongside your workload is what most tuners use. Note:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Effective clock&lt;/strong> under sustained all-core load (not the idle boost spike)&lt;/li>
&lt;li>&lt;strong>Core voltage (VID / SVI)&lt;/strong> at that load&lt;/li>
&lt;li>&lt;strong>Package power&lt;/strong> and &lt;strong>peak temperature&lt;/strong>&lt;/li>
&lt;li>A &lt;strong>score you can repeat&lt;/strong> — Cinebench multi-core, or your actual game with a benchmark scene&lt;/li>
&lt;/ul>
&lt;p>Without a baseline you can&amp;rsquo;t tell an improvement from a placebo. For where the chip sits against other CPUs before you tune, the &lt;a href="https://techfuelhq.com/tools/cpu-comparison/">CPU comparison tool&lt;/a> and &lt;a href="https://techfuelhq.com/articles/cpu-hierarchy-2026/">CPU hierarchy&lt;/a> give you the stock reference points.&lt;/p>
&lt;h2 id="step-2-find-curve-optimizer-in-your-bios">Step 2: Find Curve Optimizer in your BIOS&lt;/h2>
&lt;p>Curve Optimizer lives under &lt;strong>Precision Boost Overdrive&lt;/strong>, but every vendor buries it slightly differently, and menu names shift between BIOS versions. The usual paths:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>ASUS:&lt;/strong> Ai Tweaker → Precision Boost Overdrive → Curve Optimizer&lt;/li>
&lt;li>&lt;strong>MSI:&lt;/strong> OC → Advanced CPU Configuration → AMD Overclocking → Precision Boost Overdrive → Curve Optimizer&lt;/li>
&lt;li>&lt;strong>Gigabyte:&lt;/strong> Tweaker → Advanced CPU Settings → AMD Overclocking → PBO → Curve Optimizer&lt;/li>
&lt;li>&lt;strong>ASRock:&lt;/strong> OC Tweaker → AMD Overclocking → Precision Boost Overdrive → Curve Optimizer&lt;/li>
&lt;/ul>
&lt;p>On most boards you must first set &lt;strong>Precision Boost Overdrive to Advanced&lt;/strong> (or Enabled) before the Curve Optimizer submenu appears. If you&amp;rsquo;d rather test from Windows first, &lt;strong>AMD Ryzen Master&lt;/strong> exposes the same control — find your value there, then commit it in BIOS so it applies at boot.&lt;/p>
&lt;h2 id="step-3-set-a-conservative-negative-offset">Step 3: Set a conservative negative offset&lt;/h2>
&lt;p>The setting has two parts: a &lt;strong>sign&lt;/strong> (Positive or Negative — you want Negative) and a &lt;strong>magnitude&lt;/strong> (a unit-less number, larger = more aggressive undervolt).&lt;/p>
&lt;ol>
&lt;li>Set sign to &lt;strong>Negative&lt;/strong>, magnitude to &lt;strong>10&lt;/strong>. Save and reboot.&lt;/li>
&lt;li>Test (Step 5). If stable, step the magnitude down by &lt;strong>5&lt;/strong> at a time.&lt;/li>
&lt;li>Stop one or two steps &lt;em>above&lt;/em> your first instability, not at it.&lt;/li>
&lt;/ol>
&lt;p>Most owners settle somewhere between &lt;strong>-15 and -30&lt;/strong>. SkatterBencher ran &lt;strong>-40 all-core&lt;/strong> on their sample — good silicon, and part of a full overclocking configuration rather than a daily-driver efficiency profile. Published values are starting points to test, never settings to copy: the entire reason Curve Optimizer exists is that no two chips are identical.&lt;/p>
&lt;p>&lt;strong>All-core vs per-core.&lt;/strong> All-core applies one number everywhere and is limited by your weakest core. Per-core lets you push strong cores harder while keeping weak ones stable, which is why experienced tuners increasingly favour it — at the cost of considerably more testing time. Start all-core to get the easy win; move to per-core if you want the last few percent.&lt;/p>
&lt;h2 id="step-4-only-if-you-want-the-performance-path">Step 4: Only if you want the performance path&lt;/h2>
&lt;p>If you chose performance rather than efficiency, this is where you spend the headroom. SkatterBencher&amp;rsquo;s configuration used:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>PBO Scalar: 10X&lt;/strong> — raises the ceiling on how much voltage the chip may request (SkatterBencher&amp;rsquo;s run moved maximum all-core voltage from roughly 1.35V to about 1.370V). Be clear on what this setting actually does: it relaxes AMD&amp;rsquo;s silicon reliability target, taking &lt;strong>FIT from 1,991.1 to 19,911&lt;/strong> in the same measurements — a tenfold increase in the accepted failure-in-time budget. That is a longevity trade, not a free lever.&lt;/li>
&lt;li>&lt;strong>Max CPU Boost Clock Override: +200 MHz&lt;/strong>&lt;/li>
&lt;li>&lt;strong>PBO limits: Motherboard profile&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>This step is overclocking, not undervolting.&lt;/strong> AMD classifies Precision Boost Overdrive as an overclocking feature, and overclocking sits outside AMD&amp;rsquo;s standard processor warranty — check AMD&amp;rsquo;s current warranty terms before you enable it. A negative Curve Optimizer offset on stock limits is a different proposition; this is the part that carries real cost.&lt;/p>
&lt;p>Understand the trade before you apply it: this configuration is what produced ~5,425 MHz all-core and ~4.8% more performance — &lt;em>and&lt;/em> 84.6°C in OCCT. You are converting your undervolt into clock speed, not into cooling. Skip this section entirely if lower temperatures were the goal.&lt;/p>
&lt;h2 id="step-5-test-for-stability-the-right-way">Step 5: Test for stability the right way&lt;/h2>
&lt;p>Curve Optimizer has a genuinely counterintuitive failure mode: &lt;strong>an unstable undervolt usually crashes at idle or light load, not under an all-core stress test.&lt;/strong> When that instability shows up as a blue screen rather than a silent reboot, the stop code is usually &lt;a href="https://techfuelhq.com/articles/clock-watchdog-timeout-2026/">CLOCK_WATCHDOG_TIMEOUT&lt;/a> — a core that stopped responding, which is exactly what a too-deep offset produces. The reason is where each load sits on the voltage-frequency curve. A sustained all-core load actually runs at a &lt;em>lower&lt;/em> voltage — roughly 1.13V at 5.1 GHz on this chip — while light and single-threaded work boosts to the highest clocks at much higher VID, up toward the 1.40V ceiling in the table above. Those light-load, high-frequency points, and the rapid boost transitions around them, are where a too-deep offset leaves a core short. So:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Do&lt;/strong> run a heavy load (OCCT, Cinebench, Prime95) — it catches thermal and power problems&lt;/li>
&lt;li>&lt;strong>But also&lt;/strong> leave the machine idling on the desktop, browsing, and playing normally for a few hours — that&amp;rsquo;s where an over-aggressive offset shows itself&lt;/li>
&lt;li>Watch for &lt;strong>random reboots, WHEA errors in Event Viewer, or crashes on wake&lt;/strong> — all classic signs the offset is too deep&lt;/li>
&lt;li>Fix by reducing magnitude by 5 and retesting&lt;/li>
&lt;/ul>
&lt;p>A single-core load test (Cinebench single-core, or CoreCycler if you want to be thorough per-core) is more revealing here than an all-core one.&lt;/p>
&lt;h2 id="what-to-expect">What to expect&lt;/h2>
&lt;p>Realistically, on the efficiency path most owners report a meaningful drop in load temperatures at effectively unchanged performance — community reports on r/overclocking describe all-core temperatures falling roughly &lt;strong>10°C&lt;/strong> with the same or slightly better performance. On the performance path, SkatterBencher&amp;rsquo;s verified figure is the reference: &lt;strong>~4.8% geomean&lt;/strong> for a -40 offset with PBO pushed.&lt;/p>
&lt;p>Neither result is guaranteed on your chip. Silicon lottery is real, your cooler and case airflow set the ceiling, and a board with a weak VRM will limit what&amp;rsquo;s achievable regardless of offset. For thermal context on what X3D parts should actually be running at, see &lt;a href="https://techfuelhq.com/articles/safe-cpu-temp-2026/">safe CPU temperatures in 2026&lt;/a>.&lt;/p>
&lt;h2 id="worth-doing">Worth doing?&lt;/h2>
&lt;p>For a chip this thermally dense, yes — it&amp;rsquo;s ten minutes in BIOS for either a cooler, quieter machine or a few percent more performance, with a clean rollback (clear CMOS). Note the split above, though: the undervolt itself is the free part — the Step 4 PBO settings are overclocking, and carry a warranty and longevity trade. It&amp;rsquo;s the same logic that makes GPU tuning worthwhile on power-limited cards — see &lt;a href="https://techfuelhq.com/articles/how-to-undervolt-gpu-2026/">how to undervolt your GPU&lt;/a> for the graphics-card side, or the &lt;a href="https://techfuelhq.com/articles/rx-9070-xt-undervolt-2026/">RX 9070 XT undervolt guide&lt;/a> for a worked example. Just decide which of the two outcomes you&amp;rsquo;re chasing before you start, and test at idle as seriously as you test under load.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>SkatterBencher — &lt;a href="https://skatterbencher.com/2024/11/06/skatterbencher-82-ryzen-7-9800x3d-overclocked-to-5750-mhz/" rel="noopener">SkatterBencher #82: Ryzen 7 9800X3D Overclocked to 5750 MHz&lt;/a> (stock PB2 parameters, Curve Optimizer -40 voltage/frequency results, PBO Scalar and boost-override settings, OCCT temperature and the +4.84% geomean figure) — verified live 2026-07-23&lt;/li>
&lt;li>Ryzen 7 9800X3D specifications (8-core Zen 5, 4.7 GHz base / 5.2 GHz boost, 120W TDP, 96MB L3, AM5, second-generation 3D V-Cache with the cache relocated beneath the cores — the change that makes it the first overclockable X3D part) reflect AMD&amp;rsquo;s published figures, cross-checked across multiple independent launch reviews and corroborated by the stock measurements in the cited SkatterBencher article.&lt;/li>
&lt;li>Community-reported undervolt outcomes (typical -15 to -30 offsets, ~10°C load-temperature reductions, per-core preferred over all-core, and the well-documented pattern that Curve Optimizer instability surfaces at idle or light load rather than under an all-core stress test) are drawn from the r/overclocking and r/pcmasterrace AM5 tuning threads and are presented as community consensus, not first-party measurements.&lt;/li>
&lt;/ul></description></item><item><title>Authelia vs Authentik: Which Self-Hosted SSO (2026)</title><link>https://techfuelhq.com/homelab/authelia-vs-authentik-2026/</link><pubDate>Thu, 23 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/homelab/authelia-vs-authentik-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-07-23 · Updated 2026-07-23 · ~11 min read · St. Louis County, MO&lt;/p>
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p>&lt;strong>TL;DR · The whole SERP is arguing about a stale fact&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>"Authelia is only forward-auth" is wrong.&lt;/strong> Authelia has shipped an OpenID Connect provider since v4.29.0 (May 2021) and is OpenID Certified to five profiles. Apps that speak OIDC can use it directly.&lt;/li>
&lt;li>&lt;strong>But it is still an open beta.&lt;/strong> Authelia's own roadmap says so, with General Availability not yet started and no single-logout. Certified &lt;em>and&lt;/em> beta are both true — every other guide picks one and drops the other.&lt;/li>
&lt;li>&lt;strong>Authentik no longer needs Redis&lt;/strong> — removed entirely in 2025.10. The current compose file is three services: PostgreSQL, server, worker. Every guide still listing Redis is out of date.&lt;/li>
&lt;li>&lt;strong>Ignore the quoted RAM figures.&lt;/strong> The 30MB-to-1GB spread across other guides comes with no config, no version and no method on any of them. Authelia on a SQLite file is one container, which plausibly explains the low end — but only Authentik publishes a documented minimum (2 CPU / 2GB, for its Compose install). Authelia publishes none.&lt;/li>
&lt;li>&lt;strong>Authentik's free tier is complete for a homelab.&lt;/strong> OIDC, SAML, LDAP, SCIM, RADIUS are all open source; Enterprise gates provisioning and compliance, not the protocols.&lt;/li>
&lt;/ul>
&lt;p>Versions verified against the GitHub release APIs on 2026-07-23: Authelia v4.39.20, Authentik 2026.5.6. The OIDC beta status is on Authelia's live roadmap; re-check it before you build, because that is the one fact most likely to change.&lt;/p>
&lt;/div>
&lt;img src="https://techfuelhq.com/images/homelab/authelia-vs-authentik-2026.svg" width="1200" height="760" loading="lazy" decoding="async" alt="Comparison diagram of Authelia versus Authentik as self-hosted single sign-on. Authelia on the left: one declarative YAML config, runs as a single container against a SQLite file with no separate database, an OpenID-Certified OIDC provider that is still an open beta with no single sign-out, tiny idle memory. Authentik on the right: a web GUI, a three-service stack of PostgreSQL plus server plus worker with no Redis since release 2025.10, a documented minimum of 2 CPU cores and 2GB of RAM, the widest protocol coverage including served LDAP and RADIUS, with directory provisioning and compliance features gated behind a paid Enterprise tier." style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;h2 id="the-short-version">The short version&lt;/h2>
&lt;p>Every article ranking for this comparison repeats the same personality sketch: Authelia is the light, simple one; Authentik is the heavy, powerful one. That sketch is not wrong, but it is built on top of a fact that stopped being true five years ago, and the whole search result has been copying it forward ever since.&lt;/p>
&lt;p>The stale fact is this: &lt;strong>Authelia is described as a forward-auth gateway that cannot be a real identity provider.&lt;/strong> One of the pages currently ranking states flatly that Authelia cannot issue OAuth2 or OIDC tokens at all. It can, it has since 2021, and it is certified. So the useful version of this comparison starts by getting that straight, because it changes who each tool is actually for.&lt;/p>
&lt;h2 id="the-correction-authelia-is-an-oidc-provider--and-still-a-beta">The correction: Authelia is an OIDC provider — and still a beta&lt;/h2>
&lt;p>Authelia&amp;rsquo;s documentation says it plainly: &amp;ldquo;Authelia can act as an [OpenID Connect 1.0] Provider as part of an open beta&amp;rdquo; (&lt;a href="https://www.authelia.com/integration/openid-connect/introduction/" rel="noopener">OIDC introduction&lt;/a>). This is not a forward-auth trick with headers — it is the real thing. Applications that implement the OIDC relying-party role &amp;ldquo;can use Authelia as an [OpenID Connect 1.0] Provider similar to how you may use social media or development platforms for login&amp;rdquo; (&lt;a href="https://raw.githubusercontent.com/authelia/authelia/master/docs/content/configuration/identity-providers/openid-connect/provider.md" rel="noopener">provider config&lt;/a>).&lt;/p>
&lt;p>It is also independently verified. Authelia &amp;ldquo;is [OpenID Certified™] to the Basic OP / Implicit OP / Hybrid OP / Form Post OP / Config OP profiles&amp;rdquo; (&lt;a href="https://www.authelia.com/integration/openid-connect/introduction/" rel="noopener">OIDC introduction&lt;/a>). That certification is why the pages calling Authelia &amp;ldquo;not a real IdP&amp;rdquo; are simply wrong.&lt;/p>
&lt;p>Here is the part &lt;strong>no page on the first page of Google states&lt;/strong>, and it is the whole story: certified and beta are true at the same time. Authelia&amp;rsquo;s roadmap is explicit — &amp;ldquo;we have decided to implement [OAuth 2.0] and [OpenID Connect 1.0] as a beta feature. While it&amp;rsquo;s relatively stable there may inevitably be the occasional breaking change,&amp;rdquo; and the endpoints &amp;ldquo;are not enabled by default&amp;rdquo; (&lt;a href="https://www.authelia.com/roadmap/active/openid-connect-1.0-provider/" rel="noopener">OIDC roadmap&lt;/a>). The provider first shipped in v4.29.0, which the GitHub release API dates to 2021-05-05 (&lt;a href="https://api.github.com/repos/authelia/authelia/releases/tags/v4.29.0" rel="noopener">release&lt;/a>). The roadmap tracks it through numbered beta stages, with General Availability defined as a future stage that &amp;ldquo;will signify official stability guarantees&amp;rdquo; and has no version attached yet.&lt;/p>
&lt;p>So one set of articles tells you Authelia can&amp;rsquo;t do OIDC (false), and another tells you it&amp;rsquo;s certified and therefore production-ready (an overstatement). The accurate statement is the paradox: &lt;strong>Authelia&amp;rsquo;s OIDC provider is OpenID Certified and officially still an open beta, off by default, with occasional breaking changes possible.&lt;/strong>&lt;/p>
&lt;p>The two facts stop fighting once you know what certification actually measures. OpenID Certification tests &lt;em>protocol conformance&lt;/em> — that an implementation correctly speaks the spec&amp;rsquo;s profiles. It says nothing about a project&amp;rsquo;s own stability commitments, which is what a beta label governs. Authelia&amp;rsquo;s provider conforms to the specification and carries no stability guarantee, at the same time, without contradiction. That is why quoting only the certification or only the beta tag both mislead.&lt;/p>
&lt;p>If you run a handful of apps, can absorb an occasional breaking change at upgrade time, and do not need centralized sign-out, that trade is usually fine. If you need a stability guarantee in writing, it is not there yet.&lt;/p>
&lt;h2 id="the-clearest-gap-in-authelias-provider-single-logout">The clearest gap in Authelia&amp;rsquo;s provider: single logout&lt;/h2>
&lt;p>The beta status carries three separate costs — the provider is off until you configure it, breaking changes are possible at upgrade time, and one capability is missing outright. The missing capability is the most concrete of the three, and the sharpest reason to pick Authentik instead. Authelia&amp;rsquo;s OIDC support chart marks RP-Initiated Logout, Session Management, Front-Channel Logout and Back-Channel Logout all as unsupported (&lt;a href="https://www.authelia.com/integration/openid-connect/introduction/" rel="noopener">OIDC introduction&lt;/a>), and the roadmap places them in a later beta stage that has not started.&lt;/p>
&lt;p>In practice: logging out of one application does not sign you out of the others. Each app&amp;rsquo;s session lives until it expires on its own. For a home setup with a handful of trusted users who close their own browser sessions, that is usually acceptable; if you share access with people who will not, or you need a revoked account to lose access everywhere immediately, it is not. For anything where a real single sign-out matters, it is a genuine limitation, and Authentik&amp;rsquo;s provider implements front-channel and back-channel logout (&lt;a href="https://docs.goauthentik.io/add-secure-apps/providers/oauth2/frontchannel_and_backchannel_logout/" rel="noopener">Authentik logout docs&lt;/a>) where Authelia&amp;rsquo;s does not. None of the six ranking comparisons we reviewed on 2026-07-21 mentions it — it is the highest-value operational detail on the page.&lt;/p>
&lt;h2 id="authentik-the-fuller-provider-that-quietly-dropped-redis">Authentik: the fuller provider that quietly dropped Redis&lt;/h2>
&lt;p>Authentik is the broader tool, and its documented architecture is simpler than its reputation. A standard deployment is the server container (which bundles the Core plus an embedded outpost), the worker container, and PostgreSQL (&lt;a href="https://docs.goauthentik.io/docs/core/architecture" rel="noopener">architecture&lt;/a>). The current official Docker Compose file defines exactly three services — &lt;code>postgresql&lt;/code>, &lt;code>server&lt;/code> and &lt;code>worker&lt;/code> — plus one volume, and pins the 2026.5.6 image (&lt;a href="https://goauthentik.io/docker-compose.yml" rel="noopener">compose file&lt;/a>).&lt;/p>
&lt;p>Note what is missing: &lt;strong>Redis.&lt;/strong> Authentik removed it entirely. Caching, the embedded outpost session store and WebSockets all moved to PostgreSQL in release 2025.10, after background tasks moved there in 2025.8 (&lt;a href="https://docs.goauthentik.io/docs/releases/2025.10" rel="noopener">2025.10 release notes&lt;/a>). This matters for the comparison because nearly every third-party writeup — and any AI summary trained before late 2025 — still lists Redis as a hard Authentik dependency. It is not one anymore. The documented trade is roughly 50% more PostgreSQL connections, and a 2026.5 change to a Rust-based worker cut about 200MB of memory per worker container on top of that (&lt;a href="https://docs.goauthentik.io/releases/2026.5" rel="noopener">2026.5 release notes&lt;/a>).&lt;/p>
&lt;p>The current stable release is 2026.5.6, published 2026-07-22 (&lt;a href="https://api.github.com/repos/goauthentik/authentik/releases/latest" rel="noopener">release API&lt;/a>). Two upgrade hazards are worth knowing before you commit: Authentik does not support downgrades, and major-version upgrades must be done sequentially — you cannot jump an old install straight to current. Outpost containers, if you run separate ones, must match the server version exactly (&lt;a href="https://docs.goauthentik.io/install-config/upgrade" rel="noopener">upgrade docs&lt;/a>).&lt;/p>
&lt;h2 id="footprint-the-number-everyone-quotes-and-nobody-explains">Footprint: the number everyone quotes and nobody explains&lt;/h2>
&lt;p>The resource figures across the ranking pages are a mess — Authelia is quoted anywhere from sub-30MB to over 1GB of idle RAM, a tenfold spread for the same product, with no page reconciling it. Before trusting any of them, note what none of those pages provide: &lt;strong>not one publishes a config file, a &lt;code>docker stats&lt;/code> output, a version, or even whether the figure is idle or under load.&lt;/strong> They are unsourced numbers.&lt;/p>
&lt;p>What we can state from primary docs is the mechanism that most likely explains the spread. Authelia can use SQLite as a file-based embedded backend that needs no separate database server (&lt;a href="https://www.authelia.com/configuration/storage/sqlite/" rel="noopener">storage docs&lt;/a>). Configured that way it is a single container with a single config file. The same storage doc is candid that SQLite leaves Authelia stateful and steers production and high-availability deployments to PostgreSQL, so the one-container shape is a small-deployment convenience, not a recommended ceiling. Point it at LDAP and other services and the container count and memory climb. So a 30MB figure and a 300MB figure can plausibly both be honest — different deployments rather than different measurements of one thing. We cannot prove that mapping for any specific published figure, because none of them disclose their configuration. Treat the range as a range, and measure your own.&lt;/p>
&lt;p>The documented-requirements comparison is cleaner, and it cuts one way: &lt;strong>Authentik publishes a minimum and Authelia publishes none.&lt;/strong> Authentik&amp;rsquo;s install docs state &amp;ldquo;2 CPU cores&amp;rdquo; and &amp;ldquo;2 GB of RAM&amp;rdquo; for the Docker Compose deployment (&lt;a href="https://docs.goauthentik.io/docs/install-config/install/docker-compose" rel="noopener">install docs&lt;/a>) — scoped to that install path rather than a global floor, and cited by not one ranking page. Authelia&amp;rsquo;s docs carry no hardware requirements page at all, so its low numbers are community reports, not specification. If you are sizing the machine, our &lt;a href="https://techfuelhq.com/homelab/best-mini-pc-home-assistant-2026/">mini PC picks for a home server&lt;/a> apply; on a Pi-class board Authentik&amp;rsquo;s documented 2GB is the constraint to plan around.&lt;/p>
&lt;h2 id="what-actually-costs-money-in-authentik">What actually costs money in Authentik&lt;/h2>
&lt;p>Authentik has a paid Enterprise tier, and the ranking pages that mention it name at most a feature or two, leaving a vague impression that &amp;ldquo;the good stuff is paywalled.&amp;rdquo; The docs are specific, so we can be too.&lt;/p>
&lt;p>The Open Source (free) tier covers OIDC, SAML, LDAP, SCIM, RADIUS, Kerberos and the Proxy/forward-auth outpost, plus browser-based RDP and SSH via RAC — the only listed exclusion is vendor support (&lt;a href="https://goauthentik.io/pricing/" rel="noopener">pricing&lt;/a>). Enterprise, at a documented &amp;ldquo;$5 / user / month&amp;rdquo; billed annually, gates ten features on its own published list — enhanced audit logging, viewing and exporting logs, Google Workspace and Microsoft Entra ID provisioning, embedding external OAuth/SAML sources, Chrome Enterprise Device Trust, the Shared Signals Framework, password-history compliance checks, and mTLS client certificates (&lt;a href="https://docs.goauthentik.io/enterprise/enterprise-features/" rel="noopener">enterprise features&lt;/a>, &lt;a href="https://goauthentik.io/pricing/" rel="noopener">pricing&lt;/a>). Three further gates are announced in release notes rather than on that list, and this is worth knowing because their own provider pages carry no Enterprise badge: WS-Federation (&lt;a href="https://docs.goauthentik.io/releases/2026.2" rel="noopener">2026.2&lt;/a>), SCIM OAuth-token authentication (&lt;a href="https://docs.goauthentik.io/add-secure-apps/providers/scim/" rel="noopener">SCIM provider&lt;/a>) and RADIUS EAP-TLS (&lt;a href="https://docs.goauthentik.io/releases/2025.10" rel="noopener">2025.10&lt;/a>). A couple of details cut the other way: base RADIUS with PAP is free (only EAP-TLS is Enterprise), base SCIM with a static token is free (only OAuth-token mode is Enterprise), and the served LDAP directory carries no Enterprise marker at all.&lt;/p>
&lt;p>The takeaway for a homelab reader: &lt;strong>the free tier is complete.&lt;/strong> Every authentication protocol you would want is open source. What you pay for is outbound provisioning into corporate directories and a set of compliance features — the things a business needs and a home lab does not.&lt;/p>
&lt;h2 id="what-the-community-actually-says">What the community actually says&lt;/h2>
&lt;p>Across the r/selfhosted threads on this matchup (community sentiment, not verified fact, read via a mirror on 2026-07-21), the split is consistent and it is not about capability. The most-cited decider is configuration style: Authelia&amp;rsquo;s single declarative YAML file versus Authentik&amp;rsquo;s clicked-together GUI. People who ran both tend to land on one honest line — Authentik is more capable, Authelia is easier.&lt;/p>
&lt;p>Resource use is the most repeated concrete complaint, and it runs one direction: Authentik&amp;rsquo;s multi-container stack near 1GB idle versus an Authelia instance a small fraction of that. Two migration patterns show up. People leave Authentik for Authelia to cut resource use and shrink the attack surface, often pairing Authelia with &lt;a href="https://github.com/lldap/lldap" rel="noopener">LLDAP&lt;/a> for a single-file backup story. People leave Authelia for Authentik when they tire of hand-editing config and want a GUI, per-user self-service password reset (which Authelia plus LLDAP does not offer end users), and a maintained app-integration catalog.&lt;/p>
&lt;p>One migration gotcha deserves a callout because vendor docs gloss it: OIDC apps key each account to the issuer plus the identity provider&amp;rsquo;s opaque &lt;code>sub&lt;/code> claim, so switching IdPs changes every user&amp;rsquo;s &lt;code>sub&lt;/code> and can strand existing app-side accounts. There is no clean user-export path between the two; the durable answer people land on is to put users in an external LDAP so the IdP only does authentication and the next migration is painless. If you are choosing now, choosing an external directory early is the move that saves you later.&lt;/p>
&lt;h2 id="run-authelia-if--run-authentik-if">Run Authelia if / run Authentik if&lt;/h2>
&lt;p>&lt;strong>Run Authelia&lt;/strong> if a light single-container deployment covers your needs, you prefer one declarative config file you can version-control and back up as a single artifact, and your apps either sit behind a reverse proxy for forward-auth or speak OIDC natively. Accept the trade: the OIDC provider is a certified beta, and there is no single sign-out yet. (If footprint is the &lt;em>only&lt;/em> thing you care about, note that the community increasingly points at even lighter single-purpose tools like Pocket ID or Tinyauth — neither is a full IdP, but neither pretends to be.) If you already run a reverse proxy, our &lt;a href="https://techfuelhq.com/homelab/caddy-vs-nginx-proxy-manager-vs-traefik-2026/">Caddy vs Nginx Proxy Manager vs Traefik comparison&lt;/a> covers the layer Authelia&amp;rsquo;s forward-auth sits behind.&lt;/p>
&lt;p>&lt;strong>Run Authentik&lt;/strong> if you want a web GUI over YAML, the widest protocol coverage — including a &lt;em>served&lt;/em> LDAP directory and RADIUS, not just LDAP as a login backend — self-service password reset for non-technical users, or working single logout. Budget 2GB of RAM for it, and if you are standing it up, our &lt;a href="https://techfuelhq.com/tutorials/authentik-sso-self-hosted-2026/">Authentik SSO setup guide&lt;/a> walks the deployment end to end.&lt;/p>
&lt;p>Whichever you pick, an auth server is the front door to everything else you self-host, so it belongs in your backup rotation from day one — encrypted offsite copies via &lt;a href="https://techfuelhq.com/tutorials/automated-offsite-backups-restic-2026/">restic&lt;/a> are the minimum bar, and a self-hosted password manager like &lt;a href="https://techfuelhq.com/homelab/vaultwarden-vs-bitwarden-2026/">Vaultwarden&lt;/a> pairs naturally with either behind SSO.&lt;/p>
&lt;h2 id="what-competing-guides-skip-our-angle">What competing guides skip (our angle)&lt;/h2>
&lt;p>Four things almost never make it into other comparisons, and they are the four that actually decide it.&lt;/p>
&lt;p>First, &lt;strong>the certified-and-beta paradox.&lt;/strong> The SERP is split between pages saying Authelia can&amp;rsquo;t do OIDC (false) and pages calling it production-ready (incomplete). The accurate statement is both: OpenID Certified and officially an open beta, off by default. Stating only half misroutes readers in both directions.&lt;/p>
&lt;p>Second, &lt;strong>the single-logout gap.&lt;/strong> Authelia&amp;rsquo;s provider does not implement RP-initiated or channel logout yet, so signing out of one app leaves the others signed in. It is the clearest capability reason to choose Authentik, and no ranking page names it.&lt;/p>
&lt;p>Third, &lt;strong>Authentik dropped Redis.&lt;/strong> Removed in 2025.10; the current stack is three services. Every guide still listing Redis is describing a 2025-and-earlier Authentik.&lt;/p>
&lt;p>Fourth, &lt;strong>the resource figures on this SERP are unsourced.&lt;/strong> Not one of the six ranking pages discloses a config, a version, or an idle-versus-load distinction behind its RAM numbers, which is why the same product is quoted across a tenfold range. The documented comparison is the one worth having: Authentik states 2 CPU and 2GB for its Compose install, Authelia publishes no hardware requirements at all, and no ranking page reports either fact.&lt;/p>
&lt;h2 id="related-reading">Related reading&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/authentik-sso-self-hosted-2026/">Authentik SSO: self-hosted setup guide&lt;/a> — the step-by-step deployment for the heavier of the two&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/vaultwarden-vs-bitwarden-2026/">Vaultwarden vs Bitwarden&lt;/a> — the password manager to put behind your new SSO&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/caddy-vs-nginx-proxy-manager-vs-traefik-2026/">Caddy vs Nginx Proxy Manager vs Traefik&lt;/a> — the reverse proxy Authelia&amp;rsquo;s forward-auth sits behind&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/networking/tailscale-vs-cloudflare-tunnel-2026/">Tailscale vs Cloudflare Tunnel&lt;/a> — how people reach these services from outside the LAN&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/automated-offsite-backups-restic-2026/">Automated offsite backups with restic&lt;/a> — because an auth server belongs in your backups&lt;/li>
&lt;/ul>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://www.authelia.com/integration/openid-connect/introduction/" rel="noopener">https://www.authelia.com/integration/openid-connect/introduction/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://raw.githubusercontent.com/authelia/authelia/master/docs/content/configuration/identity-providers/openid-connect/provider.md" rel="noopener">https://raw.githubusercontent.com/authelia/authelia/master/docs/content/configuration/identity-providers/openid-connect/provider.md&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.authelia.com/roadmap/active/openid-connect-1.0-provider/" rel="noopener">https://www.authelia.com/roadmap/active/openid-connect-1.0-provider/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.authelia.com/configuration/storage/sqlite/" rel="noopener">https://www.authelia.com/configuration/storage/sqlite/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://api.github.com/repos/authelia/authelia/releases/latest" rel="noopener">https://api.github.com/repos/authelia/authelia/releases/latest&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://api.github.com/repos/authelia/authelia/releases/tags/v4.29.0" rel="noopener">https://api.github.com/repos/authelia/authelia/releases/tags/v4.29.0&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://docs.goauthentik.io/docs/core/architecture" rel="noopener">https://docs.goauthentik.io/docs/core/architecture&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://docs.goauthentik.io/docs/releases/2025.10" rel="noopener">https://docs.goauthentik.io/docs/releases/2025.10&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://docs.goauthentik.io/docs/install-config/install/docker-compose" rel="noopener">https://docs.goauthentik.io/docs/install-config/install/docker-compose&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://docs.goauthentik.io/enterprise/enterprise-features/" rel="noopener">https://docs.goauthentik.io/enterprise/enterprise-features/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://docs.goauthentik.io/releases/2026.2" rel="noopener">https://docs.goauthentik.io/releases/2026.2&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://docs.goauthentik.io/releases/2026.5" rel="noopener">https://docs.goauthentik.io/releases/2026.5&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://docs.goauthentik.io/add-secure-apps/providers/scim/" rel="noopener">https://docs.goauthentik.io/add-secure-apps/providers/scim/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://docs.goauthentik.io/add-secure-apps/providers/oauth2/frontchannel_and_backchannel_logout/" rel="noopener">https://docs.goauthentik.io/add-secure-apps/providers/oauth2/frontchannel_and_backchannel_logout/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://docs.goauthentik.io/install-config/upgrade" rel="noopener">https://docs.goauthentik.io/install-config/upgrade&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://goauthentik.io/docker-compose.yml" rel="noopener">https://goauthentik.io/docker-compose.yml&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://goauthentik.io/pricing/" rel="noopener">https://goauthentik.io/pricing/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://api.github.com/repos/goauthentik/authentik/releases/latest" rel="noopener">https://api.github.com/repos/goauthentik/authentik/releases/latest&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/lldap/lldap" rel="noopener">https://github.com/lldap/lldap&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Jellyfin vs Emby: What Free Actually Gets You (2026)</title><link>https://techfuelhq.com/homelab/jellyfin-vs-emby-2026/</link><pubDate>Thu, 23 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/homelab/jellyfin-vs-emby-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-07-23 · Updated 2026-07-23 · ~12 min read · St. Louis County, MO&lt;/p>
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p>&lt;strong>TL;DR · Shared ancestry, client-dependent freemium&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>They share a codebase, and have diverged for eight years since.&lt;/strong> Jellyfin forked Emby 3.5.2 in December 2018 after Emby took 4.x closed-source. Emby's public repo stops dead in September 2018 at tag 3.5.3.&lt;/li>
&lt;li>&lt;strong>"Free Emby" depends on which client you open.&lt;/strong> Full playback is free in a web browser and on Roku/Apple TV/LG/Samsung TVs. The &lt;em>native&lt;/em> iOS, Android, Windows, Linux and macOS apps stop after &lt;em>one minute&lt;/em>. Live TV needs Premiere everywhere.&lt;/li>
&lt;li>&lt;strong>Hardware transcoding is a Premiere feature&lt;/strong> (Nvidia Shield and WD NAS excepted). Jellyfin gates nothing — QuickSync, NVENC, AMF, VA-API and more are plain settings.&lt;/li>
&lt;li>&lt;strong>Premiere in 2026:&lt;/strong> $4.99/mo, $54/yr, or $119 lifetime — single household, 30 devices, counted per app rather than per machine.&lt;/li>
&lt;li>&lt;strong>Migration is officially unsupported.&lt;/strong> Jellyfin's docs say so in capitals. Your files and sidecar metadata survive; your watch history and users do not.&lt;/li>
&lt;/ul>
&lt;p>Versions verified against the projects' own release feeds on 2026-07-23: Jellyfin 10.11.11 stable (12.0 is still release-candidate), Emby Server 4.9.5.0. Emby's prices and feature matrix move — re-check the linked pages before you buy.&lt;/p>
&lt;/div>
&lt;img src="https://techfuelhq.com/images/homelab/jellyfin-vs-emby-2026.svg" width="1200" height="760" loading="lazy" decoding="async" alt="Comparison diagram of Jellyfin versus Emby in 2026. A shared root shows Emby 3.5.2 in 2018 splitting into two branches after Emby took version 4 closed-source. The Jellyfin branch: GPL-2.0, version 10.11.11, nothing paywalled, hardware transcoding free on Intel QuickSync, NVIDIA NVENC, AMD AMF and VA-API, and its own maintained jellyfin-ffmpeg fork, stable build 7.1.4. The Emby branch: proprietary since 2018, version 4.9.5.0, Premiere costing 4.99 dollars monthly or 119 dollars lifetime with a 30-device limit, hardware transcoding behind the paywall except on Nvidia Shield and WD NAS, and the native mobile and desktop apps capped at one-minute playback while the web browser client and Roku, Apple TV and smart TVs all play free. A footer notes both still default to ports 8096, 8920 and 7359 so they collide on one host, and that database migration between them is officially unsupported." style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;h2 id="the-short-version">The short version&lt;/h2>
&lt;p>Most comparisons of these two open on personality — Jellyfin is the free community one, Emby is the polished paid one — and stop there. That framing is not wrong, but it skips the two things that actually decide it: &lt;strong>what the free tier of Emby does and does not let you do&lt;/strong>, and the fact that these are not two products that happen to be similar. They are one product that split.&lt;/p>
&lt;p>Get the split straight and the rest follows.&lt;/p>
&lt;h2 id="they-share-a-codebase-forked-in-2018">They share a codebase, forked in 2018&lt;/h2>
&lt;p>Jellyfin&amp;rsquo;s own documentation is direct about the origin: the project &amp;ldquo;was started in early December 2018 primarily as a result of Emby&amp;rsquo;s decision to take their next release (4.x) closed-source&amp;rdquo; (&lt;a href="https://jellyfin.org/docs/general/about" rel="noopener">about&lt;/a>). On that announcement, the group &amp;ldquo;quickly gathered to fork as many repositories as (legally) possible and begin the process of renaming the project Jellyfin.&amp;rdquo;&lt;/p>
&lt;p>The precise lineage matters, and almost nobody states it correctly: &lt;strong>Jellyfin descends from Emby 3.5.2&lt;/strong>, not from 4.x, and was &amp;ldquo;ported to the .NET Core framework to enable full cross-platform support&amp;rdquo; (&lt;a href="https://jellyfin.org/docs/general/about" rel="noopener">about&lt;/a>). Jellyfin also cites reasons beyond the licence change — previously-reported GPL violations, a paywall added for gratis users in an early 3.x release, and the progressive removal of client and server source code.&lt;/p>
&lt;p>Emby confirms the same event from its own side. Its developer blog states that &amp;ldquo;in 2018, Emby made a significant decision: it moved from being an open-source project to a proprietary, closed-source model&amp;rdquo; (&lt;a href="https://emby.media/community/blogs/entry/576-the-history-and-evolution-of-emby/" rel="noopener">Emby history&lt;/a>). The hard corroboration is the repository itself: Emby&amp;rsquo;s public server repo is GPL-2.0 licensed, and its final commit is dated September 2018, tagged &lt;strong>3.5.3&lt;/strong> (&lt;a href="https://github.com/MediaBrowser/Emby" rel="noopener">MediaBrowser/Emby&lt;/a>). No source for 3.6 or any 4.x release was ever published.&lt;/p>
&lt;p>So the two projects diverged from adjacent commits. That shared ancestry explains a great deal of what follows — including a port collision nobody warns you about.&lt;/p>
&lt;h2 id="what-free-emby-actually-means">What &amp;ldquo;free Emby&amp;rdquo; actually means&lt;/h2>
&lt;p>This is the part the search results get wrong, and it is the single most useful thing on this page. Emby is free to install, and every comparison says so. What none of them say is that &lt;strong>the free tier&amp;rsquo;s limits depend entirely on which screen you watch on.&lt;/strong>&lt;/p>
&lt;p>From Emby&amp;rsquo;s own Premiere Feature Matrix (&lt;a href="https://emby.media/support/articles/Premiere-Feature-Matrix.html" rel="noopener">feature matrix&lt;/a>):&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Client&lt;/th>
&lt;th scope="col">Free tier&lt;/th>
&lt;th scope="col">Needs Premiere&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>PC or mobile web browser&lt;/strong>&lt;/td>
&lt;td>&lt;strong>Full playback&lt;/strong>&lt;/td>
&lt;td>Live TV, TV Mode&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Roku, Apple TV, LG &amp;amp; Samsung smart TVs&lt;/td>
&lt;td>&lt;strong>Full playback&lt;/strong>&lt;/td>
&lt;td>Live TV only&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Android TV, Fire TV&lt;/td>
&lt;td>Full playback, capped at 5 TV devices&lt;/td>
&lt;td>Live TV, offline media&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>iOS, Android (native apps)&lt;/td>
&lt;td>&lt;strong>One-minute playback only&lt;/strong>&lt;/td>
&lt;td>Full playback (or a one-off per-app purchase), offline downloads, CarPlay/Android Auto, Apple Watch, camera upload&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Windows, Linux, macOS (native apps)&lt;/td>
&lt;td>&lt;strong>One-minute playback only&lt;/strong>&lt;/td>
&lt;td>Full playback, Live TV, offline media (listed for Windows and macOS; the Linux row lists none)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Read the first row, because it is the one no competing page mentions: &lt;strong>the web browser is a fully unrestricted free client for playback.&lt;/strong> Your whole library, no licence, no time limit. Live TV and TV Mode are the only things it withholds — and Live TV is Premiere-gated on every client, so that is not a browser limitation.&lt;/p>
&lt;p>The cap lands on the &lt;em>native&lt;/em> apps. Open Emby&amp;rsquo;s iOS, Android, Windows, Linux or macOS application unlicensed and playback stops after one minute. Emby sells a per-app purchase that buys full playback on that one app, or Premiere covers everything at once.&lt;/p>
&lt;p>So &amp;ldquo;free Emby&amp;rdquo; is a real, usable product — provided you watch in a browser tab or on a TV. What Premiere buys on a phone or desktop is the native app experience, offline downloads and Live TV on those clients. That is a defensible model, and considerably more nuanced than either &amp;ldquo;Emby is free&amp;rdquo; or &amp;ldquo;Emby is crippled.&amp;rdquo;&lt;/p>
&lt;p>Jellyfin has no equivalent table, because it has no tiers. Its docs put it plainly: &amp;ldquo;There are no strings attached, no premium licenses or features, and no hidden agendas&amp;rdquo; (&lt;a href="https://jellyfin.org/docs/general/about" rel="noopener">about&lt;/a>), and the project has committed that features &amp;ldquo;will &lt;strong>never&lt;/strong> be hidden behind a paywall&amp;rdquo; (&lt;a href="https://jellyfin.org/posts/jellyfin-10-6-0/" rel="noopener">10.6.0 release post&lt;/a>).&lt;/p>
&lt;h2 id="hardware-transcoding-is-the-expensive-difference">Hardware transcoding is the expensive difference&lt;/h2>
&lt;p>Everything above is about convenience. This one is about whether your hardware copes.&lt;/p>
&lt;p>Emby&amp;rsquo;s feature matrix lists &lt;strong>hardware accelerated transcoding as a Premiere feature&lt;/strong>, with a footnoted exception: Nvidia Shield and WD NAS devices do not require Premiere for it. Everyone else transcodes in software until they pay.&lt;/p>
&lt;p>Jellyfin documents hardware acceleration as a plain configuration option for all users, listing Intel QuickSync, NVIDIA NVDEC/NVENC, AMD AMF, Intel/AMD VA-API on Linux, Apple VideoToolbox on macOS, and Rockchip RKMPP (&lt;a href="https://jellyfin.org/docs/general/post-install/transcoding/hardware-acceleration/" rel="noopener">hardware acceleration&lt;/a>). One honest scope note: Jellyfin documents &lt;em>full&lt;/em> acceleration for a specific list — mainstream Intel and NVIDIA GPUs on Windows and Linux, AMD Polaris and newer on Linux, older AMD on Windows, RK3588, and Intel and Apple Silicon on macOS 12+. And it requires its own bundled FFmpeg: &amp;ldquo;using FFmpeg binaries downloaded from somewhere else will result in partial acceleration.&amp;rdquo;&lt;/p>
&lt;p>If you run a low-power box — an N100 mini PC, a Pi-class board, an older NAS — this is the whole comparison. Software transcoding is what makes cheap servers stutter, and one product charges to avoid it. If you are choosing hardware around this, our &lt;a href="https://techfuelhq.com/articles/best-gpu-plex-jellyfin-transcode-2026/">GPU picks for Plex and Jellyfin transcoding&lt;/a> cover what actually accelerates.&lt;/p>
&lt;h2 id="about-that-viral-emby-transcoding-is-3x-slower-thread">About that viral &amp;ldquo;Emby transcoding is 3x slower&amp;rdquo; thread&lt;/h2>
&lt;p>If you have researched this comparison, you have probably seen a &lt;a href="https://emby.media/community/topic/146152-hard-comparison-why-is-embys-transcoding-engine-so-far-behind-jellyfin-and-why-im-switching-back/" rel="noopener">thread on Emby&amp;rsquo;s own community forum&lt;/a> titled roughly &lt;em>why is Emby&amp;rsquo;s transcoding engine so far behind Jellyfin, and why I&amp;rsquo;m switching back&lt;/em>, claiming Jellyfin hits ~80 fps where Emby manages ~30. It surfaces high in search precisely because it sits on Emby&amp;rsquo;s own turf.&lt;/p>
&lt;p>&lt;strong>We read the whole thread, and its own contents defeat the claim.&lt;/strong> One problem is disqualifying on its own; the rest is context:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>It is self-refuting.&lt;/strong> The author&amp;rsquo;s own description establishes that Emby was performing a &lt;em>software&lt;/em> transcode while Jellyfin used the &lt;em>GPU&lt;/em>. That is a software-versus-hardware measurement, not an engine-efficiency comparison.&lt;/li>
&lt;li>&lt;strong>There is a confound that explains it entirely.&lt;/strong> As a forum contributor pointed out and Emby&amp;rsquo;s docs confirm, hardware transcoding requires Premiere outside the Nvidia Shield and WD NAS exception. The author never stated whether the Emby install was licensed — and without a licence it could not have used the GPU at all.&lt;/li>
&lt;li>&lt;strong>Context worth knowing, though it does not by itself refute a measurement:&lt;/strong> the post is not first-hand text. A responder flagged it as machine-generated and the author conceded it — &amp;ldquo;My English is not good, so I let AI help me express what I mean.&amp;rdquo; An Emby administrator rejected the post&amp;rsquo;s accuracy and requested diagnostics; the author never supplied any, and the thread died without resolution.&lt;/li>
&lt;/ol>
&lt;p>There is exactly one narrow corroboration: a later commenter reported that on Rockchip RK3588 hardware, &amp;ldquo;jellyfin hw transcodes 4k to 4k HEVC at 4.8x. Emby won&amp;rsquo;t even let me do this on rk3588.&amp;rdquo; That is one unverified single report, but it is at least consistent with something documented — see the next section.&lt;/p>
&lt;p>We are flagging this because it is widely linked and worthless as a benchmark. Anyone repeating the fps figures is repeating an AI-written post that Emby staff rejected and nobody ever reproduced.&lt;/p>
&lt;h2 id="what-is-actually-documented-about-transcoding">What is actually documented about transcoding&lt;/h2>
&lt;p>Discarding that thread leaves the performance question open — no public benchmark we found settles it. What we can document is not a performance result but a &lt;strong>difference in release cadence&lt;/strong>, which is a narrower claim and worth stating as such.&lt;/p>
&lt;p>Jellyfin does not use system FFmpeg. It ships and requires &lt;code>jellyfin-ffmpeg&lt;/code>, its own maintained fork. Be precise about what that means today: the current &lt;em>stable&lt;/em> build is &lt;strong>v7.1.4-3 (2026-06-06)&lt;/strong>, which is what stable Jellyfin 10.11.x installs. The fork&amp;rsquo;s 8.1.x line — v8.1.2-2 as of 2026-07-21 — is still flagged pre-release and pairs with the Jellyfin 12.0 release candidates (&lt;a href="https://github.com/jellyfin/jellyfin-ffmpeg/releases" rel="noopener">jellyfin-ffmpeg releases&lt;/a>). That fork carries patches that matter for exactly the workloads people complain about: PGS and graphical subtitle overlay moved into hardware filters so subtitle burn-in stays on the GPU, hardware HDR tone-mapping across four vendor stacks, and a documented end-to-end hardware pipeline for Rockchip RK3588 — which is precisely the case the one corroborating commenter hit.&lt;/p>
&lt;p>Emby also maintains its own patched FFmpeg fork rather than shipping stale vanilla binaries. But its announced base version lags: the last Emby release announcing an FFmpeg base upgrade is &lt;strong>4.7.0.60, dated 2022-05-17&lt;/strong> (&amp;ldquo;Update to ffmpeg 5.0&amp;rdquo;), and no Emby release note we could find since then — through the 4.10.0.20 beta of 2026-07-17 — announces a further base bump (&lt;a href="https://github.com/MediaBrowser/Emby.Releases/releases" rel="noopener">Emby releases&lt;/a>). Emby backports fixes into its own fork, so the announced base version understates how current the shipped code actually is. Treat this as a base-version lag, not abandonment.&lt;/p>
&lt;p>The fair summary: &lt;strong>Jellyfin adopts new upstream FFmpeg capability faster.&lt;/strong> That is a documented difference in release cadence, not a measured performance gap, and we are not aware of a controlled benchmark that turns one into the other. On mainstream Intel or NVIDIA hardware, both products lean on the same vendor APIs and you are unlikely to see a difference. The one concrete case in evidence is Rockchip RK3588, where jellyfin-ffmpeg documents an end-to-end hardware pipeline and a user reported Emby would not hardware-transcode at all.&lt;/p>
&lt;h2 id="two-practical-traps-from-the-shared-ancestry">Two practical traps from the shared ancestry&lt;/h2>
&lt;p>&lt;strong>They collide on the same ports.&lt;/strong> Jellyfin documents TCP 8096 for HTTP, TCP 8920 for HTTPS and UDP 7359 for LAN discovery. Emby&amp;rsquo;s connectivity documentation specifies the identical three. Both inherited them from the 3.5.2 fork point (&lt;a href="https://jellyfin.org/docs/general/post-install/networking/" rel="noopener">Jellyfin networking&lt;/a>, &lt;a href="https://emby.media/support/articles/Connectivity.html" rel="noopener">Emby connectivity&lt;/a>). Install both on one host to compare them and the second fails to bind. Across the top-10 Google results for &amp;ldquo;jellyfin vs emby&amp;rdquo; that we checked on 2026-07-23, none mentions a port number at all.&lt;/p>
&lt;p>&lt;strong>Migration is officially unsupported.&lt;/strong> One competing guide tells readers that moving between these servers is straightforward because they read the same file structures. Jellyfin&amp;rsquo;s own migration doc contradicts it in capitals: &amp;ldquo;Direct database migration from Emby (of any version) to Jellyfin is NOT SUPPORTED&amp;rdquo; (&lt;a href="https://jellyfin.org/docs/general/administration/migrate/" rel="noopener">migrate&lt;/a>). It goes further and advises against migrating even Emby 3.5.2-era configuration — the one version the shared lineage would theoretically permit — &amp;ldquo;due to subtle and weird bugs reported after such attempts.&amp;rdquo;&lt;/p>
&lt;p>The half-truth in the competing claim is that your &lt;em>media&lt;/em> and any NFO and image sidecar files do carry over, because they live beside the files. What does not carry over is the database: watch history, user accounts, playback positions and server settings. Plan on a fresh library scan.&lt;/p>
&lt;h2 id="one-more-thing-worth-knowing-before-you-buy">One more thing worth knowing before you buy&lt;/h2>
&lt;p>Emby Premiere requires online licence validation, and not only from the server. Emby documents that &amp;ldquo;each of your devices will need access to the internet and, specifically, mb3admin.com in order to validate the limit&amp;rdquo; (&lt;a href="https://emby.media/support/articles/Premiere-Limits.html" rel="noopener">Premiere limits&lt;/a>), and the server itself must reach the same host or the key reports as invalid.&lt;/p>
&lt;p>The 30-device limit is contractual and counted per unique device ID &lt;em>per application&lt;/em>, so one physical machine can consume several slots (&lt;a href="https://emby.media/premiereterms.html" rel="noopener">Premiere terms&lt;/a>). Premiere is keyed to the server rather than to a user account, and the device limit is counted per key across every server that key is used on.&lt;/p>
&lt;p>If a fully offline or air-gapped setup is a requirement, that is the constraint to weigh. We found no Emby documentation describing offline activation. Jellyfin has nothing to validate.&lt;/p>
&lt;h2 id="run-jellyfin-if--run-emby-if">Run Jellyfin if / run Emby if&lt;/h2>
&lt;p>&lt;strong>Run Jellyfin&lt;/strong> if you want everything free with nothing gated, you want GPU transcoding without a subscription on hardware outside Emby&amp;rsquo;s Shield/WD-NAS exemption, you run newer or ARM-based silicon where FFmpeg cadence matters, or you simply want no licence server in the path. Accept the trade: client polish is uneven and you may end up pairing it with a third-party player on some platforms. Our &lt;a href="https://techfuelhq.com/tutorials/jellyfin-setup-docker-homelab-2026/">Jellyfin Docker setup guide&lt;/a> covers the build.&lt;/p>
&lt;p>&lt;strong>Run Emby free&lt;/strong> if your household watches your own library in a browser or on Roku, Apple TV or a Samsung/LG TV. Playback there is unrestricted and costs nothing — a genuinely viable setup that most comparisons write off.&lt;/p>
&lt;p>&lt;strong>Buy Emby Premiere&lt;/strong> if you additionally want Live TV, offline downloads, the native phone and desktop apps without the one-minute cap, or hardware transcoding on anything other than an Nvidia Shield or WD NAS (which are exempt). At $119 once, that is a real product for a real user, and the polish is not imaginary.&lt;/p>
&lt;p>&lt;strong>And if you have not committed to either&lt;/strong>, note that most of this decision is upstream of both: our &lt;a href="https://techfuelhq.com/articles/jellyfin-vs-plex-2026/">Jellyfin vs Plex comparison&lt;/a> covers the third option most people are actually choosing between, and the box matters more than the software — see &lt;a href="https://techfuelhq.com/homelab/best-nas-for-plex-jellyfin-2026/">the best NAS for Plex and Jellyfin&lt;/a>.&lt;/p>
&lt;h2 id="what-competing-guides-skip-our-angle">What competing guides skip (our angle)&lt;/h2>
&lt;p>Five things — three that change which product you pick, two that change how you deploy it.&lt;/p>
&lt;p>First, &lt;strong>the free tier is client-dependent.&lt;/strong> Full playback free in a web browser and on TV apps; one minute in the native phone and desktop apps; Live TV behind Premiere everywhere. Across the top-10 results we checked on 2026-07-23, none published that split — and it is the difference between &amp;ldquo;free Emby works&amp;rdquo; and &amp;ldquo;free Emby is a demo.&amp;rdquo;&lt;/p>
&lt;p>Second, &lt;strong>the fork lineage is specific, and none of the pages we checked states it.&lt;/strong> Emby 3.5.2, December 2018, ported to .NET Core. Emby&amp;rsquo;s own repo stopping at 3.5.3 in September 2018 is the corroboration from the other side.&lt;/p>
&lt;p>Third, &lt;strong>the most-cited performance evidence is worthless.&lt;/strong> The viral Emby-forum thread is AI-written, self-refuting on its own description, and was rejected by Emby staff. The real difference is FFmpeg release cadence, which is a narrower and more honest claim.&lt;/p>
&lt;p>Fourth, &lt;strong>migration is officially unsupported&lt;/strong>, in capitals, in Jellyfin&amp;rsquo;s own docs — directly contradicting the one ranking page that addresses migration at all.&lt;/p>
&lt;p>Fifth, &lt;strong>they share default ports&lt;/strong> and collide on a single host, because they share an ancestor. None of the pages we checked mentions a port number.&lt;/p>
&lt;h2 id="related-reading">Related reading&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://techfuelhq.com/articles/jellyfin-vs-plex-2026/">Jellyfin vs Plex (2026)&lt;/a> — the comparison most people actually need first&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/jellyfin-setup-docker-homelab-2026/">Jellyfin setup with Docker&lt;/a> — the build, end to end&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/best-nas-for-plex-jellyfin-2026/">Best NAS for Plex and Jellyfin&lt;/a> — the hardware that decides transcoding&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/articles/best-gpu-plex-jellyfin-transcode-2026/">Best GPU for Plex/Jellyfin transcoding&lt;/a> — what actually accelerates&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/best-mini-pc-home-assistant-2026/">Best mini PC for a home server&lt;/a> — sizing a low-power box&lt;/li>
&lt;/ul>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://jellyfin.org/docs/general/about" rel="noopener">https://jellyfin.org/docs/general/about&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://jellyfin.org/docs/" rel="noopener">https://jellyfin.org/docs/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://jellyfin.org/docs/general/administration/migrate/" rel="noopener">https://jellyfin.org/docs/general/administration/migrate/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://jellyfin.org/docs/general/post-install/transcoding/" rel="noopener">https://jellyfin.org/docs/general/post-install/transcoding/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://jellyfin.org/docs/general/post-install/transcoding/hardware-acceleration/" rel="noopener">https://jellyfin.org/docs/general/post-install/transcoding/hardware-acceleration/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://jellyfin.org/docs/general/community-standards" rel="noopener">https://jellyfin.org/docs/general/community-standards&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://jellyfin.org/posts/jellyfin-10-6-0/" rel="noopener">https://jellyfin.org/posts/jellyfin-10-6-0/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://api.github.com/repos/jellyfin/jellyfin/releases/latest" rel="noopener">https://api.github.com/repos/jellyfin/jellyfin/releases/latest&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://raw.githubusercontent.com/jellyfin/jellyfin/master/LICENSE" rel="noopener">https://raw.githubusercontent.com/jellyfin/jellyfin/master/LICENSE&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/jellyfin/jellyfin-ffmpeg" rel="noopener">https://github.com/jellyfin/jellyfin-ffmpeg&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/jellyfin/jellyfin-ffmpeg/releases" rel="noopener">https://github.com/jellyfin/jellyfin-ffmpeg/releases&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://jellyfin.org/docs/general/post-install/networking/" rel="noopener">https://jellyfin.org/docs/general/post-install/networking/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emby.media/support/articles/Connectivity.html" rel="noopener">https://emby.media/support/articles/Connectivity.html&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emby.media/premiere.html" rel="noopener">https://emby.media/premiere.html&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emby.media/premiereterms.html" rel="noopener">https://emby.media/premiereterms.html&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emby.media/support/articles/Premiere-Feature-Matrix.html" rel="noopener">https://emby.media/support/articles/Premiere-Feature-Matrix.html&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emby.media/support/articles/Premiere-Limits.html" rel="noopener">https://emby.media/support/articles/Premiere-Limits.html&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emby.media/support/articles/Premiere-Key-Invalid.html" rel="noopener">https://emby.media/support/articles/Premiere-Key-Invalid.html&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emby.media/community/blogs/entry/576-the-history-and-evolution-of-emby/" rel="noopener">https://emby.media/community/blogs/entry/576-the-history-and-evolution-of-emby/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emby.media/community/topic/146152-hard-comparison-why-is-embys-transcoding-engine-so-far-behind-jellyfin-and-why-im-switching-back/" rel="noopener">https://emby.media/community/topic/146152-hard-comparison-why-is-embys-transcoding-engine-so-far-behind-jellyfin-and-why-im-switching-back/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/MediaBrowser/Emby" rel="noopener">https://github.com/MediaBrowser/Emby&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/MediaBrowser/Emby.Releases/releases" rel="noopener">https://github.com/MediaBrowser/Emby.Releases/releases&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Tailscale vs Cloudflare Tunnel for Homelab (2026)</title><link>https://techfuelhq.com/networking/tailscale-vs-cloudflare-tunnel-2026/</link><pubDate>Wed, 22 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/networking/tailscale-vs-cloudflare-tunnel-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-07-22 · Updated 2026-07-22 · ~10 min read · St. Louis County, MO&lt;/p>
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p>&lt;strong>TL;DR · They overlap, but they are built for different jobs&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Publishing a service to people who should not need an account or client?&lt;/strong> Cloudflare Tunnel. A plain HTTPS URL in any browser, no software on the far end — &lt;strong>but put a Cloudflare Access policy in front of it unless you genuinely intend the service to be public.&lt;/strong> A tunnel with no policy is a public URL.&lt;/li>
&lt;li>&lt;strong>Reaching your own machines privately?&lt;/strong> Tailscale. End-to-end WireGuard, any protocol, any port, no domain required.&lt;/li>
&lt;li>&lt;strong>Who holds plaintext:&lt;/strong> Cloudflare states it must decrypt traffic to cache and filter it; Tailscale's relays never access unencrypted data.&lt;/li>
&lt;li>&lt;strong>Neither opens inbound ports&lt;/strong>, and both survive CGNAT — that shared property is why the comparison exists at all.&lt;/li>
&lt;li>&lt;strong>If you have both needs, run both:&lt;/strong> public apps via the Tunnel, admin and SSH via Tailscale. If everything you reach is your own, Tailscale alone is enough — and if you publish one public app and administer nothing remotely, so is the Tunnel.&lt;/li>
&lt;/ul>
&lt;p>Free-tier terms and product limits move. Every number below is cited to a source we read live on 2026-07-20 — re-check the linked page before you plan around it.&lt;/p>
&lt;/div>
&lt;img src="https://techfuelhq.com/images/networking/tailscale-vs-cloudflare-tunnel-2026.svg" width="1200" height="760" loading="lazy" decoding="async" alt="Diagram comparing Tailscale and Cloudflare Tunnel homelab remote access paths: on the left, a laptop with the Tailscale client connecting end-to-end over WireGuard to a home server through NAT with a DERP relay fallback; on the right, an unmodified browser reaching Cloudflare's edge over HTTPS where TLS is terminated, then a second encrypted leg down an outbound-only cloudflared connector to the same home server" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;h2 id="the-short-version">The short version&lt;/h2>
&lt;p>Most comparisons treat Tailscale and Cloudflare Tunnel as competitors picking off the same job. They aren&amp;rsquo;t. Ask one question first: &lt;strong>are you publishing a service to people who should not need an account or client software, or are you reaching your own machines privately?&lt;/strong> If it&amp;rsquo;s the first, Cloudflare Tunnel is the tool — an unmodified browser hits a normal HTTPS hostname and Cloudflare Access decides who gets through. If it&amp;rsquo;s the second, Tailscale is the tool — every device runs a client, traffic is end-to-end WireGuard, and every protocol works because you are on a network, not behind a web proxy.&lt;/p>
&lt;p>They overlap on exactly one property, and that overlap is what makes people compare them: neither requires an inbound port on your router. cloudflared &amp;ldquo;initiates an outbound connection through your firewall from the origin to the Cloudflare global network&amp;rdquo; (&lt;a href="https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/" rel="noopener">Cloudflare Tunnel docs&lt;/a>), and Tailscale connections work across firewalls and NAT &amp;ldquo;without requiring port forwarding or complex firewall rules&amp;rdquo; (&lt;a href="https://tailscale.com/kb/1151/what-is-tailscale" rel="noopener">What is Tailscale&lt;/a>). Everything past that point diverges.&lt;/p>
&lt;h2 id="side-by-side-from-the-vendors-own-docs">Side by side, from the vendors&amp;rsquo; own docs&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Dimension&lt;/th>
&lt;th scope="col">Cloudflare Tunnel&lt;/th>
&lt;th scope="col">Tailscale&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Inbound ports on your router&lt;/td>
&lt;td>None — outbound-only connector&lt;/td>
&lt;td>None — NAT traversal, no port forwarding&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Client on the accessing device&lt;/td>
&lt;td>None for HTTP/HTTPS; required (cloudflared or the Cloudflare One client) for TCP/SSH/RDP&lt;/td>
&lt;td>Required on every device, unless reached via a subnet router&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Encryption model&lt;/td>
&lt;td>TLS terminated at Cloudflare&amp;rsquo;s edge; Cloudflare decrypts to cache and filter&lt;/td>
&lt;td>End-to-end WireGuard; relays only carry already-encrypted packets&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Public clientless web access&lt;/td>
&lt;td>A plain HTTPS URL — pair with an Access policy&lt;/td>
&lt;td>Via Funnel (public, ports 443, 8443, 10000 only)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Private access for invited people&lt;/td>
&lt;td>Access policy + IdP or email OTP&lt;/td>
&lt;td>Add them to the tailnet; they install a client&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Built-in auth&lt;/td>
&lt;td>Cloudflare Access, deny-by-default; email one-time PIN needs no &lt;em>third-party&lt;/em> IdP&lt;/td>
&lt;td>Tailnet policy file ACLs — but new tailnets default to allow-all&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Free tier (checked 2026-07-20)&lt;/td>
&lt;td>$0 forever, 50-user limit, logs up to 24 hours&lt;/td>
&lt;td>$0 forever, up to 6 users, unlimited user devices&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Domain required&lt;/td>
&lt;td>Yes — you must add a website to Cloudflare&lt;/td>
&lt;td>No — MagicDNS / ts.net name&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Large uploads&lt;/td>
&lt;td>100 MB body on Free and Pro, 200 MB Business&lt;/td>
&lt;td>Not capped by that mechanism; Funnel has undisclosed bandwidth limits&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Whole-LAN access&lt;/td>
&lt;td>Private network routes plus a client on-ramp&lt;/td>
&lt;td>Subnet router; exit node for full-tunnel&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;h2 id="who-can-decrypt-your-traffic">Who can decrypt your traffic&lt;/h2>
&lt;p>This is the sharpest differentiator and the one most comparisons bury under a feature grid.&lt;/p>
&lt;p>Cloudflare is a reverse proxy. Its SSL FAQ says it plainly: &amp;ldquo;Cloudflare must decrypt traffic in order to cache and filter malicious traffic. Cloudflare either re-encrypts traffic or sends plain text traffic to the origin web server depending on your domain&amp;rsquo;s encryption mode&amp;rdquo; (&lt;a href="https://developers.cloudflare.com/ssl/troubleshooting/faq/" rel="noopener">SSL FAQ&lt;/a>). The architecture is two separate TLS legs with two certificates — an edge certificate presented to visitors, and an origin certificate covering the Cloudflare-to-origin hop (&lt;a href="https://developers.cloudflare.com/ssl/concepts/" rel="noopener">SSL concepts&lt;/a>). Under Flexible mode, &amp;ldquo;traffic from visitors to Cloudflare can be encrypted via HTTPS, but traffic from Cloudflare to the origin server is not&amp;rdquo; (&lt;a href="https://developers.cloudflare.com/ssl/origin-configuration/ssl-modes/" rel="noopener">SSL modes&lt;/a>). Cloudflare does not publish a Tunnel-specific page stating it terminates TLS for tunnel traffic in those words, so treat this as what the reverse-proxy architecture implies rather than a Tunnel-page quote.&lt;/p>
&lt;p>Tailscale goes the other way. Its data plane &amp;ldquo;uses WireGuard as its primary mechanism to encrypt communication between Tailscale devices,&amp;rdquo; and it provides end-to-end encryption &amp;ldquo;whether devices connect directly or through a relayed connection&amp;rdquo; (&lt;a href="https://tailscale.com/kb/1504/encryption" rel="noopener">Tailscale encryption&lt;/a>). Relays are explicitly blind: &amp;ldquo;DERP servers never access your unencrypted data; they only handle WireGuard packets that are already encrypted.&amp;rdquo; Policy enforcement is local too — ACLs are enforced &amp;ldquo;on each device directly, without further involvement from Tailscale&amp;rsquo;s coordination server&amp;rdquo; (&lt;a href="https://tailscale.com/kb/1018/acls" rel="noopener">ACLs&lt;/a>).&lt;/p>
&lt;p>Neither position is the safe one in the abstract. Cloudflare&amp;rsquo;s decryption is what buys you WAF, bot filtering, and Access policies evaluated before a packet reaches your origin. Tailscale&amp;rsquo;s refusal to decrypt is what forces client software onto every participant. That is the trade, stated honestly.&lt;/p>
&lt;p>One caveat worth knowing: &lt;strong>Tailscale Funnel is the exception that proves the rule.&lt;/strong> When you publish a service publicly with Funnel, &amp;ldquo;the Tailscale server running on your device receives the encrypted request from the TCP proxy. It then terminates the TLS connection and passes the decrypted request to the local service&amp;rdquo; (&lt;a href="https://tailscale.com/kb/1223/funnel" rel="noopener">Funnel&lt;/a>). TLS ends on your hardware, not Tailscale&amp;rsquo;s.&lt;/p>
&lt;h2 id="protocol-coverage-http-first-vs-anything">Protocol coverage: HTTP-first vs anything&lt;/h2>
&lt;p>Cloudflare Tunnel &amp;ldquo;can connect HTTP web servers, SSH servers, remote desktops, and other protocols,&amp;rdquo; and has full WebSocket support (&lt;a href="https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/" rel="noopener">Tunnel docs&lt;/a>, &lt;a href="https://developers.cloudflare.com/cloudflare-one/faq/cloudflare-tunnels-faq/" rel="noopener">Tunnel FAQ&lt;/a>). The catch homelabbers hit is &lt;em>how&lt;/em> those non-HTTP protocols are reached. For arbitrary TCP, &amp;ldquo;&lt;code>cloudflared&lt;/code> will need to be installed on each user device that will connect&amp;rdquo; (&lt;a href="https://developers.cloudflare.com/cloudflare-one/access-controls/applications/non-http/cloudflared-authentication/arbitrary-tcp/" rel="noopener">arbitrary TCP&lt;/a>). For private network routes — the CIDR-style path that exposes non-HTTP resources — &amp;ldquo;end users must connect their device to Cloudflare and enroll in your Zero Trust organization,&amp;rdquo; most commonly by installing the Cloudflare One Client (&lt;a href="https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/private-net/" rel="noopener">private networks&lt;/a>).&lt;/p>
&lt;p>SSH has four documented paths: client-side cloudflared (no Cloudflare One client needed), Access for Infrastructure and self-managed SSH keys (both requiring a client on-ramp), and a browser-rendered terminal that needs no SSH client at all (&lt;a href="https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/use-cases/ssh/" rel="noopener">SSH use case&lt;/a>). RDP mirrors this with browser-based, Cloudflare One client, and client-side cloudflared options (&lt;a href="https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/use-cases/rdp/" rel="noopener">RDP use case&lt;/a>).&lt;/p>
&lt;p>The net: &lt;strong>HTTP/HTTPS is the only category an arbitrary unmodified browser reaches.&lt;/strong> Everything else needs client software or Cloudflare&amp;rsquo;s browser-rendered terminal. On Tailscale, once the client is installed, there is nothing to configure per-protocol — SMB, NFS, rsync, a game server, a database port, whatever. That is the practical meaning of &amp;ldquo;network&amp;rdquo; versus &amp;ldquo;web proxy,&amp;rdquo; and it&amp;rsquo;s the same distinction we draw in &lt;a href="https://techfuelhq.com/networking/tailscale-vs-wireguard-2026/">Tailscale vs WireGuard&lt;/a>.&lt;/p>
&lt;h2 id="the-client-requirement-and-its-escape-hatches">The client requirement and its escape hatches&lt;/h2>
&lt;p>Tailscale&amp;rsquo;s own subnet-router page states the constraint outright: subnet routers exist to &amp;ldquo;extend your Tailscale network to include devices that don&amp;rsquo;t or can&amp;rsquo;t run the Tailscale client,&amp;rdquo; citing printers and large VPC or legacy environments where &amp;ldquo;installing clients on every endpoint becomes impractical&amp;rdquo; (&lt;a href="https://tailscale.com/kb/1019/subnets" rel="noopener">subnets&lt;/a>). Routes must be approved in the admin console or auto-approved via &lt;code>autoApprovers&lt;/code>, and there is a failure mode worth planning around: &amp;ldquo;Tailscale does not fall back to a less-specific route when the subnet router for a more-specific route goes offline.&amp;rdquo;&lt;/p>
&lt;p>Exit nodes are the other lever — one device routes all your public internet traffic using default routes &lt;code>0.0.0.0/0&lt;/code> and &lt;code>::/0&lt;/code>, which requires IP forwarding on Linux and explicit opt-in on both ends. Tailscale flags real platform limits here: macOS exit nodes are &amp;ldquo;limited to userspace routing&amp;rdquo; and need sleep prevention to hold a connection, Windows carries its own caveat around per-query DNS thread usage, and &amp;ldquo;running an exit node on an Android device is not performant&amp;rdquo; (&lt;a href="https://tailscale.com/kb/1103/exit-nodes" rel="noopener">exit nodes&lt;/a>).&lt;/p>
&lt;p>Cloudflare&amp;rsquo;s escape hatch from the domain requirement doesn&amp;rsquo;t exist: &amp;ldquo;Before you publish an application through your tunnel, you must add a website to Cloudflare&amp;rdquo; (&lt;a href="https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/get-started/create-remote-tunnel/" rel="noopener">create a remote tunnel&lt;/a>). If you don&amp;rsquo;t own a domain and don&amp;rsquo;t want to, that ends the conversation.&lt;/p>
&lt;h2 id="auth-and-one-default-that-surprises-people">Auth, and one default that surprises people&lt;/h2>
&lt;p>Before anything else in this section: &lt;strong>a Cloudflare Tunnel does not authenticate anyone by itself.&lt;/strong> Access is a separate product you put in front of it. Publish a hostname through a tunnel with no Access policy and no application-level login, and you have put that service on the public internet — indexed, scanned, and reachable by anyone who learns the name. This is the single most common way homelabs get burned by the &amp;ldquo;no client needed&amp;rdquo; pitch, and it is why the clientless convenience is not free. Before you point anything at a tunnel, decide explicitly whether it is meant to be public; if it is not, attach an Access policy or make sure the app&amp;rsquo;s own authentication is one you would trust facing the open internet. Admin surfaces — Proxmox, routers, &lt;a href="https://techfuelhq.com/homelab/komodo-vs-portainer-vs-dockge-2026/">Portainer&lt;/a>, container dashboards — should not be published this way at all. Put those on the tailnet.&lt;/p>
&lt;p>Cloudflare Access is deny-by-default and validates identity against an IdP (&lt;a href="https://developers.cloudflare.com/cloudflare-one/access-controls/policies/" rel="noopener">Access policies&lt;/a>). You do not need a third-party IdP for a homelab: Access can send a one-time PIN to approved email addresses instead. The PIN expires 10 minutes after request, is single-use, and requesting a new one invalidates the previous — and Cloudflare only sends the email if the user is already allowed by a policy (&lt;a href="https://developers.cloudflare.com/cloudflare-one/integrations/identity-providers/one-time-pin/" rel="noopener">one-time PIN&lt;/a>).&lt;/p>
&lt;p>Tailscale&amp;rsquo;s ACL system is deny-by-default &lt;em>in principle&lt;/em>, but new tailnets are not: &amp;ldquo;When you first create your tailnet, the default tailnet policy file enables communication between all devices within the tailnet,&amp;rdquo; and &amp;ldquo;in the absence of an &lt;code>acls&lt;/code> section in the tailnet policy file, Tailscale applies the default allow all policy&amp;rdquo; (&lt;a href="https://tailscale.com/kb/1018/acls" rel="noopener">ACLs&lt;/a>). If you have added a family member&amp;rsquo;s laptop or a VPS to your tailnet and never touched the policy file, every node can reach every other node on every port. Fixing that is a 20-minute job and it&amp;rsquo;s the first thing we do in our &lt;a href="https://techfuelhq.com/tutorials/tailscale-remote-access-homelab-2026/">Tailscale homelab setup guide&lt;/a>.&lt;/p>
&lt;h2 id="free-tiers-as-verified-on-2026-07-20">Free tiers, as verified on 2026-07-20&lt;/h2>
&lt;p>Cloudflare&amp;rsquo;s Zero Trust free plan reads &amp;ldquo;$0&amp;rdquo; &amp;ldquo;forever,&amp;rdquo; a &amp;ldquo;50 user limit,&amp;rdquo; &amp;ldquo;Community forums and Discord server&amp;rdquo; support, and standard log retention &amp;ldquo;up to 24 hours&amp;rdquo;; the next tier is pay-as-you-go at &amp;ldquo;$7 per user/month (paid annually)&amp;rdquo; with logs &amp;ldquo;up to 30 days&amp;rdquo; (&lt;a href="https://www.cloudflare.com/zero-trust/products/access/" rel="noopener">Access plans&lt;/a>, &lt;a href="https://www.cloudflare.com/plans/zero-trust-services/" rel="noopener">Zero Trust plans&lt;/a>). Note the annual-billing qualifier on that $7 — monthly billing is higher. Onboarding still asks for payment details — Cloudflare notes that if you chose the Free plan &amp;ldquo;this step is still needed but you will not be charged&amp;rdquo; (&lt;a href="https://developers.cloudflare.com/cloudflare-one/setup/" rel="noopener">Cloudflare One setup&lt;/a>). Free-plan DEX limits are 10 tests per account and 100 remote captures per day (&lt;a href="https://developers.cloudflare.com/cloudflare-one/account-limits/" rel="noopener">account limits&lt;/a>).&lt;/p>
&lt;p>Tailscale&amp;rsquo;s Personal plan currently reads &amp;ldquo;$0 / Free forever,&amp;rdquo; &amp;ldquo;Up to 6 users,&amp;rdquo; &amp;ldquo;Unlimited user devices,&amp;rdquo; up to 3 ACL groups, &amp;ldquo;Up to 50 tagged resources to start,&amp;rdquo; and 1,000 minutes per month for ephemeral resources, with subnet routers, exit nodes, and Funnel included (&lt;a href="https://tailscale.com/pricing" rel="noopener">Tailscale pricing&lt;/a>). Note this supersedes the 3-user / 100-device figures still repeated across older comparisons — those are stale.&lt;/p>
&lt;p>Seat accounting on Cloudflare is worth reading before you invite people: &amp;ldquo;A user consumes a seat when they perform an authentication event,&amp;rdquo; one seat regardless of how many apps they open, and once seats are exhausted &amp;ldquo;additional users who attempt to log in are blocked&amp;rdquo; (&lt;a href="https://developers.cloudflare.com/cloudflare-one/team-and-resources/users/seat-management/" rel="noopener">seat management&lt;/a>). Whether a tunnel with no Access policy in front of it consumes a seat is not stated in the docs we read — treat it as unverified.&lt;/p>
&lt;h2 id="the-two-limits-that-actually-bite-homelabs">The two limits that actually bite homelabs&lt;/h2>
&lt;p>&lt;strong>The 100 MB body cap.&lt;/strong> Maximum upload size is 100 MB on Free and Pro, 200 MB on Business, and 500+ MB on Enterprise; exceeding it returns &lt;code>413 Request Entity Too Large&lt;/code>. Documented workarounds are chunking requests, switching the DNS record to DNS-only, or upgrading (&lt;a href="https://developers.cloudflare.com/support/troubleshooting/http-status-codes/4xx-client-error/error-413/" rel="noopener">error 413&lt;/a>). Immich and Nextcloud users hit this constantly.&lt;/p>
&lt;p>&lt;strong>The CDN media term.&lt;/strong> Cloudflare&amp;rsquo;s service-specific terms state it &amp;ldquo;reserves the right to disable or limit your access to or use of the CDN&amp;hellip; if you use or are suspected of using the CDN without such Paid Services to serve video or a disproportionate percentage of pictures, audio files, or other large files,&amp;rdquo; naming the Developer Platform, Images, and Stream as the qualifying paid services (&lt;a href="https://www.cloudflare.com/service-specific-terms-application-services/" rel="noopener">service-specific terms&lt;/a>). That is the text; we found no published enforcement threshold anywhere in Cloudflare&amp;rsquo;s terms, so any specific TB/month figure you see quoted is anecdote, not policy. This is why Plex and Jellyfin over a Tunnel is a recurring warning in self-hosting communities.&lt;/p>
&lt;p>We could not verify a bandwidth cap for Cloudflare Tunnel itself, and Tailscale states only that Funnel traffic &amp;ldquo;is subject to non-configurable bandwidth limits&amp;rdquo; without publishing a number. Don&amp;rsquo;t plan capacity on either.&lt;/p>
&lt;h2 id="the-split-most-people-actually-run">The split most people actually run&lt;/h2>
&lt;p>Across three self-hosting and homelab threads we read on 2026-07-20 (community opinion, not verified fact), the dominant recommendation among people who have &lt;em>both&lt;/em> needs is not a winner — it&amp;rsquo;s a division of labor. That is a statement about what experienced self-hosters recommend in those threads, not a claim that most homelabs run both; plenty need only one. A highly-upvoted framing in the &lt;a href="https://www.reddit.com/r/selfhosted/comments/1cnauhd/cloudflare_tunnels_vs_tailscale_from_a/" rel="noopener">r/selfhosted Cloudflare-Tunnels-vs-Tailscale thread&lt;/a> splits the estate into &lt;em>applications you consume&lt;/em> (website, wiki, photo management) behind Cloudflare, and &lt;em>management planes&lt;/em> (Proxmox, terminal, remote desktop, Portainer) behind Tailscale. Since neither opens inbound ports, the argument runs, the real difference is that one path demands a client on the far end and the other only demands authentication. The identical split appears independently in a &lt;a href="https://www.reddit.com/r/selfhosted/comments/187eqpq/do_you_use_cloudfare_tunnel_or_a_vpn_like/" rel="noopener">separate r/selfhosted thread&lt;/a>, with replies naming the exact division: Overseerr and Mealie public via Tunnel, Portainer private via Tailscale. Vote rankings drift, so treat &amp;ldquo;highly-upvoted&amp;rdquo; as a snapshot of that date, not a standing fact.&lt;/p>
&lt;p>Credential stores are the clearest case of all. A self-hosted password manager is the last thing to publish through a proxy that terminates TLS — keep &lt;a href="https://techfuelhq.com/homelab/vaultwarden-vs-bitwarden-2026/">Vaultwarden&lt;/a> on the tailnet and reachable only by devices you control, whatever you do with the rest of the estate.&lt;/p>
&lt;p>The recurring tiebreaker is blunt: &lt;em>can you install a client on the accessing device?&lt;/em> Work laptops, a partner&amp;rsquo;s phone, a friend&amp;rsquo;s browser — those push you to the Tunnel. Second is household UX: toggling a VPN is friction for non-technical family, though the counter-argument in-thread is that Tailscale can simply be left running. Third is CGNAT, which even WireGuard purists concede is where Tailscale earns its place.&lt;/p>
&lt;p>If you go the both-tools route, the public side still needs a reverse proxy behind cloudflared for host-based routing; our &lt;a href="https://techfuelhq.com/homelab/caddy-vs-nginx-proxy-manager-vs-traefik-2026/">Caddy vs Nginx Proxy Manager vs Traefik comparison&lt;/a> covers that layer.&lt;/p>
&lt;h2 id="what-competing-guides-skip-our-angle">What competing guides skip (our angle)&lt;/h2>
&lt;p>Four things get consistently glossed over:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>They are not the same category.&lt;/strong> Cloudflare Tunnel publishes a service; Tailscale joins a network. Comparing their properties side by side is fine — we do it above — but &lt;em>scoring&lt;/em> them on a shared grid and declaring a winner is the framing error, because half the rows are measuring each tool against a job it was never built to do. Tailscale&amp;rsquo;s public-publishing answer is Funnel, which is restricted to ports 443, 8443, and 10000 and requires MagicDNS plus tailnet HTTPS certificates (&lt;a href="https://tailscale.com/kb/1223/funnel" rel="noopener">Funnel&lt;/a>); its private equivalent, Serve, adds identity headers that Funnel deliberately omits (&lt;a href="https://tailscale.com/kb/1312/serve" rel="noopener">Serve&lt;/a>).&lt;/li>
&lt;li>&lt;strong>Stale free-tier numbers.&lt;/strong> The 3-user / 100-device Tailscale figures are everywhere and are wrong as of 2026-07-20; the live pricing page reads 6 users and unlimited user devices.&lt;/li>
&lt;li>&lt;strong>The &amp;ldquo;no client needed&amp;rdquo; claim is HTTP-only.&lt;/strong> SSH, RDP, and arbitrary TCP through Cloudflare all need client-side cloudflared, the Cloudflare One client, or Cloudflare&amp;rsquo;s browser terminal. Say that up front and half the comparison resolves itself.&lt;/li>
&lt;li>&lt;strong>Tailscale&amp;rsquo;s allow-all default.&lt;/strong> A brand-new tailnet permits every device to reach every other device. Guides that present Tailscale as deny-by-default without noting the initial policy file are describing a state you have to create.&lt;/li>
&lt;/ol>
&lt;p>If Tailscale&amp;rsquo;s control plane is the part you object to, the adjacent options are worth a look: &lt;a href="https://techfuelhq.com/networking/zerotier-vs-tailscale-2026/">ZeroTier vs Tailscale&lt;/a> and &lt;a href="https://techfuelhq.com/networking/netbird-vs-tailscale-2026/">NetBird vs Tailscale&lt;/a> cover the mesh alternatives, and &lt;a href="https://techfuelhq.com/networking/tailscale-vs-wireguard-2026/">Tailscale vs WireGuard&lt;/a> covers rolling it yourself.&lt;/p>
&lt;h2 id="related-reading">Related reading&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://techfuelhq.com/networking/tailscale-vs-wireguard-2026/">Tailscale vs WireGuard (2026)&lt;/a> — when the managed control plane is worth it and when plain WireGuard wins.&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/tailscale-remote-access-homelab-2026/">Tailscale remote access for your homelab: setup guide&lt;/a> — our step-by-step install, ACL lockdown, subnet router, and exit node.&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/networking/zerotier-vs-tailscale-2026/">ZeroTier vs Tailscale (2026)&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/networking/netbird-vs-tailscale-2026/">NetBird vs Tailscale (2026)&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/caddy-vs-nginx-proxy-manager-vs-traefik-2026/">Caddy vs Nginx Proxy Manager vs Traefik (2026)&lt;/a> — the reverse proxy that sits behind cloudflared.&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/home-assistant-proxmox-2026/">Home Assistant on Proxmox (2026)&lt;/a> — the host side of the Home Assistant remote-access question.&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/vaultwarden-vs-bitwarden-2026/">Vaultwarden vs Bitwarden (2026)&lt;/a> — the one service to keep off the public tunnel entirely.&lt;/li>
&lt;/ul>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/" rel="noopener">https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://developers.cloudflare.com/tunnel/" rel="noopener">https://developers.cloudflare.com/tunnel/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://developers.cloudflare.com/cloudflare-one/access-controls/applications/non-http/cloudflared-authentication/arbitrary-tcp/" rel="noopener">https://developers.cloudflare.com/cloudflare-one/access-controls/applications/non-http/cloudflared-authentication/arbitrary-tcp/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/private-net/" rel="noopener">https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/private-net/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/use-cases/ssh/" rel="noopener">https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/use-cases/ssh/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/use-cases/rdp/" rel="noopener">https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/use-cases/rdp/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://developers.cloudflare.com/cloudflare-one/faq/cloudflare-tunnels-faq/" rel="noopener">https://developers.cloudflare.com/cloudflare-one/faq/cloudflare-tunnels-faq/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/get-started/create-remote-tunnel/" rel="noopener">https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/get-started/create-remote-tunnel/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://developers.cloudflare.com/cloudflare-one/access-controls/policies/" rel="noopener">https://developers.cloudflare.com/cloudflare-one/access-controls/policies/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://developers.cloudflare.com/cloudflare-one/integrations/identity-providers/one-time-pin/" rel="noopener">https://developers.cloudflare.com/cloudflare-one/integrations/identity-providers/one-time-pin/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://developers.cloudflare.com/cloudflare-one/team-and-resources/users/seat-management/" rel="noopener">https://developers.cloudflare.com/cloudflare-one/team-and-resources/users/seat-management/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://developers.cloudflare.com/cloudflare-one/account-limits/" rel="noopener">https://developers.cloudflare.com/cloudflare-one/account-limits/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://developers.cloudflare.com/cloudflare-one/setup/" rel="noopener">https://developers.cloudflare.com/cloudflare-one/setup/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://developers.cloudflare.com/ssl/troubleshooting/faq/" rel="noopener">https://developers.cloudflare.com/ssl/troubleshooting/faq/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://developers.cloudflare.com/ssl/concepts/" rel="noopener">https://developers.cloudflare.com/ssl/concepts/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://developers.cloudflare.com/ssl/origin-configuration/ssl-modes/" rel="noopener">https://developers.cloudflare.com/ssl/origin-configuration/ssl-modes/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://developers.cloudflare.com/fundamentals/concepts/how-cloudflare-works/" rel="noopener">https://developers.cloudflare.com/fundamentals/concepts/how-cloudflare-works/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://developers.cloudflare.com/support/troubleshooting/http-status-codes/4xx-client-error/error-413/" rel="noopener">https://developers.cloudflare.com/support/troubleshooting/http-status-codes/4xx-client-error/error-413/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.cloudflare.com/plans/zero-trust-services/" rel="noopener">https://www.cloudflare.com/plans/zero-trust-services/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.cloudflare.com/zero-trust/products/access/" rel="noopener">https://www.cloudflare.com/zero-trust/products/access/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.cloudflare.com/service-specific-terms-application-services/" rel="noopener">https://www.cloudflare.com/service-specific-terms-application-services/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://tailscale.com/kb/1151/what-is-tailscale" rel="noopener">https://tailscale.com/kb/1151/what-is-tailscale&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://tailscale.com/kb/1257/connection-types" rel="noopener">https://tailscale.com/kb/1257/connection-types&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://tailscale.com/kb/1504/encryption" rel="noopener">https://tailscale.com/kb/1504/encryption&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://tailscale.com/kb/1018/acls" rel="noopener">https://tailscale.com/kb/1018/acls&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://tailscale.com/kb/1019/subnets" rel="noopener">https://tailscale.com/kb/1019/subnets&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://tailscale.com/kb/1103/exit-nodes" rel="noopener">https://tailscale.com/kb/1103/exit-nodes&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://tailscale.com/kb/1223/funnel" rel="noopener">https://tailscale.com/kb/1223/funnel&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://tailscale.com/kb/1312/serve" rel="noopener">https://tailscale.com/kb/1312/serve&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://tailscale.com/kb/1017/install" rel="noopener">https://tailscale.com/kb/1017/install&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://tailscale.com/pricing" rel="noopener">https://tailscale.com/pricing&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.reddit.com/r/selfhosted/comments/1cnauhd/cloudflare_tunnels_vs_tailscale_from_a/" rel="noopener">https://www.reddit.com/r/selfhosted/comments/1cnauhd/cloudflare_tunnels_vs_tailscale_from_a/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.reddit.com/r/selfhosted/comments/187eqpq/do_you_use_cloudfare_tunnel_or_a_vpn_like/" rel="noopener">https://www.reddit.com/r/selfhosted/comments/187eqpq/do_you_use_cloudfare_tunnel_or_a_vpn_like/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.reddit.com/r/homelab/comments/1cquyxu/tailscale_vs_cloudflare/" rel="noopener">https://www.reddit.com/r/homelab/comments/1cquyxu/tailscale_vs_cloudflare/&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Restic vs Borg vs Kopia: Which Backup Tool (2026)</title><link>https://techfuelhq.com/homelab/restic-vs-borg-vs-kopia-2026/</link><pubDate>Tue, 21 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/homelab/restic-vs-borg-vs-kopia-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-07-21 · Updated 2026-07-21 · ~11 min read · St. Louis County, MO&lt;/p>
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p>&lt;strong>TL;DR · Filter by destination first, then decide on the rest&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>restic has compression.&lt;/strong> It landed in v0.14.0 on 2022-08-25 with repository format version 2. Every guide still saying otherwise is four years stale.&lt;/li>
&lt;li>&lt;strong>Backing up to a bucket (S3, B2, Azure, GCS)?&lt;/strong> restic or Kopia. Borg documents no native object-storage backend at all.&lt;/li>
&lt;li>&lt;strong>Backing up to a Linux box over SSH?&lt;/strong> Borg, and install Borg on both ends — that is how it is designed to run.&lt;/li>
&lt;li>&lt;strong>Backing up Windows?&lt;/strong> restic (with VSS via &lt;code>--use-fs-snapshot&lt;/code>) or Kopia. Borg on Windows is WSL/Cygwin only, both labelled experimental.&lt;/li>
&lt;li>&lt;strong>Borg 2.0 is still beta&lt;/strong> at 2.0.0b21 (2026-03-15). Stable is 1.4.5 (mid-July 2026). Do not build a 2026 backup plan on the beta.&lt;/li>
&lt;/ul>
&lt;p>Versions move fast: restic 0.19.1 shipped 2026-07-05 and Kopia 0.23.1 on 2026-06-16. Every spec here traces to vendor docs or the GitHub release API on the date above — check the changelog before you copy a flag.&lt;/p>
&lt;/div>
&lt;img src="https://techfuelhq.com/images/homelab/restic-vs-borg-vs-kopia-2026.svg" width="1200" height="760" loading="lazy" decoding="async" alt="Decision diagram comparing restic, BorgBackup and Kopia by backup destination: cloud object storage buckets such as S3 and Backblaze B2 on the left routing to restic and Kopia, an SSH-reachable Linux server in the middle routing to Borg, and a mixed Windows and Linux fleet on the right routing to restic and Kopia, with version numbers and compression support annotated for each tool." style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;h2 id="the-short-version">The short version&lt;/h2>
&lt;p>Most comparisons of these three tools open with a feature grid and close with &amp;ldquo;it depends.&amp;rdquo; That grid is where the errors live. The single most-repeated claim in this search result — that restic has no compression — has been wrong since August 2022, and it is still sitting in AI summaries and in blog posts updated this year.&lt;/p>
&lt;p>So here is the correction first, then a decision framework that actually resolves.&lt;/p>
&lt;p>restic added compression in &lt;strong>v0.14.0, released 2022-08-25&lt;/strong>, tied to repository format version 2. The release notes call it &amp;ldquo;the most requested feature: compression&amp;rdquo; (&lt;a href="https://github.com/restic/restic/releases/tag/v0.14.0" rel="noopener">restic v0.14.0 release notes&lt;/a>). Repository format 2 is now the current default for new repositories (&lt;a href="https://restic.readthedocs.io/en/stable/030_preparing_a_new_repo.html" rel="noopener">restic docs&lt;/a>). All three tools compress. That axis is dead.&lt;/p>
&lt;p>The axis that narrows it fastest is &lt;strong>where the backup lands&lt;/strong>. restic and Kopia can write directly into cloud object storage. Borg cannot — its documented transports are a local path or an SSH remote. That one difference eliminates a candidate for most people in about thirty seconds.&lt;/p>
&lt;p>Be clear about what that buys you, though: destination is a &lt;em>compatibility filter&lt;/em>, not the whole decision. It tells you which tools are even eligible. What separates the survivors is everything after — whether you need a GUI, which operating systems you have to cover, how much CLI you want to learn, and how you intend to scope compression. This guide runs the filter first because it is the cheapest way to cut the field, then does the real comparison on what remains.&lt;/p>
&lt;h2 id="why-the-restic-has-no-compression-myth-persists">Why the &amp;ldquo;restic has no compression&amp;rdquo; myth persists&lt;/h2>
&lt;p>There is a real fact underneath the wrong claim, and it is worth knowing because it may apply to you.&lt;/p>
&lt;p>Compression only works on a repository at format version 2 or later. Old repositories are &lt;strong>not&lt;/strong> auto-upgraded. To get compression on a repository created before 0.14.0 you run &lt;code>migrate upgrade_repo_v2&lt;/code>, which verifies integrity and bumps the version, then &lt;code>prune&lt;/code> to compress existing metadata. After that, new backup data is compressed, and the repository compresses progressively over time. If you would rather not wait for that drift, &lt;code>prune --repack-uncompressed&lt;/code> forces existing data to be rewritten compressed in one pass. Format 2 repositories are readable only by restic 0.14.0 and newer (&lt;a href="https://restic.readthedocs.io/en/stable/045_working_with_repos.html" rel="noopener">restic docs&lt;/a>).&lt;/p>
&lt;p>So a repository someone created in 2020 and never migrated genuinely stores uncompressed data in 2026. That is almost certainly where the folklore comes from — that, and the 2019-era third-party comparisons still in circulation, whose restic criticisms predate compression entirely. Commenters passing those around on r/selfhosted routinely flag the date themselves.&lt;/p>
&lt;p>Current restic exposes &lt;code>--compression&lt;/code> with five settings: &lt;code>off&lt;/code>, &lt;code>fastest&lt;/code>, &lt;code>auto&lt;/code> (the default), &lt;code>better&lt;/code>, &lt;code>max&lt;/code>, also settable via &lt;code>RESTIC_COMPRESSION&lt;/code>. Each step up spends more CPU to save bandwidth and space (&lt;a href="https://restic.readthedocs.io/en/stable/047_tuning_parameters.html" rel="noopener">restic tuning docs&lt;/a>). Two of those — &lt;code>fastest&lt;/code> and &lt;code>better&lt;/code> — are new; restic 0.19.0 on 2026-06-09 added the extra zstd levels (&lt;a href="https://raw.githubusercontent.com/restic/restic/master/CHANGELOG.md" rel="noopener">changelog&lt;/a>). The original 0.14.0 set was just auto/max/off.&lt;/p>
&lt;p>If you want the working setup rather than the theory, our &lt;a href="https://techfuelhq.com/tutorials/automated-offsite-backups-restic-2026/">automated offsite backups with restic&lt;/a> walk-through covers repository init, retention and scheduling end to end.&lt;/p>
&lt;h2 id="decide-by-where-the-backup-lands">Decide by where the backup lands&lt;/h2>
&lt;h3 id="the-target-is-a-bucket-s3-b2-wasabi-azure-gcs">The target is a bucket (S3, B2, Wasabi, Azure, GCS)&lt;/h3>
&lt;p>restic and Kopia. Not Borg.&lt;/p>
&lt;p>restic documents native support for local paths, SFTP, its own REST Server, Amazon S3, MinIO, any S3-compatible endpoint, Wasabi, Alibaba Cloud OSS, OpenStack Swift, Backblaze B2, Azure Blob Storage, Google Cloud Storage, and rclone as a bridge to everything else (&lt;a href="https://restic.readthedocs.io/en/stable/030_preparing_a_new_repo.html" rel="noopener">restic docs&lt;/a>). One documented gotcha worth acting on: because of error handling in the B2 library restic uses, the project recommends reaching Backblaze B2 through its &lt;strong>S3-compatible API&lt;/strong> rather than the native B2 backend. Same source.&lt;/p>
&lt;p>Before you pick either, one requirement that belongs in this decision and almost never appears in these comparisons: &lt;strong>a bucket your backup client can write to is a bucket your backup client can delete.&lt;/strong> If the machine being backed up is compromised, credentials sitting on it can be used to wipe the repository — which is exactly the scenario offsite backup exists to survive. Neither restic nor Kopia solves that for you; the storage layer does. Turn on object lock or versioning at the bucket (Backblaze B2 and S3 both support it), give the backup client an application key scoped to write-and-list without delete, and run pruning as a separate privileged job rather than from the client. Then actually test a restore. A bucket target without those three things is a copy, not a backup.&lt;/p>
&lt;p>Kopia documents S3 and S3-compatible storage, Azure Blob, Backblaze B2, Google Cloud Storage, Google Drive (native, experimental), WebDAV, SFTP, rclone, plain filesystem targets, and the Kopia Repository Server (&lt;a href="https://kopia.io/docs/repositories/" rel="noopener">Kopia docs&lt;/a>). Kopia&amp;rsquo;s rclone support is marked experimental, with only Dropbox, OneDrive and Google Drive confirmed tested — which matches the community report of a user moving from Kopia to restic after OneDrive-over-rclone proved unreliable.&lt;/p>
&lt;p>Borg documents no object-storage backend anywhere in its quickstart or FAQ. Note the phrasing: this is established by absence, not by an explicit statement from the project. But the FAQ actively points the other direction, recommending you run the Borg client where the source data is local and &lt;code>borg serve&lt;/code> over SSH where the repository storage is local, and avoid NFS or other network filesystems for repository storage (&lt;a href="https://borgbackup.readthedocs.io/en/stable/faq.html" rel="noopener">Borg FAQ&lt;/a>).&lt;/p>
&lt;h3 id="the-target-is-an-ssh-box-you-control">The target is an SSH box you control&lt;/h3>
&lt;p>Borg is at home here, and this is the case where it wins on merit rather than on habit.&lt;/p>
&lt;p>Borg initializes and accesses repositories on remote hosts over SSH, and the docs are explicit that this is fastest and easiest &lt;strong>when Borg is installed on the remote host&lt;/strong> (&lt;a href="https://borgbackup.readthedocs.io/en/stable/quickstart.html" rel="noopener">Borg quickstart&lt;/a>). If you cannot install Borg at the far end, you can mount the remote filesystem with something like sshfs and treat it as local — with the documented caution that not every filesystem is stable enough for backup use.&lt;/p>
&lt;p>Borg also has the widest compression menu of the three (&lt;a href="https://borgbackup.readthedocs.io/en/stable/usage/help.html" rel="noopener">Borg help docs&lt;/a>):&lt;/p>
&lt;ul>
&lt;li>&lt;code>none&lt;/code>&lt;/li>
&lt;li>&lt;code>lz4&lt;/code> — very high speed, very low ratio; this is the default&lt;/li>
&lt;li>&lt;code>zstd[,L]&lt;/code> — levels 1 to 22, default 3&lt;/li>
&lt;li>&lt;code>zlib[,L]&lt;/code> — levels 0 to 9, default 6&lt;/li>
&lt;li>&lt;code>lzma[,L]&lt;/code> — levels 0 to 9, default 6&lt;/li>
&lt;li>&lt;code>auto,C[,L]&lt;/code> — per-chunk heuristic that tries lz4 first to see whether data compresses&lt;/li>
&lt;li>&lt;code>obfuscate,SPEC,C[,L]&lt;/code> — pads compressed size to frustrate fingerprinting attacks based on observable chunk sizes&lt;/li>
&lt;/ul>
&lt;p>That last one has no advertised equivalent in restic or Kopia. If your threat model includes an adversary who can see stored chunk sizes on a repository host you do not fully trust, it is a genuine reason to pick Borg.&lt;/p>
&lt;p>Borg also documents &lt;code>borg mount&lt;/code>, which exposes a repository or archive as a FUSE filesystem for browsing and single-file restores. Limitation: the current FUSE implementation does not carry special filesystem flags or ACLs, and the docs recommend the &lt;code>nosymfollow&lt;/code> mount option (or a container/chroot) so symlinks inside a mounted archive cannot reach outside it (&lt;a href="https://borgbackup.readthedocs.io/en/stable/usage/mount.html" rel="noopener">Borg mount docs&lt;/a>).&lt;/p>
&lt;p>If your SSH box is a NAS or a ZFS server, the storage layer choices under it matter as much as the backup tool — see &lt;a href="https://techfuelhq.com/homelab/proxmox-truenas-unraid-storage-backend-2026/">Proxmox vs TrueNAS vs Unraid as a storage backend&lt;/a> and &lt;a href="https://techfuelhq.com/homelab/best-nas-hard-drives-2026/">the NAS drives worth buying&lt;/a>.&lt;/p>
&lt;h3 id="the-fleet-includes-windows">The fleet includes Windows&lt;/h3>
&lt;p>Borg is out. Its official standalone binaries cover Linux, FreeBSD and macOS on x86-64, with ARM via a third-party builder. Windows 10&amp;rsquo;s Linux Subsystem is described as experimental and not much tested, with FUSE omitted; Cygwin carries the identical experimental disclaimer (&lt;a href="https://borgbackup.readthedocs.io/en/stable/installation.html" rel="noopener">Borg installation docs&lt;/a>).&lt;/p>
&lt;p>restic backs up from Linux, BSD, macOS and Windows (&lt;a href="https://restic.net/" rel="noopener">restic.net&lt;/a>), and on Windows the &lt;code>--use-fs-snapshot&lt;/code> option drives Volume Shadow Copy Service, with &lt;code>-o vss.timeout&lt;/code> (default 120 seconds) and &lt;code>-o vss.exclude-volumes&lt;/code> to tune it (&lt;a href="https://restic.readthedocs.io/en/stable/040_backup.html" rel="noopener">restic backup docs&lt;/a>). Kopia supports Windows 10 or later 64-bit via CLI binary, GUI installer, Scoop and winget; macOS 10.11+ via binary, installer and Homebrew; and Linux amd64/armhf/arm64 via RPM and DEB repos, AUR and Docker images (&lt;a href="https://kopia.io/docs/installation/" rel="noopener">Kopia installation&lt;/a>).&lt;/p>
&lt;p>One more restic detail that matters for mixed fleets: multiple hosts writing into one repository is officially supported and encouraged, because it increases deduplication across machines (&lt;a href="https://restic.readthedocs.io/en/stable/040_backup.html" rel="noopener">restic backup docs&lt;/a>).&lt;/p>
&lt;h2 id="what-each-tool-needs-installed-on-the-far-end">What each tool needs installed on the far end&lt;/h2>
&lt;p>This is the question feature grids never answer, and it is the one that breaks deployments.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">&lt;/th>
&lt;th scope="col">restic 0.19.1&lt;/th>
&lt;th scope="col">Borg 1.4.5&lt;/th>
&lt;th scope="col">Kopia 0.23.1&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Latest stable (date)&lt;/td>
&lt;td>0.19.1, 2026-07-05&lt;/td>
&lt;td>1.4.5, 2026-07-18/19&lt;/td>
&lt;td>0.23.1, 2026-06-16&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Software required on the target&lt;/td>
&lt;td>None for S3/B2/Azure/GCS; SSH server for SFTP; REST Server if you use that backend&lt;/td>
&lt;td>&lt;strong>Borg itself&lt;/strong>, run via &lt;code>borg serve&lt;/code> over SSH (or a mounted remote FS as fallback)&lt;/td>
&lt;td>None for cloud backends; SSH server for SFTP; optional Kopia Repository Server&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Native cloud object storage&lt;/td>
&lt;td>Yes — S3, MinIO, S3-compatible, Wasabi, OSS, Swift, B2, Azure, GCS&lt;/td>
&lt;td>Not documented&lt;/td>
&lt;td>Yes — S3/S3-compatible, Azure, B2, GCS, Drive, WebDAV&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Compression&lt;/td>
&lt;td>Yes, since 0.14.0 (repo format v2)&lt;/td>
&lt;td>Yes — lz4, zstd, zlib, lzma, auto, obfuscate&lt;/td>
&lt;td>Yes — zstd, s2, pgzip, deflate, gzip families&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Compression scope&lt;/td>
&lt;td>Global flag / env var&lt;/td>
&lt;td>Per-archive at create time&lt;/td>
&lt;td>&lt;strong>Per policy&lt;/strong>, with file-size and extension filters&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Official GUI&lt;/td>
&lt;td>No&lt;/td>
&lt;td>No&lt;/td>
&lt;td>Yes — KopiaUI&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Native Windows&lt;/td>
&lt;td>Yes, with VSS&lt;/td>
&lt;td>No (WSL/Cygwin, experimental)&lt;/td>
&lt;td>Yes, Windows 10+&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Multi-host, one repo&lt;/td>
&lt;td>Yes, officially encouraged&lt;/td>
&lt;td>Yes&lt;/td>
&lt;td>Yes, unlimited policies per repo&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Mount as a filesystem&lt;/td>
&lt;td>Yes — &lt;code>restic mount&lt;/code>&lt;/td>
&lt;td>Yes — &lt;code>borg mount&lt;/code>&lt;/td>
&lt;td>Yes — &lt;code>kopia mount&lt;/code> (WebDAV fallback where FUSE is unavailable)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Next major version status&lt;/td>
&lt;td>Shipping normally&lt;/td>
&lt;td>&lt;strong>2.0 still beta&lt;/strong> (2.0.0b21)&lt;/td>
&lt;td>Shipping normally&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The Borg row is the whole story. Borg is a client/server design in practice: to get its performance you want the Borg binary at both ends. restic and Kopia treat the far end as dumb storage. If your offsite target is a friend&amp;rsquo;s NAS, a rented VPS, or a Backblaze bucket where you cannot install arbitrary software, that constraint decides for you before any benchmark does.&lt;/p>
&lt;h2 id="version-status-is-a-real-differentiator-right-now">Version status is a real differentiator right now&lt;/h2>
&lt;p>Borg&amp;rsquo;s current stable is &lt;strong>1.4.5&lt;/strong>, published 2026-07-18 at 22:36 UTC per the GitHub release API — Borg&amp;rsquo;s own changelog dates it 2026-07-19, which is the same release read in a different timezone. Borg 2.0 has been in beta for years and the newest prerelease is &lt;strong>2.0.0b21, published 2026-03-15&lt;/strong> — no release candidate, no stable 2.0 (&lt;a href="https://api.github.com/repos/borgbackup/borg/releases" rel="noopener">Borg releases API&lt;/a>). The project&amp;rsquo;s own release page tells you it is beta quality, for testing, and not to point it at production backup repositories (&lt;a href="https://github.com/borgbackup/borg/releases/tag/2.0.0b21" rel="noopener">2.0.0b21 release notes&lt;/a>).&lt;/p>
&lt;p>Community reports corroborate the cost of ignoring that. At least one r/selfhosted user upgraded to a Borg 2 beta and got stranded on a repository that was neither forward nor backward compatible; another user corrected the thread by pointing out the betas are not compatible with each other. Treat that as anecdote, not spec — the official warning says only &amp;ldquo;not for production,&amp;rdquo; not that the betas are mutually incompatible — but it lines up with the direction of that warning.&lt;/p>
&lt;p>restic 0.19.1 (2026-07-05) and Kopia 0.23.1 (2026-06-16) are both on normal release cadences. The Kopia release is a bugfix for a rare race condition that could cause data loss, which is a reason to be current rather than a reason to avoid it.&lt;/p>
&lt;h2 id="what-the-benchmarks-actually-show-and-what-they-dont">What the benchmarks actually show (and what they don&amp;rsquo;t)&lt;/h2>
&lt;p>Thin, and contradictory. Here is everything credible we found.&lt;/p>
&lt;p>&lt;strong>deajan/backup-bench&lt;/strong> is the only reproducible-by-design suite, but it is stale — last updated 2022-10-03. Dataset: Linux kernel sources checked out at v5.19 then v5.18, 4.18 and v3.10, with the initial git directory at 4.1 GB across 5,039 directories and 76,951 files. Source host a Xeon E3-1275 with 64 GB RAM on XFS; remote target an AMD Turion II Neo N54L with 6 GB RAM on ZFS+XFS. Local initial backup: Borg 1.2.2 at 41s / 257,300, restic 0.14.0 at 23s / 260,520, Kopia 0.12.0 at 10s / 259,780 (the README&amp;rsquo;s size column carries no unit, so we do not supply one). Remote restore: Borg 244s, restic 28s, Kopia 258s (&lt;a href="https://raw.githubusercontent.com/deajan/backup-bench/main/README.md" rel="noopener">backup-bench README&lt;/a>).&lt;/p>
&lt;p>&lt;strong>computingforgeeks&lt;/strong> is recent (updated 2026-03-31) and states its method — Ubuntu 24.04.4 LTS, 2 vCPU, 4 GB RAM, 30 GB SSD, BorgBackup 1.2.8, restic 0.16.4, Kopia 0.22.3, local filesystem repos, timed with &lt;code>/usr/bin/time -v&lt;/code>. First backup: Borg 7.81s, restic 8.10s, Kopia 4.65s. Incremental: Borg 0.70s, restic 0.81s, Kopia 0.28s. Restore: Borg 0.16s, restic 3.67s, Kopia 4.39s. Peak memory on first backup: Borg 75 MB, restic 111 MB, Kopia 176 MB (&lt;a href="https://computingforgeeks.com/borg-restic-kopia-comparison/" rel="noopener">computingforgeeks&lt;/a>). The dataset is 370 MB across 1,957 files — far too small to project onto a multi-terabyte homelab, and the tool versions already trail current releases.&lt;/p>
&lt;p>Those two sources &lt;strong>point in opposite directions on restore, and they are not measuring the same thing&lt;/strong>: one has restic restoring roughly 9x faster than Borg &lt;em>over a remote transport&lt;/em>, the other has Borg restoring roughly 23x faster than restic &lt;em>from a local repository&lt;/em>. Different transports, datasets and versions — which is exactly why neither settles the question. Restore speed is unsettled. Anyone who ranks these three tools on speed with confidence is reading one benchmark and ignoring the other.&lt;/p>
&lt;p>We also found a widely linked comparison publishing throughput figures like &amp;ldquo;180-220 MB/s&amp;rdquo; with no named author, no hardware spec, no tool versions and no reproducible commands. We are not citing it as evidence.&lt;/p>
&lt;h2 id="what-competing-guides-skip-our-angle">What competing guides skip (our angle)&lt;/h2>
&lt;p>&lt;strong>One.&lt;/strong> The compression correction, with the version. restic 0.14.0, 2022-08-25, repository format v2, five modes today. Stating &amp;ldquo;all three compress&amp;rdquo; is not enough — readers need to know their old repository needs &lt;code>migrate upgrade_repo_v2&lt;/code> plus &lt;code>prune&lt;/code>, and that after migration the repository only becomes readable by restic 0.14.0 or newer.&lt;/p>
&lt;p>&lt;strong>Two.&lt;/strong> The memory claims. The persistent line that restic&amp;rsquo;s RAM appetite makes it unsuitable for a small VPS traces to 2019-era write-ups that predate repository format v2 and compression entirely. restic&amp;rsquo;s official docs contain no RAM formula and no per-terabyte figure — only that limiting usable CPU cores slightly reduces memory use, that the backend can add a similar amount, and that temporary space equals the pack size multiplied by the number of backend connections plus one. Default pack size is 16 MiB, tunable with &lt;code>--pack-size&lt;/code> or &lt;code>$RESTIC_PACK_SIZE&lt;/code>; larger packs mean fewer files in the repository and better upload performance (&lt;a href="https://restic.readthedocs.io/en/stable/047_tuning_parameters.html" rel="noopener">restic tuning docs&lt;/a>). Borg&amp;rsquo;s guidance is equally qualitative: have enough RAM for the repository index, chunks cache and files cache. Nobody publishes numbers. Treat the 111 MB / 75 MB / 176 MB peaks above as one 370 MB test, not as a spec.&lt;/p>
&lt;p>&lt;strong>Three.&lt;/strong> Plenty of people don&amp;rsquo;t run these bare. In the r/selfhosted threads we read, Backrest (a restic wrapper) is the single most-recommended answer, with autorestic and borgmatic close behind, and Vorta as the Borg desktop GUI. Comparing only the three binaries misses a layer that a lot of real deployments actually have. That is community sentiment from two 2024 threads with a small, self-selected sample — corroborate before betting on it — but it matches how homelabs actually look.&lt;/p>
&lt;p>&lt;strong>Four.&lt;/strong> Cloud egress. Kopia&amp;rsquo;s periodic maintenance reads from the repository. On a provider that charges for egress, that is a recurring line item nobody puts in the feature grid. Community-reported, not vendor-documented, but easy to verify against your own bill.&lt;/p>
&lt;p>&lt;strong>Five.&lt;/strong> Kopia&amp;rsquo;s honesty about its own encryption is a decent signal of doc quality: AES-256 and ChaCha20, with a footnote that the marketing term for this arrangement is imprecise (&lt;a href="https://kopia.io/docs/features/" rel="noopener">Kopia features&lt;/a>). Kopia also scopes compression per policy — algorithm, minimum and maximum file size, and which extensions to compress — rather than one global setting (&lt;a href="https://kopia.io/docs/advanced/compression/" rel="noopener">Kopia compression docs&lt;/a>). For a laptop full of already-compressed media next to a server full of text logs, that is the more precise control.&lt;/p>
&lt;p>&lt;strong>Our call.&lt;/strong> Two of these are close enough that the tiebreaker has to be named honestly rather than asserted.&lt;/p>
&lt;p>&lt;em>Bucket destination, command-line comfortable, mixed OS:&lt;/em> &lt;strong>restic&lt;/strong> — not because Kopia can&amp;rsquo;t do it, but because restic&amp;rsquo;s single-binary, one-flag operation has less surface to learn and its VSS handling on Windows is documented in more depth. If you would rather have a GUI and per-policy control than a smaller CLI, Kopia is the better fit for the same job, and calling it a tie would be fair.&lt;/p>
&lt;p>&lt;em>Bucket destination, non-technical users or desktops to cover:&lt;/em> &lt;strong>Kopia&lt;/strong> — KopiaUI is the only official GUI of the three, and per-policy compression means one repository can hold a media laptop and a log server without compromise.&lt;/p>
&lt;p>&lt;em>SSH destination you fully control:&lt;/em> &lt;strong>Borg 1.4.5&lt;/strong> — not 2.0. Be precise about why: Borg has the widest choice of compression &lt;em>algorithms&lt;/em> (including &lt;code>obfuscate&lt;/code>, which nothing else advertises), while Kopia has the finest compression &lt;em>scoping&lt;/em> (per policy, by file size and extension). Those are different axes. Pick Borg for the algorithm menu and the SSH-native design, not on a general &amp;ldquo;most control&amp;rdquo; claim. And whichever you pick, the tool that matters is the one that restores — in the threads we read, the single most-cited reason people arrive at all three is a Duplicati restore that failed when it was needed.&lt;/p>
&lt;p>Backups are a layer, not a product, and &lt;a href="https://techfuelhq.com/homelab/3-2-1-backup-rule-homelab-2026/">the 3-2-1 backup rule&lt;/a> is the strategy that layer serves — three copies, two devices, one off-site, and RAID is none of them. Snapshots on the source and a proper 3-2-1 target are separate jobs — see &lt;a href="https://techfuelhq.com/tutorials/sanoid-syncoid-zfs-snapshots-2026/">Sanoid and Syncoid for ZFS snapshots&lt;/a> and &lt;a href="https://techfuelhq.com/tutorials/proxmox-backup-server-3-2-1-2026/">Proxmox Backup Server in a 3-2-1 layout&lt;/a>.&lt;/p>
&lt;h2 id="related-reading">Related reading&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/3-2-1-backup-rule-homelab-2026/">The 3-2-1 backup rule for homelabs&lt;/a> — the strategy this tool choice serves: three copies, two devices, one off-site&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/automated-offsite-backups-restic-2026/">Automated offsite backups with restic&lt;/a> — our step-by-step restic setup, including repository format v2 and retention&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/vaultwarden-vs-bitwarden-2026/">Vaultwarden vs Bitwarden&lt;/a> — your password vault is the first thing that belongs in these backups&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/proxmox-backup-server-3-2-1-2026/">Proxmox Backup Server in a 3-2-1 layout&lt;/a> — where a file-level tool fits next to VM-level backup&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/sanoid-syncoid-zfs-snapshots-2026/">Sanoid and Syncoid for ZFS snapshots&lt;/a> — snapshot layer under any of these three&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/best-nas-hard-drives-2026/">Best NAS hard drives&lt;/a> — the drives your SSH-reachable repository should live on&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/proxmox-truenas-unraid-storage-backend-2026/">Proxmox vs TrueNAS vs Unraid as a storage backend&lt;/a> — picking the box that hosts the repository&lt;/li>
&lt;/ul>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://github.com/restic/restic/releases/tag/v0.14.0" rel="noopener">https://github.com/restic/restic/releases/tag/v0.14.0&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://raw.githubusercontent.com/restic/restic/master/CHANGELOG.md" rel="noopener">https://raw.githubusercontent.com/restic/restic/master/CHANGELOG.md&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://restic.readthedocs.io/en/stable/030_preparing_a_new_repo.html" rel="noopener">https://restic.readthedocs.io/en/stable/030_preparing_a_new_repo.html&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://restic.readthedocs.io/en/stable/040_backup.html" rel="noopener">https://restic.readthedocs.io/en/stable/040_backup.html&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://restic.readthedocs.io/en/stable/045_working_with_repos.html" rel="noopener">https://restic.readthedocs.io/en/stable/045_working_with_repos.html&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://restic.readthedocs.io/en/stable/047_tuning_parameters.html" rel="noopener">https://restic.readthedocs.io/en/stable/047_tuning_parameters.html&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://restic.net/" rel="noopener">https://restic.net/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://api.github.com/repos/restic/restic/releases/latest" rel="noopener">https://api.github.com/repos/restic/restic/releases/latest&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://borgbackup.readthedocs.io/en/stable/quickstart.html" rel="noopener">https://borgbackup.readthedocs.io/en/stable/quickstart.html&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://borgbackup.readthedocs.io/en/stable/installation.html" rel="noopener">https://borgbackup.readthedocs.io/en/stable/installation.html&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://borgbackup.readthedocs.io/en/stable/faq.html" rel="noopener">https://borgbackup.readthedocs.io/en/stable/faq.html&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://borgbackup.readthedocs.io/en/stable/usage/help.html" rel="noopener">https://borgbackup.readthedocs.io/en/stable/usage/help.html&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://borgbackup.readthedocs.io/en/stable/usage/mount.html" rel="noopener">https://borgbackup.readthedocs.io/en/stable/usage/mount.html&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://api.github.com/repos/borgbackup/borg/releases" rel="noopener">https://api.github.com/repos/borgbackup/borg/releases&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/borgbackup/borg/releases/tag/2.0.0b21" rel="noopener">https://github.com/borgbackup/borg/releases/tag/2.0.0b21&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://kopia.io/docs/repositories/" rel="noopener">https://kopia.io/docs/repositories/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://kopia.io/docs/features/" rel="noopener">https://kopia.io/docs/features/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://kopia.io/docs/advanced/compression/" rel="noopener">https://kopia.io/docs/advanced/compression/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://kopia.io/docs/installation/" rel="noopener">https://kopia.io/docs/installation/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://api.github.com/repos/kopia/kopia/releases/latest" rel="noopener">https://api.github.com/repos/kopia/kopia/releases/latest&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://raw.githubusercontent.com/deajan/backup-bench/main/README.md" rel="noopener">https://raw.githubusercontent.com/deajan/backup-bench/main/README.md&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/deajan/backup-bench" rel="noopener">https://github.com/deajan/backup-bench&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://computingforgeeks.com/borg-restic-kopia-comparison/" rel="noopener">https://computingforgeeks.com/borg-restic-kopia-comparison/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.reddit.com/r/selfhosted/comments/1dc0lv0/torn_between_restic_and_borg/" rel="noopener">https://www.reddit.com/r/selfhosted/comments/1dc0lv0/torn_between_restic_and_borg/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.reddit.com/r/selfhosted/comments/1c0pj9r/shoutout_for_restic_and_kopia_as_backup_solutions/" rel="noopener">https://www.reddit.com/r/selfhosted/comments/1c0pj9r/shoutout_for_restic_and_kopia_as_backup_solutions/&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Vaultwarden vs Bitwarden: Which Self-Hosted Server?</title><link>https://techfuelhq.com/homelab/vaultwarden-vs-bitwarden-2026/</link><pubDate>Tue, 21 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/homelab/vaultwarden-vs-bitwarden-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-07-21 · Updated 2026-07-21 · ~10 min read · St. Louis County, MO&lt;/p>
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p>&lt;strong>TL;DR · One client, three servers&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Vaultwarden and Bitwarden are not rival apps. You run the same official Bitwarden extension, desktop and mobile clients against a different backend.&lt;/li>
&lt;li>There are three server shapes, not two: Bitwarden &lt;em>standard&lt;/em> (eleven Docker containers, documented 2GB minimum / 4GB recommended RAM, 12GB minimum storage), Bitwarden &lt;em>lite&lt;/em> (1 container, 200MB RAM, SQLite, ARM), and Vaultwarden (1 Rust container, no published hardware spec at all).&lt;/li>
&lt;li>What you give up with Vaultwarden: SAML SSO, SCIM, custom roles, several enterprise policies, passkey login, and vendor support. What you gain for free: Emergency Access and Directory Connector support.&lt;/li>
&lt;li>Security is a trade, not a win: smaller surface and two published 2024 audits on one side, SOC 2 Type II / SOC 3 / ISO 27001 and yearly named third-party audits on the other. Those are &lt;strong>vendor&lt;/strong> attestations — self-hosting does not inherit them.&lt;/li>
&lt;li>Running official clients against an unofficial backend is a standing commitment: Bitwarden does not guarantee the pairing, so pin your client versions, test updates before rolling them out, and keep a rollback path.&lt;/li>
&lt;/ul>
&lt;p>&lt;em>Note on sources: every figure below is pulled from vendor documentation, repository files or project wikis current as of 2026-07-20. Versions and requirements move; the Sources list at the bottom is the canonical set to re-check before you build.&lt;/em>&lt;/p>
&lt;/div>
&lt;img src="https://techfuelhq.com/images/homelab/vaultwarden-vs-bitwarden-2026.svg" width="1200" height="760" loading="lazy" decoding="async" alt="Side-by-side architecture diagram showing identical Bitwarden browser, desktop and mobile clients connecting to two different backends: an official Bitwarden standard deployment made of eleven Docker containers including MSSQL, nginx, api, identity and sso, versus a single Vaultwarden Rust container with an embedded SQLite database behind a reverse proxy." style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;h2 id="the-short-version">The short version&lt;/h2>
&lt;p>The reason the vaultwarden vs bitwarden question feels unanswerable on most sites is that it is framed wrong. These are not two password managers. Vaultwarden is described by its own README as &amp;ldquo;an alternative server implementation of the Bitwarden Client API, written in Rust and compatible with official Bitwarden clients&amp;rdquo; (&lt;a href="https://raw.githubusercontent.com/dani-garcia/vaultwarden/main/README.md" rel="noopener">README&lt;/a>). You install the exact same Bitwarden browser extension and phone app in both cases. The only thing you are choosing is which server those clients sync against, and therefore what that server costs you in RAM, features, licensing and personal responsibility.&lt;/p>
&lt;h2 id="same-clients-different-server">Same clients, different server&lt;/h2>
&lt;p>Hold this straight and everything else falls into place. Vaultwarden even ships a patched build of Bitwarden&amp;rsquo;s own web vault rather than writing its own, and the project states plainly it is &amp;ldquo;not associated with, endorsed by, or affiliated with Bitwarden, Inc.&amp;rdquo; with &amp;ldquo;no collaboration&amp;rdquo; between the two (&lt;a href="https://github.com/dani-garcia/vaultwarden/wiki/FAQs" rel="noopener">Vaultwarden FAQs&lt;/a>). Bitwarden&amp;rsquo;s side of that non-relationship is documented too: it &amp;ldquo;cannot guarantee that official clients will work perfectly with non-official servers,&amp;rdquo; and says its support may be limited in helping with client issues on a non-official server (&lt;a href="https://bitwarden.com/help/hosting-faqs/" rel="noopener">Bitwarden hosting FAQs&lt;/a>).&lt;/p>
&lt;p>That cuts both directions. The Vaultwarden wiki warns that filing a client bug on a Bitwarden repository will most likely be closed on the grounds that they do not support alternative servers (&lt;a href="https://raw.githubusercontent.com/wiki/dani-garcia/vaultwarden/Bitwarden-clients-troubleshooting.md" rel="noopener">client troubleshooting&lt;/a>), and the README carries a bolded instruction to report everything to Vaultwarden instead, whatever client you are on. Choosing Vaultwarden means accepting that you are now the integration point between two projects that do not talk to each other.&lt;/p>
&lt;p>That has a practical cost worth planning for rather than discovering. Client compatibility is not a contract — it is a property that has held well in practice because Vaultwarden tracks the client API closely, but nothing obliges Bitwarden to preserve it across a client or API change. Treat client updates the way you would treat any dependency you do not control: pin the versions your household actually runs, let a new browser-extension or mobile release sit for a few days before you push it to everyone, keep a Vaultwarden release you know works, and make sure your export is current before any upgrade on either side. None of that is onerous. It is simply the maintenance you took on in exchange for the single container.&lt;/p>
&lt;h2 id="the-resource-gap-is-the-real-decision">The resource gap is the real decision&lt;/h2>
&lt;p>Bitwarden&amp;rsquo;s own blog says it directly: the lite route deploys a single container, where the standard deployment uses eleven different Docker containers (&lt;a href="https://bitwarden.com/blog/new-deployment-option-for-self-hosting-bitwarden/" rel="noopener">Bitwarden blog&lt;/a>). Reading the current setup template, the eleven that blog post refers to are &lt;code>mssql&lt;/code> (emitted only when the built-in SQL Server is enabled), &lt;code>web&lt;/code>, &lt;code>attachments&lt;/code>, &lt;code>api&lt;/code>, &lt;code>identity&lt;/code>, &lt;code>sso&lt;/code>, &lt;code>admin&lt;/code>, &lt;code>icons&lt;/code>, &lt;code>notifications&lt;/code>, &lt;code>events&lt;/code> and &lt;code>nginx&lt;/code>, plus two feature-flagged services, &lt;code>key-connector&lt;/code> and &lt;code>scim&lt;/code> (&lt;a href="https://raw.githubusercontent.com/bitwarden/server/main/util/Setup/Templates/DockerCompose.hbs" rel="noopener">DockerCompose.hbs&lt;/a>).&lt;/p>
&lt;p>Documented minimums for that standard Linux deployment are an x64 1.4GHz processor, 2GB RAM and 12GB storage, with 2GHz dual core, 4GB RAM and 25GB recommended, on Docker Engine 26+ (&lt;a href="https://bitwarden.com/help/install-on-premise-linux/" rel="noopener">install on-premise Linux&lt;/a>). It ships an MSSQL Express image with a 10GB maximum database size, and a standard deployment can be pointed at an external database instead of the bundled one — but SQLite, PostgreSQL and MySQL/MariaDB are documented only for lite (&lt;a href="https://bitwarden.com/help/install-and-deploy-lite/" rel="noopener">lite docs&lt;/a>).&lt;/p>
&lt;p>Vaultwarden is one container, and since 1.17.0 a single unified image covers SQLite, MySQL and PostgreSQL, in Debian and slimmer Alpine variants across x86_64, armv6, armv7 and aarch64 (&lt;a href="https://github.com/dani-garcia/vaultwarden/wiki/Which-container-image-to-use" rel="noopener">image guide&lt;/a>). Here is the honest gap: &lt;strong>Vaultwarden publishes no minimum hardware table at all.&lt;/strong> As of 2026-07-20 the wiki index carries no hardware-requirements page. The only numbers available are forum posts, and they should be labelled as such. Collaborator BlackDex suggested 2 vCPUs and 1GB of memory with storage sized to attachments, and noted that in theory Vaultwarden can run on well under 100MB by itself (&lt;a href="https://vaultwarden.discourse.group/t/hardware-requirements/3273" rel="noopener">forum&lt;/a>). In a separate discussion the same collaborator put a single core at &amp;ldquo;probably fine&amp;rdquo; without heavy load, one user reported 512MB working, and another warned that 1GB &amp;ldquo;could become a problem&amp;rdquo; if you build the container yourself (&lt;a href="https://github.com/dani-garcia/vaultwarden/discussions/2903" rel="noopener">discussion 2903&lt;/a>). Treat those as community opinion, not specification.&lt;/p>
&lt;p>Practically, that footprint is why Vaultwarden lands on a Pi or a small node next to everything else. If you are sizing that box, the same reasoning we used for &lt;a href="https://techfuelhq.com/homelab/best-mini-pc-home-assistant-2026/">picking a mini PC for Home Assistant&lt;/a> applies to any small always-on server, and our &lt;a href="https://techfuelhq.com/tutorials/vaultwarden-proxmox-2026/">Vaultwarden on Proxmox setup guide&lt;/a> walks the LXC-and-reverse-proxy build end to end.&lt;/p>
&lt;h2 id="head-to-head">Head to head&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Dimension&lt;/th>
&lt;th scope="col">Bitwarden self-hosted (standard)&lt;/th>
&lt;th scope="col">Bitwarden lite&lt;/th>
&lt;th scope="col">Vaultwarden&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Containers&lt;/td>
&lt;td>11 base (+2 conditional: key-connector, scim)&lt;/td>
&lt;td>1&lt;/td>
&lt;td>1&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Min RAM (documented)&lt;/td>
&lt;td>2GB (rec. 4GB)&lt;/td>
&lt;td>200 MB&lt;/td>
&lt;td>not documented&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Min storage (documented)&lt;/td>
&lt;td>12GB (rec. 25GB)&lt;/td>
&lt;td>1GB&lt;/td>
&lt;td>not documented&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Min CPU (documented)&lt;/td>
&lt;td>x64 1.4GHz (rec. 2GHz dual core)&lt;/td>
&lt;td>not stated&lt;/td>
&lt;td>not documented&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Database&lt;/td>
&lt;td>MSSQL (bundled Express or external)&lt;/td>
&lt;td>MSSQL / PostgreSQL / SQLite / MySQL-MariaDB&lt;/td>
&lt;td>SQLite / MySQL / PostgreSQL&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ARM / Raspberry Pi&lt;/td>
&lt;td>no — x64 required&lt;/td>
&lt;td>yes&lt;/td>
&lt;td>yes (multi-arch)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Vendor stance on business use&lt;/td>
&lt;td>no personal-use restriction stated&lt;/td>
&lt;td>&amp;ldquo;not for use in business contexts&amp;rdquo;&lt;/td>
&lt;td>individuals, families, smaller organizations&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>SCIM&lt;/td>
&lt;td>yes (Teams/Enterprise)&lt;/td>
&lt;td>n/a&lt;/td>
&lt;td>not documented as supported&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>SSO&lt;/td>
&lt;td>yes (Enterprise, &lt;code>/bitwarden_license&lt;/code>)&lt;/td>
&lt;td>n/a&lt;/td>
&lt;td>OIDC only, master password still required&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Emergency Access&lt;/td>
&lt;td>premium / paid org only&lt;/td>
&lt;td>premium&lt;/td>
&lt;td>included&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Vendor compliance attestations&lt;/td>
&lt;td>SOC 2 Type II, SOC 3, ISO 27001, HIPAA&lt;/td>
&lt;td>same&lt;/td>
&lt;td>none claimed&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Audits&lt;/td>
&lt;td>annual third-party, named firms 2018–2025&lt;/td>
&lt;td>same&lt;/td>
&lt;td>BSI CAOS (v1.30.3, Oct 2024), ERNW pentest (Oct 2024)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>License&lt;/td>
&lt;td>AGPL-3.0 + Bitwarden License for &lt;code>/bitwarden_license&lt;/code>&lt;/td>
&lt;td>same&lt;/td>
&lt;td>AGPL-3.0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Latest verified version&lt;/td>
&lt;td>v2026.6.2 (2026-07-08)&lt;/td>
&lt;td>same repo&lt;/td>
&lt;td>1.36.0 (2026-05-03)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Version data is from the GitHub release APIs for &lt;a href="https://api.github.com/repos/bitwarden/server/releases/latest" rel="noopener">bitwarden/server&lt;/a> and &lt;a href="https://api.github.com/repos/dani-garcia/vaultwarden/releases/latest" rel="noopener">dani-garcia/vaultwarden&lt;/a>.&lt;/p>
&lt;h2 id="what-you-actually-give-up">What you actually give up&lt;/h2>
&lt;p>Vaultwarden&amp;rsquo;s supported list is longer than most comparisons admit: organization vaults, groups, collections, event logs, attachments, TOTP, Bitwarden Send, trash, master password re-prompt, personal API keys, 2FA via email, Duo, YubiKey, FIDO2 WebAuthn and authenticator apps, WebSocket live sync, admin account recovery, and a subset of enterprise policies (&lt;a href="https://raw.githubusercontent.com/wiki/dani-garcia/vaultwarden/Home.md" rel="noopener">wiki Home&lt;/a>).&lt;/p>
&lt;p>The gaps are specific. Login with Passkeys, New Device Login Protection and the full Bitwarden Public API / Organization API key sit under &amp;ldquo;may be added over time,&amp;rdquo; with the public API only partially implemented. Custom roles and the require-SSO-authentication, vault-timeout and remove-individual-vault-export policies are &amp;ldquo;unlikely to be added without external contribution.&amp;rdquo; SSO is OpenID Connect only, with no SAML, and carries real caveats: &amp;ldquo;a master password will still be required and not controlled by the SSO,&amp;rdquo; signup is blocked when the provider reports an unverified email, and Auth0 is documented as not working because it &amp;ldquo;appear[s] not to follow the spec&amp;rdquo; (&lt;a href="https://github.com/dani-garcia/vaultwarden/wiki/Enabling-SSO-support-using-OpenId-Connect" rel="noopener">SSO wiki&lt;/a>). Authentik is on the documented provider list, so if you already run our &lt;a href="https://techfuelhq.com/tutorials/authentik-sso-self-hosted-2026/">Authentik SSO build&lt;/a> the OIDC path is realistic.&lt;/p>
&lt;p>SCIM is the one to phrase carefully. It appears in neither the supported nor the not-implemented list, and no SCIM page appears in the wiki index as of 2026-07-20, so the correct statement is &amp;ldquo;not documented as supported,&amp;rdquo; not &amp;ldquo;explicitly unsupported.&amp;rdquo; On the official side, SCIM v2 and Directory Connector are both Teams/Enterprise features (&lt;a href="https://bitwarden.com/help/about-scim/" rel="noopener">SCIM&lt;/a>, &lt;a href="https://bitwarden.com/help/directory-sync/" rel="noopener">Directory Connector&lt;/a>).&lt;/p>
&lt;p>Two things run the other way. Emergency Access is included in Vaultwarden but is premium or paid-organization only on official Bitwarden (&lt;a href="https://bitwarden.com/help/emergency-access/" rel="noopener">Emergency Access&lt;/a>). Directory Connector is listed as supported against Vaultwarden despite being Teams/Enterprise-gated upstream. Maintainer jjlin&amp;rsquo;s summary of getting enterprise features free is &amp;ldquo;Some, but not all,&amp;rdquo; alongside a warning about third-party projects that bypass Bitwarden&amp;rsquo;s license checks: &amp;ldquo;it seems almost certain that they&amp;rsquo;re breaking the terms of Bitwarden&amp;rsquo;s licenses&amp;rdquo; (&lt;a href="https://github.com/dani-garcia/vaultwarden/discussions/4132" rel="noopener">discussion 4132&lt;/a>).&lt;/p>
&lt;h2 id="the-licensing-detail-people-miss">The licensing detail people miss&lt;/h2>
&lt;p>Self-hosting Bitwarden is free, but &amp;ldquo;some features must be unlocked in your self-hosted instance with a registered license file,&amp;rdquo; and that license file comes from the Bitwarden-hosted web app via a premium subscription or an organization owner (&lt;a href="https://bitwarden.com/help/licensing-on-premise/" rel="noopener">licensing&lt;/a>). Only Families and Enterprise organizations can be imported to self-hosted servers, organizations must first be created in the cloud web vault for billing, and license sync requires &lt;code>globalSettings__enableCloudCommunication=true&lt;/code> (&lt;a href="https://bitwarden.com/help/self-host-an-organization/" rel="noopener">self-host an organization&lt;/a>). An installation ID and key from bitwarden.com/host are mandatory either way. At the source level, files under &lt;code>/bitwarden_license&lt;/code> (Commercial.Core, SSO) are not AGPL and production use requires a paid subscription (&lt;a href="https://raw.githubusercontent.com/bitwarden/server/main/LICENSE_FAQ.md" rel="noopener">LICENSE_FAQ&lt;/a>). Vaultwarden is AGPL-3.0 throughout (&lt;a href="https://api.github.com/repos/dani-garcia/vaultwarden" rel="noopener">repo metadata&lt;/a>).&lt;/p>
&lt;h2 id="the-security-trade">The security trade&lt;/h2>
&lt;p>Bitwarden&amp;rsquo;s white paper documents a dedicated security engineering team, SOC 2 Type II and SOC 3 renewed annually, ISO 27001, third-party reviews at least once per year, AES-CBC 256-bit with HMAC, and a PBKDF2 SHA-256 default of 600,000 iterations with optional Argon2id (&lt;a href="https://bitwarden.com/help/bitwarden-security-white-paper/" rel="noopener">white paper&lt;/a>). HIPAA is claimed separately, with annual third-party audits against the Security Rule (&lt;a href="https://bitwarden.com/compliance/" rel="noopener">compliance&lt;/a>) — worth noting because the white paper itself does not mention it.&lt;/p>
&lt;p>One thing to be clear about, because it is the most expensive misreading in this whole comparison: &lt;strong>those are attestations about Bitwarden the vendor and its hosted service, not about your server.&lt;/strong> Standing up the official code on your own hardware does not make your deployment SOC 2 or ISO 27001 compliant, and it does not make it HIPAA compliant. Compliance follows the controls you operate and the scope an auditor agrees to — your encryption at rest, your access control, your logging, your business-associate agreements. What the official server buys you is a vendor with attestations you can reference and a support contract to point at. The audit scope is still yours to earn. The audit page names firms by year, including a 2025 cryptography report from the Applied Cryptography Group at ETH Zurich, 2025 mobile work by Unit 42, and multiple Cure53 engagements back to 2018 (&lt;a href="https://bitwarden.com/help/is-bitwarden-audited/" rel="noopener">audits&lt;/a>).&lt;/p>
&lt;p>Vaultwarden&amp;rsquo;s counter is a smaller surface and real audit history. Two published reviews from October 2024: the German BSI&amp;rsquo;s CAOS code audit of v1.30.3, and an ERNW penetration test that &amp;ldquo;identified 3 vulnerabilities, including an authentication bypass,&amp;rdquo; responsibly disclosed (&lt;a href="https://github.com/dani-garcia/vaultwarden/wiki/Audits" rel="noopener">audits wiki&lt;/a>). Release 1.36.0 shipped fixes for SSO login CSRF, user and organization enumeration, SSO existing-user binding, and SSRF via the icon endpoint (&lt;a href="https://github.com/dani-garcia/vaultwarden/releases" rel="noopener">releases&lt;/a>) — evidence of an active response process, not of an absence of bugs.&lt;/p>
&lt;p>The burden shifts to you. The hardening guide states that Rocket&amp;rsquo;s built-in TLS is &amp;ldquo;intended for development use only&amp;rdquo; and not production-ready, so a reverse proxy is required for any public instance, and it recommends disabling registration, running containers as non-root, minimal volume mounts and fail2ban (&lt;a href="https://github.com/dani-garcia/vaultwarden/wiki/Hardening-Guide" rel="noopener">hardening guide&lt;/a>). One proxy gotcha: the WebSocket library does not honour X-Forwarded-For or Forwarded headers in any form (&lt;a href="https://github.com/dani-garcia/vaultwarden/wiki/FAQs" rel="noopener">FAQs&lt;/a>). Pick your proxy with that in mind — our &lt;a href="https://techfuelhq.com/homelab/caddy-vs-nginx-proxy-manager-vs-traefik-2026/">Caddy vs Nginx Proxy Manager vs Traefik comparison&lt;/a> covers the trade-offs. And take the README&amp;rsquo;s disclaimer literally: the project &amp;ldquo;cannot be held liable for any data loss,&amp;rdquo; and recommends regular backups. Encrypted offsite copies are the minimum bar for a password database — our &lt;a href="https://techfuelhq.com/tutorials/automated-offsite-backups-restic-2026/">restic setup walk-through&lt;/a> is the fastest path there, and if you have not picked a tool yet, &lt;a href="https://techfuelhq.com/homelab/restic-vs-borg-vs-kopia-2026/">restic vs Borg vs Kopia&lt;/a> settles it by where the backup lands.&lt;/p>
&lt;h2 id="mobile-push-is-the-sneaky-gotcha">Mobile push is the sneaky gotcha&lt;/h2>
&lt;p>Push notifications have worked since Vaultwarden 1.29.0, but they require an official Bitwarden installation ID and key from bitwarden.com/host, and they will not work with Bitwarden apps installed from F-Droid, Neo Store or other alternative stores, because those builds ship without Firebase Messaging support. The client also needs &lt;code>firebaseinstallations.googleapis.com&lt;/code> reachable, apps connected before v1.30.2 must clear data or reinstall, and EU and US regions need different relay and identity URIs (&lt;a href="https://raw.githubusercontent.com/wiki/dani-garcia/vaultwarden/Enabling-Mobile-Client-push-notification.md" rel="noopener">push wiki&lt;/a>). If your reason for self-hosting is to stay off Google services, that constraint deserves to be in the decision, not discovered afterward.&lt;/p>
&lt;h2 id="run-vaultwarden-if--run-official-bitwarden-if">Run Vaultwarden if / run official Bitwarden if&lt;/h2>
&lt;p>&lt;strong>Run Vaultwarden&lt;/strong> if you are one person, a family, or a small team; your hardware is a mini PC, a Pi or a modest VM; you want SQLite and a single container; you want Emergency Access without a subscription; and you accept full ownership of TLS, hardening, updates and backups. The project scopes itself the same way, targeting &amp;ldquo;individuals, families, and smaller organizations.&amp;rdquo; Community sizing is unremarkable at this scale — one contributor reported it running well on a Raspberry Pi and put 25 users comfortably inside its range, for a workload that mostly idles between syncs (&lt;a href="https://vaultwarden.discourse.group/t/cpu-ram-recommendations-for-vaultwarden/1566" rel="noopener">forum&lt;/a>).&lt;/p>
&lt;p>&lt;strong>Run official Bitwarden (standard)&lt;/strong> if you need SAML SSO, SCIM provisioning, custom roles, Key Connector, vendor support, or a compliance answer for an auditor; if you can supply 4GB RAM and 25GB storage comfortably; and if you would rather pay for a license file than own the incident. The community framing matches — the recurring argument for the official server is simply preferring to let Bitwarden maintain the infrastructure (&lt;a href="https://community.bitwarden.com/t/bitwarden-vs-vaultwarden/15382" rel="noopener">Bitwarden forums&lt;/a>).&lt;/p>
&lt;p>&lt;strong>Consider Bitwarden lite&lt;/strong> if you want the official codebase on Vaultwarden-class hardware: 1 container, at least 200MB RAM, 1GB storage, SQLite or PostgreSQL or MySQL, ARM supported. The catch is written into the docs: lite &amp;ldquo;is intended for personal use and home-labs, not for use in business contexts.&amp;rdquo;&lt;/p>
&lt;h2 id="what-competing-guides-skip-our-angle">What competing guides skip (our angle)&lt;/h2>
&lt;p>Four things almost never make it into other comparisons.&lt;/p>
&lt;p>First, &lt;strong>Bitwarden lite narrows the old resource argument for personal use.&lt;/strong> Most articles still compare Vaultwarden against the eleven-container stack, which has not been the only official option for a while. For a homelab, 1 container at 200MB is a genuinely competitive official answer. It does not erase the case for Vaultwarden, though — lite is scoped out of business use by its own docs, it does not close the Emergency-Access-for-free gap, and Vaultwarden still carries the broader multi-arch story. What changes is that &amp;ldquo;eleven containers&amp;rdquo; is no longer a reason on its own.&lt;/p>
&lt;p>Second, &lt;strong>the &amp;ldquo;Vaultwarden has never been audited&amp;rdquo; claim is stale.&lt;/strong> It traces to a 2022 community post and is contradicted by the 2024 BSI and ERNW work. Repeating it in 2026 is simply wrong.&lt;/p>
&lt;p>Third, &lt;strong>Vaultwarden&amp;rsquo;s own scope statement contradicts its feature list.&lt;/strong> The wiki says development of features &amp;ldquo;mainly useful to larger organizations (e.g., single sign-on, directory syncing, etc.) is not a priority&amp;rdquo; while the same page lists OIDC SSO and Directory Connector as implemented. Read that as positioning and prioritization, not as a current feature gap.&lt;/p>
&lt;p>Fourth, &lt;strong>one Bitwarden doc inconsistency is worth flagging rather than papering over.&lt;/strong> The self-hosting page says only Families and Enterprise organizations can be imported to self-hosted servers, yet Teams is listed as eligible for both SCIM and Directory Connector. We could not resolve that from the docs, so treat Teams self-hosting as unverified and confirm with Bitwarden before planning around it. We also verified no pricing figures for this article, so none appear here.&lt;/p>
&lt;h2 id="related-reading">Related reading&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/vaultwarden-proxmox-2026/">Vaultwarden on Proxmox: full setup guide&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/authentik-sso-self-hosted-2026/">Self-hosted SSO with Authentik&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/authelia-vs-authentik-2026/">Authelia vs Authentik: which self-hosted SSO&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/caddy-vs-nginx-proxy-manager-vs-traefik-2026/">Caddy vs Nginx Proxy Manager vs Traefik&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/automated-offsite-backups-restic-2026/">Automated offsite backups with restic&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/restic-vs-borg-vs-kopia-2026/">restic vs Borg vs Kopia: which backup tool&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/best-mini-pc-home-assistant-2026/">Best mini PC for Home Assistant&lt;/a> — the sizing logic for any small always-on box&lt;/li>
&lt;/ul>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://bitwarden.com/blog/new-deployment-option-for-self-hosting-bitwarden/" rel="noopener">https://bitwarden.com/blog/new-deployment-option-for-self-hosting-bitwarden/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://bitwarden.com/blog/lightweight-and-flexible-bitwarden-lite-self-host-deployment/" rel="noopener">https://bitwarden.com/blog/lightweight-and-flexible-bitwarden-lite-self-host-deployment/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://raw.githubusercontent.com/bitwarden/server/main/util/Setup/Templates/DockerCompose.hbs" rel="noopener">https://raw.githubusercontent.com/bitwarden/server/main/util/Setup/Templates/DockerCompose.hbs&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://raw.githubusercontent.com/bitwarden/server/main/LICENSE_FAQ.md" rel="noopener">https://raw.githubusercontent.com/bitwarden/server/main/LICENSE_FAQ.md&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://bitwarden.com/help/install-on-premise-linux/" rel="noopener">https://bitwarden.com/help/install-on-premise-linux/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://bitwarden.com/help/install-on-premise-manual/" rel="noopener">https://bitwarden.com/help/install-on-premise-manual/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://bitwarden.com/help/install-and-deploy-lite/" rel="noopener">https://bitwarden.com/help/install-and-deploy-lite/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://bitwarden.com/help/self-host-bitwarden/" rel="noopener">https://bitwarden.com/help/self-host-bitwarden/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://bitwarden.com/help/self-host-an-organization/" rel="noopener">https://bitwarden.com/help/self-host-an-organization/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://bitwarden.com/help/licensing-on-premise/" rel="noopener">https://bitwarden.com/help/licensing-on-premise/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://bitwarden.com/help/hosting-faqs/" rel="noopener">https://bitwarden.com/help/hosting-faqs/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://bitwarden.com/help/directory-sync/" rel="noopener">https://bitwarden.com/help/directory-sync/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://bitwarden.com/help/about-scim/" rel="noopener">https://bitwarden.com/help/about-scim/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://bitwarden.com/help/emergency-access/" rel="noopener">https://bitwarden.com/help/emergency-access/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://bitwarden.com/help/bitwarden-security-white-paper/" rel="noopener">https://bitwarden.com/help/bitwarden-security-white-paper/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://bitwarden.com/help/is-bitwarden-audited/" rel="noopener">https://bitwarden.com/help/is-bitwarden-audited/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://bitwarden.com/compliance/" rel="noopener">https://bitwarden.com/compliance/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://api.github.com/repos/bitwarden/server/releases/latest" rel="noopener">https://api.github.com/repos/bitwarden/server/releases/latest&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://raw.githubusercontent.com/dani-garcia/vaultwarden/main/README.md" rel="noopener">https://raw.githubusercontent.com/dani-garcia/vaultwarden/main/README.md&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://api.github.com/repos/dani-garcia/vaultwarden" rel="noopener">https://api.github.com/repos/dani-garcia/vaultwarden&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://api.github.com/repos/dani-garcia/vaultwarden/releases/latest" rel="noopener">https://api.github.com/repos/dani-garcia/vaultwarden/releases/latest&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/dani-garcia/vaultwarden/releases" rel="noopener">https://github.com/dani-garcia/vaultwarden/releases&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/dani-garcia/vaultwarden/wiki" rel="noopener">https://github.com/dani-garcia/vaultwarden/wiki&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://raw.githubusercontent.com/wiki/dani-garcia/vaultwarden/Home.md" rel="noopener">https://raw.githubusercontent.com/wiki/dani-garcia/vaultwarden/Home.md&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/dani-garcia/vaultwarden/wiki/FAQs" rel="noopener">https://github.com/dani-garcia/vaultwarden/wiki/FAQs&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/dani-garcia/vaultwarden/wiki/Audits" rel="noopener">https://github.com/dani-garcia/vaultwarden/wiki/Audits&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/dani-garcia/vaultwarden/wiki/Hardening-Guide" rel="noopener">https://github.com/dani-garcia/vaultwarden/wiki/Hardening-Guide&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/dani-garcia/vaultwarden/wiki/Which-container-image-to-use" rel="noopener">https://github.com/dani-garcia/vaultwarden/wiki/Which-container-image-to-use&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/dani-garcia/vaultwarden/wiki/Enabling-SSO-support-using-OpenId-Connect" rel="noopener">https://github.com/dani-garcia/vaultwarden/wiki/Enabling-SSO-support-using-OpenId-Connect&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://raw.githubusercontent.com/wiki/dani-garcia/vaultwarden/Bitwarden-clients-troubleshooting.md" rel="noopener">https://raw.githubusercontent.com/wiki/dani-garcia/vaultwarden/Bitwarden-clients-troubleshooting.md&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://raw.githubusercontent.com/wiki/dani-garcia/vaultwarden/Enabling-Mobile-Client-push-notification.md" rel="noopener">https://raw.githubusercontent.com/wiki/dani-garcia/vaultwarden/Enabling-Mobile-Client-push-notification.md&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/dani-garcia/vaultwarden/discussions/4132" rel="noopener">https://github.com/dani-garcia/vaultwarden/discussions/4132&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/dani-garcia/vaultwarden/discussions/4580" rel="noopener">https://github.com/dani-garcia/vaultwarden/discussions/4580&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/dani-garcia/vaultwarden/discussions/2903" rel="noopener">https://github.com/dani-garcia/vaultwarden/discussions/2903&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://vaultwarden.discourse.group/t/hardware-requirements/3273" rel="noopener">https://vaultwarden.discourse.group/t/hardware-requirements/3273&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://vaultwarden.discourse.group/t/cpu-ram-recommendations-for-vaultwarden/1566" rel="noopener">https://vaultwarden.discourse.group/t/cpu-ram-recommendations-for-vaultwarden/1566&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://community.bitwarden.com/t/bitwarden-vs-vaultwarden/15382" rel="noopener">https://community.bitwarden.com/t/bitwarden-vs-vaultwarden/15382&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://community.bitwarden.com/t/can-a-self-hosted-instance-provide-free-account-hosting/40993" rel="noopener">https://community.bitwarden.com/t/can-a-self-hosted-instance-provide-free-account-hosting/40993&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Best Mini PC for Home Assistant (2026)</title><link>https://techfuelhq.com/homelab/best-mini-pc-home-assistant-2026/</link><pubDate>Mon, 20 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/homelab/best-mini-pc-home-assistant-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-07-20 · Updated 2026-07-20 · ~13 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence which products get recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR · Which mini PC for Home Assistant&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>Best pick for most people (new):&lt;/strong> an &lt;strong>Intel N100&lt;/strong> mini PC with 16GB RAM + an SSD (e.g. Beelink S12 Pro, ~$339). Tiny, quiet, ~10–14W idle, and its Quick Sync runs Frigate.&lt;/li>
&lt;li>&lt;strong>Best value + headroom:&lt;/strong> a &lt;strong>refurbished enterprise micro&lt;/strong> — Dell OptiPlex Micro or Lenovo ThinkCentre Tiny, 6-core i5, ~$150–250, with a Windows Pro license thrown in.&lt;/li>
&lt;li>&lt;strong>Home Assistant is tiny.&lt;/strong> It runs on a 2GB Raspberry Pi; the official Green box has 4GB. You are buying a mini PC for &lt;strong>SSD reliability and headroom&lt;/strong>, not raw speed.&lt;/li>
&lt;li>&lt;strong>Only size up&lt;/strong> to a 6–8 core i5/Ryzen for &lt;strong>heavy Frigate cameras or local voice&lt;/strong> — the two workloads that actually stress a small box.&lt;/li>
&lt;li>&lt;strong>The 2026 catch:&lt;/strong> buy a box that already includes RAM+SSD, not a barebone — the RAM shortage has flipped barebone economics upside down.&lt;/li>
&lt;/ul>
&lt;p style="margin:0.75rem 0 0 0;font-size:0.9rem;color:#a0a0b8;">CPU specs are from Intel ARK; requirements from Home Assistant and Frigate docs. Prices are a live Amazon snapshot dated 2026-07-20 and move week to week — check the retailer link before buying.&lt;/p>
&lt;/div>
&lt;img src="https://techfuelhq.com/images/homelab/best-mini-pc-home-assistant-2026.svg" width="1200" height="760" loading="lazy" decoding="async" alt="Best mini PC for Home Assistant 2026 in three tiers: a new Intel N100/N150 box (4 cores, 6W chip, Quick Sync, 16GB, ~10-14W idle, about $170-340) for Home Assistant plus a few Frigate cameras; a refurbished enterprise micro (6-core i5, Windows Pro license, 15-20W idle, about $150-250) as the value and headroom pick; and a step up to an i5 or Ryzen box (about $400+) for heavy multi-camera Frigate plus local voice. Home Assistant itself is tiny and runs on a 2GB Pi, so buy for SSD reliability and headroom, not speed. Frigate needs no Coral because the N100 has Quick Sync; put the Zigbee stick on USB 2.0 with an extension cable." style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;h2 id="the-short-version">The short version&lt;/h2>
&lt;p>Almost every &amp;ldquo;best mini PC for Home Assistant&amp;rdquo; list gets the framing backwards. They rank boxes by raw power, when the real story is that &lt;strong>Home Assistant barely needs any&lt;/strong>. It runs happily on a 2GB Raspberry Pi, and the official &lt;a href="https://www.home-assistant.io/green/" rel="noopener">Home Assistant Green&lt;/a> appliance ships with a quad-core Arm chip and just &lt;strong>4GB of RAM&lt;/strong>. So the question is not &amp;ldquo;how much CPU do I need for Home Assistant?&amp;rdquo; — it is &amp;ldquo;what is the most reliable, low-power box that will still have headroom in three years?&amp;rdquo;&lt;/p>
&lt;p>The answer, for most people, is a &lt;strong>new Intel N100 mini PC&lt;/strong> with 16GB of RAM and an SSD. It&amp;rsquo;s cheap, sips 7–14 watts, is silent, and — importantly for cameras — its integrated GPU includes &lt;strong>Intel Quick Sync&lt;/strong>. If you&amp;rsquo;re comfortable buying used, a &lt;strong>refurbished enterprise micro&lt;/strong> (a Dell OptiPlex Micro or Lenovo ThinkCentre Tiny) gives you a 6-core i5 and a Windows license for a bit more idle power and often &lt;em>less&lt;/em> money. You only step up to something bigger for two specific workloads — a busy &lt;strong>Frigate&lt;/strong> camera setup or &lt;strong>local voice&lt;/strong> — which we&amp;rsquo;ll size precisely below. If you plan to run Home Assistant as one VM among several services, our &lt;a href="https://techfuelhq.com/tutorials/home-assistant-proxmox-2026/">Home Assistant on Proxmox guide&lt;/a> covers that install; if you want a bigger virtualization host in general, see the &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">best mini PCs for a homelab&lt;/a>. This page is specifically about the smart-home box.&lt;/p>
&lt;h2 id="what-home-assistant-actually-needs">What Home Assistant actually needs&lt;/h2>
&lt;p>Home Assistant doesn&amp;rsquo;t publish a single tidy &amp;ldquo;recommended specs&amp;rdquo; table for an x86 mini PC, so here is what the official docs &lt;em>do&lt;/em> say, and what it means:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>The only hard minimum is the Pi figure:&lt;/strong> the &lt;a href="https://www.home-assistant.io/installation/raspberrypi/" rel="noopener">Raspberry Pi install page&lt;/a> calls for &amp;ldquo;minimum 2 GB RAM&amp;rdquo; and a card &amp;ldquo;at least 32 GB.&amp;rdquo; That&amp;rsquo;s the floor for Home Assistant by itself.&lt;/li>
&lt;li>&lt;strong>The official appliance is 4GB.&lt;/strong> &lt;a href="https://www.home-assistant.io/green/" rel="noopener">Home Assistant Green&lt;/a> — the box the project sells for people who don&amp;rsquo;t want to think about hardware — has 4GB of RAM, 32GB of eMMC, and a modest quad-core Arm CPU. If that runs Home Assistant well, a 6-watt N100 with 16GB obliterates the requirement.&lt;/li>
&lt;li>&lt;strong>On x86, use an SSD, not an SD card.&lt;/strong> The &lt;a href="https://www.home-assistant.io/installation/generic-x86-64/" rel="noopener">generic x86-64 install docs&lt;/a> assume an internal S-ATA/M.2 SSD or eMMC boot medium; the machine just needs to be 64-bit and boot via UEFI, which covers essentially every mini PC made in the last decade.&lt;/li>
&lt;/ul>
&lt;p>The practical takeaway: &lt;strong>buy for headroom and reliability, not benchmarks.&lt;/strong> 16GB of RAM and a 256–512GB SSD is the community&amp;rsquo;s comfortable sweet spot — not because Home Assistant needs it, but because add-ons, a few months of history, and future tinkering do, and because RAM and an SSD are cheap insurance against ever thinking about it again.&lt;/p>
&lt;h2 id="why-a-mini-pc-beats-a-raspberry-pi">Why a mini PC beats a Raspberry Pi&lt;/h2>
&lt;p>The single most common Home Assistant hardware story on the forums is an &lt;strong>SD card dying&lt;/strong>. Home Assistant writes to its database constantly (every sensor update, every state change), and that steady write load chews through Raspberry Pi SD cards — users routinely report &lt;a href="https://community.home-assistant.io/t/rpi-sd-card-reliability/232115" rel="noopener">two or three dead cards in a year&lt;/a>, even on premium and &amp;ldquo;industrial&amp;rdquo; cards. The fix is always the same: move to a real SSD.&lt;/p>
&lt;p>A mini PC solves that by default — it boots from a SATA or NVMe SSD that laughs off Home Assistant&amp;rsquo;s write pattern. On top of that you get far more CPU and RAM headroom than a Pi, USB 3.0 ports, and a real SSD in place of a wear-prone card — and once you add a Pi&amp;rsquo;s case, power supply, and SSD, a used mini PC often isn&amp;rsquo;t much more expensive anyway. A Pi is a fine way to learn Home Assistant. A mini PC is where you put it when you want to stop maintaining the hardware.&lt;/p>
&lt;h2 id="the-n100-and-n150-the-low-power-sweet-spot">The N100 (and N150): the low-power sweet spot&lt;/h2>
&lt;p>The chip at the center of nearly every good Home Assistant mini PC is the &lt;strong>Intel Processor N100&lt;/strong>. Per &lt;a href="https://www.intel.com/content/www/us/en/products/sku/231803/intel-processor-n100-6m-cache-up-to-3-40-ghz/specifications.html" rel="noopener">Intel&amp;rsquo;s ARK spec page&lt;/a>, it&amp;rsquo;s a 4-core / 4-thread part (all efficient Gracemont cores) with 6MB of cache, a &lt;strong>6-watt&lt;/strong> base power, up to 3.40GHz turbo, and an Intel UHD integrated GPU with 24 execution units. Two specs matter most for a smart-home box: it officially tops out at &lt;strong>16GB of RAM&lt;/strong> (single channel), and its iGPU includes &lt;strong>Intel Quick Sync Video&lt;/strong> — the hardware video engine that makes Frigate practical (more on that next).&lt;/p>
&lt;p>You&amp;rsquo;ll also see the newer &lt;strong>Intel N150&lt;/strong> in 2026 boxes. Don&amp;rsquo;t overthink it: per &lt;a href="https://www.intel.com/content/www/us/en/products/sku/241636/intel-processor-n150-6m-cache-up-to-3-60-ghz/specifications.html" rel="noopener">Intel ARK&lt;/a>, the N150 (code-named Twin Lake) is a minor refresh of the same Alder Lake-N-class silicon. The only spec changes are a slightly higher CPU turbo (3.60GHz vs 3.40GHz) and a slightly higher iGPU clock (1.0GHz vs 750MHz). Same 4 cores, same 6-watt power, same 16GB memory ceiling, same 24-EU iGPU, same Quick Sync. &lt;strong>For Home Assistant, an N100 and an N150 are functionally identical&lt;/strong> — buy whichever is cheaper.&lt;/p>
&lt;p>One honest caveat on RAM: Intel&amp;rsquo;s official ceiling for both chips is 16GB, but many vendors advertise and ship 32GB single modules that work in practice. Treat anything above 16GB as board-dependent rather than an Intel guarantee — and for Home Assistant, 16GB is already more than you need.&lt;/p>
&lt;h2 id="when-to-actually-size-up-frigate-and-voice">When to actually size up: Frigate and voice&lt;/h2>
&lt;p>If you only run Home Assistant plus normal integrations and add-ons, an N100 is overkill and you can stop reading and buy one. Two workloads change the math:&lt;/p>
&lt;p>&lt;strong>Frigate NVR (cameras).&lt;/strong> Frigate is CPU-hungry in one specific way: decoding camera video streams. Frigate&amp;rsquo;s docs say it is &lt;a href="https://docs.frigate.video/configuration/hardware_acceleration_video/" rel="noopener">&amp;ldquo;highly recommended to use an integrated or discrete GPU for hardware acceleration&amp;rdquo;&lt;/a> because decoding camera streams is the CPU-heavy part. Here&amp;rsquo;s the good news that the buying guides bury: &lt;strong>the N100&amp;rsquo;s Quick Sync already does this&lt;/strong>, and the &lt;em>same&lt;/em> iGPU runs object detection through Frigate&amp;rsquo;s &lt;a href="https://docs.frigate.video/configuration/object_detectors/" rel="noopener">OpenVINO detector&lt;/a> — so a single N100 box handles both jobs. That&amp;rsquo;s why Frigate&amp;rsquo;s own &lt;a href="https://docs.frigate.video/frigate/hardware/" rel="noopener">recommended hardware&lt;/a> list includes an N100 mini PC (the Beelink EQ13), which &amp;ldquo;can run object detection on several 1080p cameras with low-medium activity.&amp;rdquo; Note what you &lt;em>don&amp;rsquo;t&lt;/em> need: Frigate now says the &lt;strong>Google Coral is &amp;ldquo;no longer recommended for new installations&amp;rdquo;&lt;/strong> (outside niche ultra-low-power builds) and points out that &amp;ldquo;the Coral does not help with decoding video streams&amp;rdquo; anyway. Skip it. You move up to a 6–8 core i5 or Ryzen (and more RAM) only when you run &lt;em>many&lt;/em> cameras, higher resolutions, or high-activity scenes. Storage scales with exactly the same three inputs — the &lt;a href="https://techfuelhq.com/tools/frigate-nvr-storage-calculator/">Frigate NVR storage calculator&lt;/a> turns camera count, resolution, and retention days into a drive size and the &lt;code>/dev/shm&lt;/code> value Frigate needs.&lt;/p>
&lt;p>&lt;strong>Local voice (Whisper).&lt;/strong> Running your own speech-to-text with Whisper is the other real load. Home Assistant is blunt about it: Whisper &lt;a href="https://www.home-assistant.io/voice_control/voice_remote_local_assistant/" rel="noopener">&amp;ldquo;is only a great option&amp;rdquo; if &amp;ldquo;you have powerful hardware at home,&amp;rdquo;&lt;/a> noting that a task taking ~8 seconds on a Raspberry Pi 4 is &amp;ldquo;done in under a second&amp;rdquo; on an Intel NUC. And the &lt;a href="https://www.home-assistant.io/blog/2025/06/25/voice-chapter-10/" rel="noopener">largest Whisper models &amp;ldquo;require a GPU&amp;rdquo;&lt;/a> and are &amp;ldquo;unusable on a Raspberry Pi or even an N100-class PC.&amp;rdquo; The lighter Piper text-to-speech is not the bottleneck. Translation: an N100 handles basic local voice fine, but a serious multi-language voice assistant is a reason to go bigger.&lt;/p>
&lt;p>The recurring community wisdom, and it&amp;rsquo;s good advice: &lt;strong>don&amp;rsquo;t pre-buy headroom.&lt;/strong> Start with an N100 or a refurb i5, measure your real CPU and RAM once your cameras and add-ons are running, and upgrade only if the numbers say so.&lt;/p>
&lt;h2 id="the-picks--live-amazon-snapshot-2026-07-20">The picks — live Amazon snapshot, 2026-07-20&lt;/h2>
&lt;p>Prices below are a live US Amazon pull captured &lt;strong>2026-07-20&lt;/strong> and move week to week — &lt;strong>check the retailer link before buying.&lt;/strong> All of these ship &lt;em>complete&lt;/em> (with RAM, SSD, and an OS), which in 2026 matters more than usual — see the barebone note after the table.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Pick&lt;/th>
&lt;th scope="col">Why&lt;/th>
&lt;th scope="col">CPU / RAM / SSD&lt;/th>
&lt;th scope="col">Price&lt;/th>
&lt;th scope="col">Link&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Beelink S12 Pro&lt;/strong> (best for most, new)&lt;/td>
&lt;td>The default N100 box: quiet, ~10–14W, Quick Sync for Frigate&lt;/td>
&lt;td>N100 · 16GB DDR4 · 500GB SSD&lt;/td>
&lt;td>$339&lt;/td>
&lt;td>&lt;a href="https://www.amazon.com/dp/B0BYJ9BC15?tag=techfuelhq-20" rel="nofollow sponsored">Amazon&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Dell OptiPlex 7060 Micro&lt;/strong> (best value)&lt;/td>
&lt;td>6-core i5 = more headroom than N100, plus a Win 11 Pro license&lt;/td>
&lt;td>i5-8500T · 16GB · 256GB SSD (Renewed)&lt;/td>
&lt;td>$195.89&lt;/td>
&lt;td>&lt;a href="https://www.amazon.com/dp/B08ZYT357P?tag=techfuelhq-20" rel="nofollow sponsored">Amazon&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Lenovo ThinkCentre M720q&lt;/strong> (refurb alt)&lt;/td>
&lt;td>Same class as the Dell; pick on price/condition&lt;/td>
&lt;td>i5-8500T · 16GB · 256GB SSD (Renewed)&lt;/td>
&lt;td>$220&lt;/td>
&lt;td>&lt;a href="https://www.amazon.com/dp/B0B14FTVTV?tag=techfuelhq-20" rel="nofollow sponsored">Amazon&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>GMKtec M3&lt;/strong> (step up, new)&lt;/td>
&lt;td>For heavy Frigate + local voice: 8-core i5, room to grow&lt;/td>
&lt;td>i5-12450H · 16GB DDR4 · 512GB SSD&lt;/td>
&lt;td>$449.99&lt;/td>
&lt;td>&lt;a href="https://www.amazon.com/dp/B0CWR3SZVT?tag=techfuelhq-20" rel="nofollow sponsored">Amazon&lt;/a>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>&lt;strong>Idle power, measured:&lt;/strong> an N100 box like the Beelink EQ12 was measured at &lt;strong>12–14W at the wall&lt;/strong> by &lt;a href="https://www.cnx-software.com/2023/05/16/beelink-eq12-review-intel-processor-n100-mini-pc-windows-11-truenas-pfsense-ubuntu/" rel="noopener">CNX Software&lt;/a> (real-world N100 idle runs roughly 10–14W depending on OS and peripherals, and a lean fanless box with a single RAM stick can dip lower). The refurbished Tiny/Mini/Micro machines idle a little higher — ServeTheHome measured the &lt;a href="https://www.servethehome.com/dell-optiplex-3050-micro-project-tinyminimicro-guide-review/3/" rel="noopener">Dell OptiPlex 3050 Micro&lt;/a> and &lt;a href="https://www.servethehome.com/lenovo-thinkcentre-m720q-tinyminimicro-feature/3/" rel="noopener">Lenovo M720q&lt;/a> at 11–14W, with 6-core i5 configs closer to 15–20W. Across a year of 24/7 running, that difference is only about $8–12 in electricity — real, but not decisive. Run your own numbers in the &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">homelab power-cost calculator&lt;/a>, and see the &lt;a href="https://techfuelhq.com/homelab/24-7-homelab-idle-power-costs-2026/">24/7 idle-power breakdown&lt;/a> for the full math.&lt;/p>
&lt;h3 id="the-barebone-trap-the-one-2026-twist">The barebone trap (the one 2026 twist)&lt;/h3>
&lt;p>Here&amp;rsquo;s the money-saving detail every competing guide misses. Because of the 2026 memory shortage, &lt;strong>RAM prices have spiked&lt;/strong> — so a &amp;ldquo;cheap&amp;rdquo; barebone mini PC is now the &lt;em>most expensive&lt;/em> way to end up running. Buy the barebone, add your own RAM and SSD, and you often pay &lt;em>more&lt;/em> than a complete box that already includes them. A live example from this same July 20 pull: GMKtec&amp;rsquo;s G3 Pro is &lt;a href="https://www.amazon.com/dp/B0GR463LCQ?tag=techfuelhq-20" rel="nofollow sponsored">$189.99 barebone&lt;/a> (no RAM/SSD/OS) versus &lt;a href="https://www.amazon.com/dp/B0GHDTHM53?tag=techfuelhq-20" rel="nofollow sponsored">$329.99 complete&lt;/a> with 16GB, a 512GB SSD, and Windows — and in 2026 that RAM, SSD, and license cost more than the $140 gap if you buy them separately. The rule: for a Home Assistant box, &lt;strong>buy it complete&lt;/strong>, or buy a used machine that already comes with RAM. The sticker price on a barebone is a down payment, not the total.&lt;/p>
&lt;h2 id="the-zigbee--z-wave-usb-gotcha-nobody-warns-you-about">The Zigbee / Z-Wave USB gotcha nobody warns you about&lt;/h2>
&lt;p>This one bites almost everyone, and it&amp;rsquo;s the difference between a rock-solid smart home and mysterious dropouts. When you plug a Zigbee or Z-Wave/Thread USB stick &lt;strong>directly into a mini PC&lt;/strong> — especially next to a USB 3.0 or USB-C port — the high-speed USB signaling raises the noise floor in the 2.4GHz band and cripples your Zigbee/Thread network. This isn&amp;rsquo;t folklore; it&amp;rsquo;s &lt;a href="https://www.home-assistant.io/integrations/zha/" rel="noopener">official Home Assistant ZHA guidance&lt;/a>: &lt;em>&amp;ldquo;Make sure to only connect the Zigbee USB adapter to a USB 2.0 port (and not to a USB 3.x port)&amp;rdquo;&lt;/em>, and place it away from interference &lt;em>&amp;ldquo;preferably by using an adequately long shielded USB extension cable.&amp;rdquo;&lt;/em> Home Assistant&amp;rsquo;s own &lt;a href="https://www.home-assistant.io/blog/2025/11/19/home-assistant-connect-zbt-2/" rel="noopener">Connect ZBT-2 adapter&lt;/a> even ships with a 1.5-meter cable and a free-standing base specifically because &amp;ldquo;USB ports and nearby electronics can create interference.&amp;rdquo; So: &lt;strong>USB 2.0 port + a meter of shielded extension cable&lt;/strong>, stick standing away from the box. It costs a few dollars and saves hours of debugging.&lt;/p>
&lt;h2 id="haos-bare-metal-or-a-proxmox-vm">HAOS bare metal or a Proxmox VM?&lt;/h2>
&lt;p>Two good options, one clear loser:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Home Assistant OS, bare metal&lt;/strong> — the &lt;a href="https://www.home-assistant.io/installation/" rel="noopener">officially recommended install&lt;/a> for most users. If the mini PC will &lt;em>only&lt;/em> run Home Assistant, do this: it&amp;rsquo;s appliance-like, updates and backups live in the UI, and there&amp;rsquo;s no command line. This is the right default for an N100 box dedicated to the smart home.&lt;/li>
&lt;li>&lt;strong>HAOS in a Proxmox VM&lt;/strong> — the community favorite when the box will &lt;em>also&lt;/em> run other things (Pi-hole, Plex, a Frigate container, a NAS role). You get VM snapshots, the ability to hard-restart Home Assistant remotely if it hangs, and room to run everything on one machine, with negligible performance loss. Our step-by-step &lt;a href="https://techfuelhq.com/tutorials/home-assistant-proxmox-2026/">Home Assistant on Proxmox guide&lt;/a> walks through it, including USB passthrough for your Zigbee stick.&lt;/li>
&lt;li>&lt;strong>Supervised on Debian&lt;/strong> — the least-recommended path; you&amp;rsquo;re on your own for support if you install other software alongside it.&lt;/li>
&lt;/ul>
&lt;p>Simple rule: only Home Assistant → HAOS on the metal. Home Assistant &lt;em>plus&lt;/em> other services → HAOS in a Proxmox VM.&lt;/p>
&lt;h2 id="what-competing-guides-skip-our-angle">What competing guides skip (our angle)&lt;/h2>
&lt;p>Most &amp;ldquo;best mini PC for Home Assistant&amp;rdquo; pages are a list of Beelink boxes with affiliate links. What they consistently miss, all covered above:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>That Home Assistant is tiny&lt;/strong> — they rank by CPU power when the real buying axis is SSD reliability + headroom, and they never mention the official 4GB Green box as the baseline.&lt;/li>
&lt;li>&lt;strong>That Frigate needs no Coral on an N100&lt;/strong> — the N100&amp;rsquo;s Quick Sync does the decode and OpenVINO does the detection on the same chip; Frigate itself now deprecates the Coral for new installs.&lt;/li>
&lt;li>&lt;strong>The Zigbee USB-3 interference fix&lt;/strong> — official ZHA guidance that turns a flaky network solid, absent from nearly every hardware list.&lt;/li>
&lt;li>&lt;strong>The 2026 barebone trap&lt;/strong> — with RAM prices spiking, a complete box beats a barebone, the opposite of the usual advice.&lt;/li>
&lt;/ul>
&lt;h2 id="related-reading">Related reading&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/home-assistant-proxmox-2026/">Home Assistant on Proxmox: install HAOS as a VM&lt;/a> — the install guide for the box you just bought.&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">Best mini PC for a homelab 2026&lt;/a> — if you want a bigger virtualization host (MS-01, NUC, used SFF), not just a smart-home box.&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/24-7-homelab-idle-power-costs-2026/">24/7 homelab idle power costs&lt;/a> — what an always-on mini PC really costs to run.&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/best-nas-for-plex-jellyfin-2026/">Best NAS for Plex and Jellyfin 2026&lt;/a> — where your camera recordings and media should actually live.&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">Homelab power-cost calculator&lt;/a> — plug in idle watts and your electricity rate.&lt;/li>
&lt;/ul>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;p>Hardware specifications (verified live):&lt;/p>
&lt;ul>
&lt;li>Intel Processor N100 — Intel ARK: &lt;a href="https://www.intel.com/content/www/us/en/products/sku/231803/intel-processor-n100-6m-cache-up-to-3-40-ghz/specifications.html" rel="noopener">https://www.intel.com/content/www/us/en/products/sku/231803/intel-processor-n100-6m-cache-up-to-3-40-ghz/specifications.html&lt;/a>&lt;/li>
&lt;li>Intel Processor N150 — Intel ARK: &lt;a href="https://www.intel.com/content/www/us/en/products/sku/241636/intel-processor-n150-6m-cache-up-to-3-60-ghz/specifications.html" rel="noopener">https://www.intel.com/content/www/us/en/products/sku/241636/intel-processor-n150-6m-cache-up-to-3-60-ghz/specifications.html&lt;/a>&lt;/li>
&lt;li>Beelink EQ12 (N100) measured idle power — CNX Software: &lt;a href="https://www.cnx-software.com/2023/05/16/beelink-eq12-review-intel-processor-n100-mini-pc-windows-11-truenas-pfsense-ubuntu/" rel="noopener">https://www.cnx-software.com/2023/05/16/beelink-eq12-review-intel-processor-n100-mini-pc-windows-11-truenas-pfsense-ubuntu/&lt;/a>&lt;/li>
&lt;li>Dell OptiPlex 3050 Micro / Lenovo M720q measured idle — ServeTheHome Project TinyMiniMicro: &lt;a href="https://www.servethehome.com/dell-optiplex-3050-micro-project-tinyminimicro-guide-review/3/" rel="noopener">https://www.servethehome.com/dell-optiplex-3050-micro-project-tinyminimicro-guide-review/3/&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Home Assistant + Frigate documentation:&lt;/p>
&lt;ul>
&lt;li>Home Assistant install requirements (Pi + generic x86-64): &lt;a href="https://www.home-assistant.io/installation/generic-x86-64/" rel="noopener">https://www.home-assistant.io/installation/generic-x86-64/&lt;/a> and &lt;a href="https://www.home-assistant.io/installation/raspberrypi/" rel="noopener">https://www.home-assistant.io/installation/raspberrypi/&lt;/a>&lt;/li>
&lt;li>Home Assistant Green specifications: &lt;a href="https://www.home-assistant.io/green/" rel="noopener">https://www.home-assistant.io/green/&lt;/a>&lt;/li>
&lt;li>Home Assistant ZHA (Zigbee USB adapter guidance): &lt;a href="https://www.home-assistant.io/integrations/zha/" rel="noopener">https://www.home-assistant.io/integrations/zha/&lt;/a>&lt;/li>
&lt;li>Home Assistant local voice (Whisper/Piper): &lt;a href="https://www.home-assistant.io/voice_control/voice_remote_local_assistant/" rel="noopener">https://www.home-assistant.io/voice_control/voice_remote_local_assistant/&lt;/a>&lt;/li>
&lt;li>Frigate hardware + hardware-accelerated decoding + detectors: &lt;a href="https://docs.frigate.video/frigate/hardware/" rel="noopener">https://docs.frigate.video/frigate/hardware/&lt;/a>, &lt;a href="https://docs.frigate.video/configuration/hardware_acceleration_video/" rel="noopener">https://docs.frigate.video/configuration/hardware_acceleration_video/&lt;/a>, and &lt;a href="https://docs.frigate.video/configuration/object_detectors/" rel="noopener">https://docs.frigate.video/configuration/object_detectors/&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Community consensus (mini-PC choice, sizing, SD-card reliability, and Zigbee interference) was reviewed on the community.home-assistant.io forum and is cited inline as community opinion. Prices are a live Amazon snapshot dated 2026-07-20.&lt;/p></description></item><item><title>RTX 5070 vs RTX 5070 Ti: Is the Ti Worth It in 2026?</title><link>https://techfuelhq.com/gpu-reviews/rtx-5070-vs-5070-ti-2026/</link><pubDate>Mon, 20 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/gpu-reviews/rtx-5070-vs-5070-ti-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-07-20 · Updated 2026-07-20 · ~11 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence which products get recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR · The verdict in 2026&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>Performance gap:&lt;/strong> the 5070 Ti is ~&lt;strong>20–22% faster at 1440p&lt;/strong> on average (range ~6% to ~30% by game), with more separation at 4K.&lt;/li>
&lt;li>&lt;strong>The real price gap isn't $200:&lt;/strong> at July-2026 street prices it's ~&lt;strong>$300–450&lt;/strong> (5070 ~$630–750, Ti ~$920–1,080). The "$200 more" everyone quotes is MSRP-only, and neither card sells at MSRP.&lt;/li>
&lt;li>&lt;strong>Buy the RTX 5070&lt;/strong> for high-refresh 1440p on a budget — 12GB is fine there today (~$636, &lt;a href="https://www.amazon.com/dp/B0DTQMLX4F?tag=techfuelhq-20" rel="nofollow sponsored">Amazon&lt;/a>).&lt;/li>
&lt;li>&lt;strong>Buy the RTX 5070 Ti&lt;/strong> for 4K, VRAM longevity (16GB), heavy ray tracing, or CUDA/AI work (~$920, &lt;a href="https://www.amazon.com/dp/B0DXL7GSYC?tag=techfuelhq-20" rel="nofollow sponsored">Amazon&lt;/a>).&lt;/li>
&lt;li>&lt;strong>The spoiler:&lt;/strong> AMD's &lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5070-ti-vs-rx-9070-xt-2026/">RX 9070 XT&lt;/a> gives ~95% of the Ti's raster for hundreds less. Consider it unless you specifically need RT/DLSS/CUDA.&lt;/li>
&lt;/ul>
&lt;p style="margin:0.75rem 0 0 0;font-size:0.9rem;color:#a0a0b8;">Specs are from NVIDIA; benchmark deltas are from independent testing (GamersNexus), cited inline. Prices are a live Amazon snapshot dated 2026-07-20 and move week to week — a GDDR7 shortage has GPU prices unusually volatile, so check the retailer link before buying.&lt;/p>
&lt;/div>
&lt;img src="https://techfuelhq.com/images/gpu-reviews/rtx-5070-vs-5070-ti-2026.svg" width="1200" height="675" loading="eager" fetchpriority="high" decoding="async" alt="RTX 5070 vs RTX 5070 Ti 2026: the 5070 Ti is about 20 to 22 percent faster at 1440p with 16GB of VRAM versus the 5070's 12GB, but at real July-2026 street prices it costs roughly 300 to 450 dollars more, not the 200-dollar MSRP gap. Buy the 5070 for 1440p value; buy the Ti for 4K, VRAM longevity, or heavy ray tracing." style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;h2 id="the-real-question-isnt-the-specs--its-the-2026-price">The real question isn&amp;rsquo;t the specs — it&amp;rsquo;s the 2026 price&lt;/h2>
&lt;p>Every &amp;ldquo;5070 vs 5070 Ti&amp;rdquo; guide opens the same way: the Ti costs $200 more, so is it 20% faster? That framing is stale, and it&amp;rsquo;s the first thing to fix. &lt;strong>The $200 figure is the MSRP gap — $549 vs $749 — and in mid-2026 neither card sells at MSRP.&lt;/strong>&lt;/p>
&lt;p>In a live Amazon check on &lt;strong>2026-07-20&lt;/strong>, mainstream RTX 5070 partner cards ran roughly &lt;strong>$630–750&lt;/strong> (some dipping toward ~$580 with checkout coupons), while RTX 5070 Ti cards ran roughly &lt;strong>$920–1,080&lt;/strong>, with premium models past $1,300. So the real-world &amp;ldquo;Ti tax&amp;rdquo; right now is &lt;strong>about $300–450, not $200&lt;/strong> — and the cheapest 5070 Ti often costs what an RTX 5080 launched at. A major driver is the worldwide GDDR7/DRAM shortage, fed by AI-datacenter demand, that has pushed GPU street prices well above late-2025 levels — with board-partner markups piling on top; SK Hynix has called 2027 the &lt;em>worst&lt;/em> year for the crunch, so don&amp;rsquo;t count on near-term relief. Every guide still quoting &amp;ldquo;$200&amp;rdquo; was written before this, and it changes the value math completely.&lt;/p>
&lt;p>So read the performance gap below through the real price gap, not the sticker one.&lt;/p>
&lt;h2 id="the-specs-honestly">The specs, honestly&lt;/h2>
&lt;p>Both cards are Blackwell, built on the same architecture — the Ti simply has more of everything. Per &lt;a href="https://www.nvidia.com/en-us/geforce/graphics-cards/50-series/rtx-5070-family/" rel="noopener">NVIDIA&amp;rsquo;s spec page&lt;/a>:&lt;/p>
&lt;div style="overflow-x:auto;margin:1.5rem 0;">
&lt;table style="border-collapse:collapse;width:100%;min-width:600px;font-size:0.93rem;">
&lt;thead>&lt;tr style="background:rgba(200,255,0,0.06);text-align:left;">
&lt;th style="padding:0.6rem 0.75rem;border-bottom:1px solid #2a2a44;">Spec&lt;/th>
&lt;th style="padding:0.6rem 0.75rem;border-bottom:1px solid #2a2a44;">RTX 5070&lt;/th>
&lt;th style="padding:0.6rem 0.75rem;border-bottom:1px solid #2a2a44;">RTX 5070 Ti&lt;/th>
&lt;th style="padding:0.6rem 0.75rem;border-bottom:1px solid #2a2a44;">Delta&lt;/th>
&lt;/tr>&lt;/thead>
&lt;tbody>
&lt;tr>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">CUDA cores&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">6,144&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">8,960&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;color:#8fdca0;">+46%&lt;/td>&lt;/tr>
&lt;tr>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">VRAM&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">12GB GDDR7&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">16GB GDDR7&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;color:#8fdca0;">+4GB&lt;/td>&lt;/tr>
&lt;tr>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">Memory bus&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">192-bit&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">256-bit&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;color:#8fdca0;">wider&lt;/td>&lt;/tr>
&lt;tr>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">Bandwidth&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">672 GB/s&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">896 GB/s&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;color:#8fdca0;">+33%&lt;/td>&lt;/tr>
&lt;tr>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">TGP&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">250W&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">300W&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">+50W&lt;/td>&lt;/tr>
&lt;tr>&lt;td style="padding:0.55rem 0.75rem;">MSRP&lt;/td>&lt;td style="padding:0.55rem 0.75rem;">$549&lt;/td>&lt;td style="padding:0.55rem 0.75rem;">$749&lt;/td>&lt;td style="padding:0.55rem 0.75rem;">+$200&lt;/td>&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The +46% CUDA and +33% bandwidth look decisive on paper, but paper isn&amp;rsquo;t frames — and this is where most spec-sheet comparisons quietly overstate the gap. (NVIDIA asks for 650W of system power for the 5070 and 750W for the 5070 Ti; our &lt;a href="https://techfuelhq.com/tools/psu-wattage-calculator/">PSU wattage calculator&lt;/a> sizes the supply for your exact parts, and &lt;a href="https://techfuelhq.com/articles/what-psu-for-rtx-5070-2026/">what PSU an RTX 5070 needs&lt;/a> walks through where those numbers come from.)&lt;/p>
&lt;h2 id="how-much-faster-is-the-ti-really">How much faster is the Ti, really?&lt;/h2>
&lt;p>Independent testing lands well below the marketing math. In &lt;a href="https://gamersnexus.net/gpus/amd-radeon-rx-9070-xt-gpu-review-benchmarks-vs-5070-ti-5070-7900-xt-sapphire-pulse" rel="noopener">GamersNexus&amp;rsquo;s benchmark suite&lt;/a>, the RTX 5070 Ti averages &lt;strong>about 20–22% faster than the 5070 at 1440p rasterization&lt;/strong> — not the &amp;ldquo;up to 30%&amp;rdquo; you&amp;rsquo;ll see in card listings. The important part is the &lt;em>range&lt;/em>, because it tells you where your money actually goes:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>CPU-bound games&lt;/strong> (e.g. Final Fantasy XIV): as little as &lt;strong>~6%&lt;/strong> — both cards are waiting on the processor, so the Ti&amp;rsquo;s extra hardware barely moves.&lt;/li>
&lt;li>&lt;strong>Bandwidth- and VRAM-bound games&lt;/strong> (e.g. Resident Evil 4 ~+27%, Dying Light 2 ~+23%): the widest gaps, where the Ti&amp;rsquo;s 256-bit bus and 16GB stretch their legs.&lt;/li>
&lt;li>&lt;strong>At 4K:&lt;/strong> the gap is directionally larger than at 1440p, for the same reason — higher resolution leans harder on memory bandwidth and capacity.&lt;/li>
&lt;/ul>
&lt;p>So the honest read is &amp;ldquo;roughly a fifth faster at 1440p, more at 4K, and it depends heavily on the game.&amp;rdquo; That&amp;rsquo;s a real upgrade — but weigh it against a ~$300–450 real-world price gap, not a $200 one. For the broader picture of where both land against every other current card, see the &lt;a href="https://techfuelhq.com/articles/gpu-hierarchy-2026/">2026 GPU hierarchy&lt;/a>.&lt;/p>
&lt;h2 id="the-12gb-vs-16gb-question--the-part-every-2025-guide-skips">The 12GB vs 16GB question — the part every 2025 guide skips&lt;/h2>
&lt;p>This is the single most future-facing difference, and it&amp;rsquo;s why the launch-era comparisons still ranking for this search feel dated. &lt;strong>The RTX 5070&amp;rsquo;s 12GB is fine for most 1440p gaming today&lt;/strong> — most current games stay within it at high settings and 1440p, though path-traced titles and ultra-texture packs can pressure it even there. The problems show up in two places: &lt;strong>4K&lt;/strong> and &lt;strong>time&lt;/strong>. Several 2026 titles already exceed 12GB at 4K with high-resolution textures or heavy ray tracing, and when a card runs out of VRAM it doesn&amp;rsquo;t slow down gracefully — it stutters and drops texture quality even when its raw speed says it should keep up.&lt;/p>
&lt;p>The practical rule: if you game at 1440p and upgrade every couple of years, 12GB on the 5070 is genuinely enough. If you game at 4K, run RT-heavy titles, or want to keep the card &lt;strong>4+ years&lt;/strong>, the 5070 Ti&amp;rsquo;s 16GB is the safer place to put your money — and it&amp;rsquo;s a big reason the Ti ages better than the raw FPS gap suggests.&lt;/p>
&lt;h2 id="the-amd-spoiler-rx-9070-xt">The AMD spoiler: RX 9070 XT&lt;/h2>
&lt;p>You can&amp;rsquo;t answer &amp;ldquo;5070 or 5070 Ti&amp;rdquo; in 2026 without naming the card that undercuts both. AMD&amp;rsquo;s &lt;strong>RX 9070 XT&lt;/strong> carries the same &lt;strong>16GB of VRAM&lt;/strong>, and GamersNexus measured it at &lt;strong>roughly 95% of the 5070 Ti&amp;rsquo;s rasterization&lt;/strong> in strong-case titles — while it sells &lt;strong>at or near its $599 MSRP&lt;/strong> and the 5070 Ti does not. That routinely makes the AMD card &lt;strong>$250–400 cheaper for nearly the same raster gaming&lt;/strong>.&lt;/p>
&lt;p>The 5070 Ti earns its NVIDIA premium in specific places: &lt;strong>ray tracing and path tracing&lt;/strong>, &lt;strong>DLSS 4 multi-frame generation&lt;/strong>, and &lt;strong>CUDA/NVENC&lt;/strong> for AI and content work — and note the Ti uses the RTX 5080&amp;rsquo;s larger GB203 die with &lt;strong>dual&lt;/strong> NVENC video encoders, versus a single encoder on the 5070&amp;rsquo;s GB205, a real edge for streamers and video editors. If those are core to what you do, pay for them. If you mostly play rasterized games, the 9070 XT is the value pick — we break down that exact matchup in &lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5070-ti-vs-rx-9070-xt-2026/">RTX 5070 Ti vs RX 9070 XT&lt;/a>. And at the plain 5070&amp;rsquo;s own price tier, AMD&amp;rsquo;s direct rival is the RX 9070 — see &lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5070-vs-rx-9070-2026/">RTX 5070 vs RX 9070&lt;/a> for that head-to-head.&lt;/p>
&lt;h2 id="dont-get-talked-up-into-a-5080">Don&amp;rsquo;t get talked up into a 5080&lt;/h2>
&lt;p>One more guardrail, because the upsell doesn&amp;rsquo;t stop at the Ti. At 2026 street prices the RTX 5080 costs roughly &lt;strong>39% more than the 5070 Ti but is only about 14–17% faster&lt;/strong> in gaming (even at MSRP it&amp;rsquo;s ~33% more, $999 vs $749). Stepping from the 5070 to the 5070 Ti buys ~20% for its money; stepping from the 5070 Ti to the 5080 buys far less. &lt;strong>The 5070 Ti is the sensible ceiling of the value stack&lt;/strong> — above it, you pay flagship prices for single-digit-to-mid-teens gains.&lt;/p>
&lt;h2 id="so-which-should-you-buy">So which should you buy?&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Play at 1440p, want the best value:&lt;/strong> the &lt;strong>RTX 5070&lt;/strong>. 12GB holds up at 1440p, and at ~$630–650 you keep hundreds in your pocket versus the Ti (&lt;a href="https://www.amazon.com/dp/B0DTQMLX4F?tag=techfuelhq-20" rel="nofollow sponsored">GIGABYTE RTX 5070 WINDFORCE, Amazon&lt;/a>).&lt;/li>
&lt;li>&lt;strong>Game at 4K, want VRAM longevity, or do RT/CUDA/AI work:&lt;/strong> the &lt;strong>RTX 5070 Ti&lt;/strong>. The 16GB and wider bus are worth it here (&lt;a href="https://www.amazon.com/dp/B0DXL7GSYC?tag=techfuelhq-20" rel="nofollow sponsored">PNY RTX 5070 Ti, Amazon&lt;/a>).&lt;/li>
&lt;li>&lt;strong>Just want the most raster per dollar:&lt;/strong> cross-shop the &lt;strong>&lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5070-ti-vs-rx-9070-xt-2026/">RX 9070 XT&lt;/a>&lt;/strong> before committing to either NVIDIA card.&lt;/li>
&lt;/ul>
&lt;p>The one thing not to do is buy the 5070 Ti on the assumption it&amp;rsquo;s &amp;ldquo;only $200 more&amp;rdquo; — verify the live gap first. Prices here are a dated 2026-07-20 snapshot in a volatile GDDR7-shortage market; treat them as a method, not a promise, and check the current retailer price before you buy.&lt;/p></description></item><item><title>RTX 5070 vs RX 9070: The Honest 1440p Verdict 2026</title><link>https://techfuelhq.com/gpu-reviews/rtx-5070-vs-rx-9070-2026/</link><pubDate>Mon, 20 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/gpu-reviews/rtx-5070-vs-rx-9070-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-07-20 · Updated 2026-07-20 · ~11 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence which products get recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR · The verdict in 2026&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>Raster winner:&lt;/strong> the RX 9070 is ~&lt;strong>11–15% faster at 1440p&lt;/strong> and leads at 4K too (roughly 0–18% by game), per independent testing.&lt;/li>
&lt;li>&lt;strong>VRAM &amp;amp; power:&lt;/strong> the 9070 has &lt;strong>16GB vs 12GB&lt;/strong> and a &lt;strong>220W vs 250W&lt;/strong> board rating — more headroom, better efficiency.&lt;/li>
&lt;li>&lt;strong>Where the 5070 wins:&lt;/strong> heavy &lt;strong>ray tracing&lt;/strong> (up to ~57% ahead in path-traced Wukong), &lt;strong>DLSS 4&lt;/strong> multi-frame gen, and &lt;strong>CUDA/NVENC&lt;/strong> for AI and video.&lt;/li>
&lt;li>&lt;strong>Buy the RX 9070&lt;/strong> for pure 1440p value and VRAM longevity (~$620, &lt;a href="https://www.amazon.com/dp/B0DXLBTL4B?tag=techfuelhq-20" rel="nofollow sponsored">XFX Swift RX 9070, Amazon&lt;/a>).&lt;/li>
&lt;li>&lt;strong>Buy the RTX 5070&lt;/strong> for ray tracing, DLSS 4, or creator/AI work (~$630, &lt;a href="https://www.amazon.com/dp/B0DYPFGL88?tag=techfuelhq-20" rel="nofollow sponsored">PNY RTX 5070, Amazon&lt;/a>).&lt;/li>
&lt;/ul>
&lt;p style="margin:0.75rem 0 0 0;font-size:0.9rem;color:#a0a0b8;">Specs are from NVIDIA and AMD; benchmark deltas are from independent testing (GamersNexus), cited inline. Prices are a live Amazon snapshot dated 2026-07-20 and move week to week in the current GDDR shortage — check the retailer link before buying.&lt;/p>
&lt;/div>
&lt;img src="https://techfuelhq.com/images/gpu-reviews/rtx-5070-vs-rx-9070-2026.svg" width="1200" height="675" loading="eager" fetchpriority="high" decoding="async" alt="RTX 5070 vs RX 9070 in 2026: both launched at 549 dollars, but the RX 9070 is about 11 to 15 percent faster at 1440p with 16GB of VRAM versus 12GB and a lower 220W board power versus 250W. The RTX 5070 wins ray tracing, DLSS 4, and CUDA creator work. At mid-2026 street prices the two sell near parity, so the choice is feature-driven." style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;h2 id="the-2026-answer-isnt-the-launch-day-answer">The 2026 answer isn&amp;rsquo;t the launch-day answer&lt;/h2>
&lt;p>Nvidia and AMD launched these two cards a day apart in March 2025 at the exact same price — &lt;strong>$549&lt;/strong> — and the internet spent the following year repeating one line: the RX 9070 wins because it&amp;rsquo;s faster for the same money. At MSRP, that was simply true. In mid-2026 it&amp;rsquo;s more complicated, and the honest answer now turns on &lt;strong>what you actually do with the card&lt;/strong>, not the sticker.&lt;/p>
&lt;p>Two things changed. First, neither card reliably sells at $549 anymore — a worldwide GDDR/DRAM shortage fed by AI-datacenter demand has pushed street prices up and made them volatile, and board-partner markups vary by model. Second, AMD&amp;rsquo;s drivers have matured, nudging the 9070 a little further ahead in raster while NVIDIA&amp;rsquo;s software advantages (DLSS 4, CUDA) stayed put. So the matchup is less &amp;ldquo;which is cheaper&amp;rdquo; and more &amp;ldquo;which feature set fits you.&amp;rdquo; Let&amp;rsquo;s settle it with real numbers.&lt;/p>
&lt;h2 id="the-specs-honestly">The specs, honestly&lt;/h2>
&lt;p>Both are current-generation cards — NVIDIA&amp;rsquo;s Blackwell against AMD&amp;rsquo;s RDNA 4 — aimed squarely at 1440p. They take opposite approaches: NVIDIA leans on software and ray tracing, AMD on raw memory and rasterization.&lt;/p>
&lt;div style="overflow-x:auto;margin:1.5rem 0;">
&lt;table style="border-collapse:collapse;width:100%;min-width:600px;font-size:0.93rem;">
&lt;thead>&lt;tr style="background:rgba(200,255,0,0.06);text-align:left;">
&lt;th style="padding:0.6rem 0.75rem;border-bottom:1px solid #2a2a44;">Spec&lt;/th>
&lt;th style="padding:0.6rem 0.75rem;border-bottom:1px solid #2a2a44;">RTX 5070&lt;/th>
&lt;th style="padding:0.6rem 0.75rem;border-bottom:1px solid #2a2a44;">RX 9070&lt;/th>
&lt;th style="padding:0.6rem 0.75rem;border-bottom:1px solid #2a2a44;">Edge&lt;/th>
&lt;/tr>&lt;/thead>
&lt;tbody>
&lt;tr>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">Architecture&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">Blackwell (GB205)&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">RDNA 4 (Navi 48)&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">—&lt;/td>&lt;/tr>
&lt;tr>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">Shaders&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">6,144 CUDA&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">3,584 stream proc. (56 CU)&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">architecture-specific&lt;/td>&lt;/tr>
&lt;tr>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">VRAM&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">12GB GDDR7&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">16GB GDDR6&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;color:#8fdca0;">9070 (+4GB)&lt;/td>&lt;/tr>
&lt;tr>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">Memory bus&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">192-bit&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">256-bit&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;color:#8fdca0;">9070&lt;/td>&lt;/tr>
&lt;tr>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">Board power&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">250W&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">220W&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;color:#8fdca0;">9070 (–30W)&lt;/td>&lt;/tr>
&lt;tr>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">Upscaling&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">DLSS 4 (MFG)&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">FSR 4&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;color:#7fb0f0;">5070&lt;/td>&lt;/tr>
&lt;tr>&lt;td style="padding:0.55rem 0.75rem;">MSRP&lt;/td>&lt;td style="padding:0.55rem 0.75rem;">$549&lt;/td>&lt;td style="padding:0.55rem 0.75rem;">$549&lt;/td>&lt;td style="padding:0.55rem 0.75rem;">tie&lt;/td>&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The spec sheet tells the story in miniature: the 9070 brings &lt;strong>more memory, a wider bus, and lower power&lt;/strong>; the 5070 answers with &lt;strong>DLSS 4 and NVIDIA&amp;rsquo;s ray tracing pedigree&lt;/strong>. Note that shader counts don&amp;rsquo;t compare across brands — a CUDA core and an RDNA stream processor do different amounts of work — so the only thing that settles the performance question is real game testing. (For a build around either 220–250W card, our &lt;a href="https://techfuelhq.com/tools/psu-wattage-calculator/">PSU wattage calculator&lt;/a> sizes the supply; both are happy on a quality 650W unit.)&lt;/p>
&lt;h2 id="how-much-faster-is-the-rx-9070-really">How much faster is the RX 9070, really?&lt;/h2>
&lt;p>In &lt;a href="https://gamersnexus.net/gpus/incredibly-efficient-amd-rx-9070-gpu-review-benchmarks-vs-9070-xt-rtx-5070" rel="noopener">GamersNexus&amp;rsquo;s launch review&lt;/a>, the RX 9070 leads the RTX 5070 by roughly &lt;strong>11–15% at 1440p rasterization&lt;/strong> in the games that favor it — a couple land dead even — and the pattern holds at 4K. As always, the &lt;em>range&lt;/em> is the useful part:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Starfield (1440p):&lt;/strong> RX 9070 ~96 FPS vs RTX 5070 ~83 FPS — about a &lt;strong>15% lead&lt;/strong>.&lt;/li>
&lt;li>&lt;strong>Cyberpunk 2077 (1440p):&lt;/strong> the 9070 leads by roughly &lt;strong>11%&lt;/strong>.&lt;/li>
&lt;li>&lt;strong>Black Myth: Wukong (raster):&lt;/strong> the two land within error of each other — effectively tied.&lt;/li>
&lt;li>&lt;strong>At 4K:&lt;/strong> the 9070 is generally ahead again — around &lt;strong>+17% in Starfield&lt;/strong> and &lt;strong>+14–15%&lt;/strong> in Cyberpunk and Dragon&amp;rsquo;s Dogma 2 — though &lt;strong>Final Fantasy XIV&lt;/strong> flips it, with the RTX 5070 about &lt;strong>24% faster&lt;/strong> (a long-standing AMD weak spot).&lt;/li>
&lt;/ul>
&lt;p>So the honest read is &amp;ldquo;the 9070 is a bit faster than the 5070 in most rasterized games — call it low-double-digits — with the odd title going the other way.&amp;rdquo; That&amp;rsquo;s a real, repeatable edge, and it comes on top of 4GB more VRAM. For where both land against the rest of the stack, see the &lt;a href="https://techfuelhq.com/articles/gpu-hierarchy-2026/">2026 GPU hierarchy&lt;/a>, or line them up head-to-head in our &lt;a href="https://techfuelhq.com/tools/gpu-comparison/">GPU comparison tool&lt;/a>.&lt;/p>
&lt;h2 id="ray-tracing-where-the-rtx-5070-hits-back">Ray tracing: where the RTX 5070 hits back&lt;/h2>
&lt;p>This is the one category that reliably flips the verdict. RDNA 4 narrowed AMD&amp;rsquo;s historic ray tracing deficit, and in &lt;strong>lighter&lt;/strong> RT workloads the 9070 is genuinely competitive — GamersNexus even measured it ahead of the 5070 in Dragon&amp;rsquo;s Dogma 2 with RT enabled. But in &lt;strong>heavy, path-traced&lt;/strong> titles the NVIDIA card still pulls away hard: in Black Myth: Wukong at 4K with ray tracing, the RTX 5070 was roughly &lt;strong>57% faster&lt;/strong> than the 9070.&lt;/p>
&lt;p>The takeaway isn&amp;rsquo;t &amp;ldquo;AMD is bad at RT&amp;rdquo; — it&amp;rsquo;s that the gap scales with how aggressive the ray tracing is. Turn on a few reflections and shadows, and the cards are close. Turn on full path tracing in a showcase title, and the 5070 (plus DLSS 4) is in a different league. If ray tracing is central to what you play, that alone can justify the NVIDIA card.&lt;/p>
&lt;h2 id="the-quiet-wins-efficiency-and-vram">The quiet wins: efficiency and VRAM&lt;/h2>
&lt;p>Two advantages don&amp;rsquo;t show up on an FPS bar but matter over the life of the card.&lt;/p>
&lt;p>&lt;strong>Efficiency.&lt;/strong> The 9070&amp;rsquo;s 220W board power isn&amp;rsquo;t just 30W lower on paper — it&amp;rsquo;s more frames per watt in practice. GamersNexus called the card &amp;ldquo;incredibly efficient,&amp;rdquo; recording it near &lt;strong>RTX 5090-class efficiency&lt;/strong> in one 4K ray-traced test (about &lt;strong>0.21 FPS/W&lt;/strong> versus the RTX 5070&amp;rsquo;s &lt;strong>0.17&lt;/strong> — roughly 24% better there). In a real build that means a little less heat, a little less fan noise, and more headroom on a modest PSU.&lt;/p>
&lt;p>&lt;strong>VRAM longevity.&lt;/strong> The 5070&amp;rsquo;s &lt;strong>12GB is fine for 1440p today&lt;/strong>, but it&amp;rsquo;s the tighter of the two, and VRAM pressure only grows. Several 2026 titles already brush past 12GB at 4K with ultra textures or ray tracing — and when a GPU runs out of memory it doesn&amp;rsquo;t slow down gracefully, it stutters and quietly drops texture quality. The 9070&amp;rsquo;s &lt;strong>16GB&lt;/strong> is the safer place to put your money if you game at 4K or plan to keep the card &lt;strong>4+ years&lt;/strong>. It&amp;rsquo;s the same reason the VRAM question dominates the tier below, in our &lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5060-ti-vs-rx-9060-xt-1440p-showdown-2026/">RTX 5060 Ti vs RX 9060 XT showdown&lt;/a>.&lt;/p>
&lt;h2 id="dlss-4-vs-fsr-4--the-software-split">DLSS 4 vs FSR 4 — the software split&lt;/h2>
&lt;p>Upscaling is where NVIDIA keeps its clearest lead. The RTX 5070 supports &lt;strong>DLSS 4&lt;/strong>, including multi-frame generation, which is widely implemented and generally the quality benchmark. The RX 9070 uses &lt;strong>FSR 4&lt;/strong>, which on RDNA 4 closed much of the visual gap to DLSS but appears in &lt;strong>fewer games&lt;/strong>. If a title you care about supports one but not the other well, let that break the tie. And if you use your GPU for more than games — AI inference, video encoding, apps built on &lt;strong>CUDA/NVENC&lt;/strong> — that ecosystem is NVIDIA-only and a real reason to pick the 5070 despite its raster deficit.&lt;/p>
&lt;h2 id="the-price-picture-in-2026">The price picture in 2026&lt;/h2>
&lt;p>Here&amp;rsquo;s the part the launch-day guides get wrong today. Both cards carry a &lt;strong>$549 MSRP&lt;/strong>, and at MSRP the math is easy: same price, AMD faster in raster, buy AMD. But in a live Amazon check on &lt;strong>2026-07-20&lt;/strong>, that clean gap had mostly closed:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>RTX 5070&lt;/strong> partner cards ran roughly &lt;strong>$580–670&lt;/strong> (a PNY model listed at $629.99 with a $50 checkout coupon; several others $630–670).&lt;/li>
&lt;li>&lt;strong>RX 9070&lt;/strong> cards ran roughly &lt;strong>$610–686&lt;/strong> (XFX Swift ~$610–640, PowerColor Reaper ~$686).&lt;/li>
&lt;/ul>
&lt;p>In other words, they&amp;rsquo;re selling &lt;strong>within a model&amp;rsquo;s margin of each other right now&lt;/strong> — sometimes the cheapest 5070 is actually a touch less than the cheapest 9070. That&amp;rsquo;s a meaningful shift from the MSRP narrative: the RX 9070&amp;rsquo;s old &amp;ldquo;faster &lt;em>and&lt;/em> cheaper&amp;rdquo; pitch is now mostly just &amp;ldquo;faster in raster, similar price.&amp;rdquo; It&amp;rsquo;s still the value pick for rasterized gaming — you get more frames, more VRAM, and lower power for about the same outlay — but the decision is now &lt;strong>feature-driven&lt;/strong>, so weigh ray tracing, DLSS, and CUDA honestly before you buy. Prices here are a dated snapshot in a volatile market; check the live retailer price before committing.&lt;/p>
&lt;h2 id="dont-overlook-the-tier-neighbors">Don&amp;rsquo;t overlook the tier neighbors&lt;/h2>
&lt;p>Two cards sit one step away and are worth a glance before you commit. Above this pair, the &lt;strong>RX 9070 XT&lt;/strong> and &lt;strong>RTX 5070 Ti&lt;/strong> trade blows for a few hundred more — we cover that exact fight in &lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5070-ti-vs-rx-9070-xt-2026/">RTX 5070 Ti vs RX 9070 XT&lt;/a>, and the AMD-internal step up from this card in &lt;a href="https://techfuelhq.com/gpu-reviews/rx-9070-vs-rx-9070-xt-2026/">RX 9070 vs RX 9070 XT&lt;/a>. And if you&amp;rsquo;re cross-shopping NVIDIA&amp;rsquo;s own stack, the &lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5070-vs-5070-ti-2026/">RTX 5070 vs RTX 5070 Ti&lt;/a> breakdown shows why the Ti&amp;rsquo;s real-world premium is bigger than its MSRP suggests. If your budget is firmly at this tier, though, the 5070-versus-9070 decision below is the one that matters.&lt;/p>
&lt;h2 id="so-which-should-you-buy">So which should you buy?&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Pure 1440p gaming, best value:&lt;/strong> the &lt;strong>RX 9070&lt;/strong>. More frames, 16GB of VRAM, lower power, similar price (~$620, &lt;a href="https://www.amazon.com/dp/B0DXLBTL4B?tag=techfuelhq-20" rel="nofollow sponsored">XFX Swift RX 9070, Amazon&lt;/a>).&lt;/li>
&lt;li>&lt;strong>Ray tracing, DLSS 4, or creator/AI work:&lt;/strong> the &lt;strong>RTX 5070&lt;/strong>. You give up a little raster to gain the RT crown, DLSS 4 frame gen, and CUDA/NVENC (~$630, &lt;a href="https://www.amazon.com/dp/B0DYPFGL88?tag=techfuelhq-20" rel="nofollow sponsored">PNY RTX 5070, Amazon&lt;/a>).&lt;/li>
&lt;li>&lt;strong>Not sure yet:&lt;/strong> run both through the &lt;a href="https://techfuelhq.com/tools/gpu-comparison/">GPU comparison tool&lt;/a> and check the live price gap — at these near-equal prices, the tiebreaker is which feature set you&amp;rsquo;ll actually use.&lt;/li>
&lt;/ul>
&lt;p>The one mistake to avoid is buying on the year-old &amp;ldquo;9070 is faster for less&amp;rdquo; headline without checking today&amp;rsquo;s prices. In 2026 the two cards cost about the same, so pick the one whose strengths match how you play — raw 1440p frames and VRAM (AMD), or ray tracing and DLSS (NVIDIA).&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>NVIDIA — &lt;a href="https://www.nvidia.com/en-us/geforce/graphics-cards/50-series/rtx-5070-family/" rel="noopener">GeForce RTX 5070 family specifications&lt;/a> (RTX 5070 CUDA cores, 12GB GDDR7, 250W board power) — verified live 2026-07-20&lt;/li>
&lt;li>GamersNexus — &lt;a href="https://gamersnexus.net/gpus/incredibly-efficient-amd-rx-9070-gpu-review-benchmarks-vs-9070-xt-rtx-5070" rel="noopener">AMD RX 9070 GPU Review &amp;amp; Benchmarks vs. 9070 XT, RTX 5070&lt;/a> (RX 9070 architecture, 1440p/4K rasterization deltas, ray tracing, and per-watt efficiency) — verified live 2026-07-20&lt;/li>
&lt;li>RX 9070 specifications (RDNA 4, 56 compute units, 16GB GDDR6 on a 256-bit bus, 220W board power) and the &lt;strong>$549&lt;/strong> launch MSRP it shares with the RTX 5070 reflect both companies&amp;rsquo; March 2025 launches, cross-checked across multiple independent launch-day reports and the TechPowerUp GPU database.&lt;/li>
&lt;li>Prices: live Amazon snapshot, 2026-07-20 (retailer links above)&lt;/li>
&lt;/ul></description></item><item><title>RX 9070 vs RX 9070 XT: Which Radeon to Buy in 2026?</title><link>https://techfuelhq.com/gpu-reviews/rx-9070-vs-rx-9070-xt-2026/</link><pubDate>Mon, 20 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/gpu-reviews/rx-9070-vs-rx-9070-xt-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-07-20 · Updated 2026-07-20 · ~10 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence which products get recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR · The verdict in 2026&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>Performance:&lt;/strong> the XT is ~&lt;strong>7–12% faster at 1440p&lt;/strong> (~9% at 4K, up to ~16% in ray tracing) — real, but smaller than the name implies.&lt;/li>
&lt;li>&lt;strong>The catch is power:&lt;/strong> the XT draws &lt;strong>84W more&lt;/strong> (304W vs 220W board power) for that ~10%, so it runs hotter and wants a bigger PSU.&lt;/li>
&lt;li>&lt;strong>VRAM is a tie:&lt;/strong> both are &lt;strong>16GB GDDR6 on a 256-bit bus&lt;/strong>, same Navi 48 die — neither ages better on memory.&lt;/li>
&lt;li>&lt;strong>Buy the RX 9070 XT&lt;/strong> for max out-of-box frames or 4K (~$690, &lt;a href="https://www.amazon.com/dp/B0DSWJJRQX?tag=techfuelhq-20" rel="nofollow sponsored">PowerColor Reaper 9070 XT, Amazon&lt;/a>).&lt;/li>
&lt;li>&lt;strong>Buy the RX 9070&lt;/strong> for efficiency, a quieter build, and value (~$620, &lt;a href="https://www.amazon.com/dp/B0DXLBTL4B?tag=techfuelhq-20" rel="nofollow sponsored">XFX Swift RX 9070, Amazon&lt;/a>).&lt;/li>
&lt;/ul>
&lt;p style="margin:0.75rem 0 0 0;font-size:0.9rem;color:#a0a0b8;">Specs are from AMD; benchmark deltas are from independent testing (GamersNexus, PCWorld), cited inline. Prices are a live Amazon snapshot dated 2026-07-20 and move week to week in the current GDDR shortage — check the retailer link before buying.&lt;/p>
&lt;/div>
&lt;img src="https://techfuelhq.com/images/gpu-reviews/rx-9070-vs-rx-9070-xt-2026.svg" width="1200" height="675" loading="eager" fetchpriority="high" decoding="async" alt="RX 9070 vs RX 9070 XT in 2026: both use the same Navi 48 die with 16GB of GDDR6 on a 256-bit bus, but the XT enables 64 compute units versus 56 and clocks higher, making it about 7 to 12 percent faster at 1440p while drawing 84W more (304W versus 220W board power). The choice is performance versus efficiency versus price." style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;h2 id="the-9070-familys-confusing-middle">The 9070 family&amp;rsquo;s confusing middle&lt;/h2>
&lt;p>AMD&amp;rsquo;s RDNA 4 line put three cards within a hair of each other — the RX 9070, the RX 9070 XT, and the 12GB 9070 GRE — and the two that matter most for a mainstream build are the first two. They look nearly identical on a spec sheet, share the &lt;strong>same Navi 48 GPU&lt;/strong> and the &lt;strong>same 16GB of memory&lt;/strong>, and sell within about a hundred dollars of each other. So the real question isn&amp;rsquo;t &amp;ldquo;which is better&amp;rdquo; — the XT is, plainly — it&amp;rsquo;s &lt;strong>&amp;ldquo;is the XT&amp;rsquo;s extra performance worth its extra power and price for you?&amp;rdquo;&lt;/strong> That&amp;rsquo;s a narrower, more answerable question, and the numbers settle it. (If you&amp;rsquo;re cross-shopping the plain 9070 against NVIDIA instead, we cover that in &lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5070-vs-rx-9070-2026/">RTX 5070 vs RX 9070&lt;/a>.)&lt;/p>
&lt;h2 id="the-specs-honestly">The specs, honestly&lt;/h2>
&lt;p>Both cards are cut from the same silicon. The XT simply has more of it switched on, running faster:&lt;/p>
&lt;div style="overflow-x:auto;margin:1.5rem 0;">
&lt;table style="border-collapse:collapse;width:100%;min-width:600px;font-size:0.93rem;">
&lt;thead>&lt;tr style="background:rgba(200,255,0,0.06);text-align:left;">
&lt;th style="padding:0.6rem 0.75rem;border-bottom:1px solid #2a2a44;">Spec&lt;/th>
&lt;th style="padding:0.6rem 0.75rem;border-bottom:1px solid #2a2a44;">RX 9070&lt;/th>
&lt;th style="padding:0.6rem 0.75rem;border-bottom:1px solid #2a2a44;">RX 9070 XT&lt;/th>
&lt;th style="padding:0.6rem 0.75rem;border-bottom:1px solid #2a2a44;">Edge&lt;/th>
&lt;/tr>&lt;/thead>
&lt;tbody>
&lt;tr>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">Architecture&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">RDNA 4 (Navi 48)&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">RDNA 4 (Navi 48)&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">same die&lt;/td>&lt;/tr>
&lt;tr>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">Compute units&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">56&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">64&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;color:#f0b060;">XT (+14%)&lt;/td>&lt;/tr>
&lt;tr>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">Stream processors&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">3,584&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">4,096&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;color:#f0b060;">XT (+512)&lt;/td>&lt;/tr>
&lt;tr>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">VRAM&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">16GB GDDR6&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">16GB GDDR6&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">tie&lt;/td>&lt;/tr>
&lt;tr>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">Memory bus&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">256-bit&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">256-bit&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">tie&lt;/td>&lt;/tr>
&lt;tr>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">Board power&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">220W&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">304W&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;color:#8fdca0;">9070 (–84W)&lt;/td>&lt;/tr>
&lt;tr>&lt;td style="padding:0.55rem 0.75rem;">MSRP&lt;/td>&lt;td style="padding:0.55rem 0.75rem;">$549&lt;/td>&lt;td style="padding:0.55rem 0.75rem;">$599&lt;/td>&lt;td style="padding:0.55rem 0.75rem;">+$50&lt;/td>&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The XT enables about &lt;strong>14% more compute units and stream processors&lt;/strong> and clocks higher out of the box — on paper a decent jump. But paper isn&amp;rsquo;t frames, and the same die plus identical memory means the two behave far more alike than, say, &lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5070-vs-5070-ti-2026/">a 5070 versus a 5070 Ti&lt;/a> (which differ in VRAM too). Line them up against the rest of the stack in the &lt;a href="https://techfuelhq.com/articles/gpu-hierarchy-2026/">2026 GPU hierarchy&lt;/a> or the &lt;a href="https://techfuelhq.com/tools/gpu-comparison/">GPU comparison tool&lt;/a>.&lt;/p>
&lt;h2 id="how-much-faster-is-the-xt-really">How much faster is the XT, really?&lt;/h2>
&lt;p>Independent testing lands in a tight, consistent band. &lt;a href="https://gamersnexus.net/gpus/incredibly-efficient-amd-rx-9070-gpu-review-benchmarks-vs-9070-xt-rtx-5070" rel="noopener">GamersNexus&lt;/a> measured the 9070 XT &amp;ldquo;roughly 9–12% better than the 9070 in most of the games we tested&amp;rdquo; at 1440p — for example Dragon&amp;rsquo;s Dogma 2 at &lt;strong>116 FPS (XT) vs 106 FPS (9070)&lt;/strong>, a 9.3% gap. &lt;a href="https://www.pcworld.com/article/2627008/amd-radeon-rx-9070-and-9070-xt-review.html" rel="noopener">PCWorld&lt;/a> put the average lower still, at &lt;strong>about 7%&lt;/strong> across their suite. So the honest figure is &lt;strong>roughly 7–12% at 1440p&lt;/strong> — GamersNexus saw a similar ~9% at 4K (Dragon&amp;rsquo;s Dogma 2 at 70 vs 64 FPS) and a wider gap in ray tracing, up to about &lt;strong>16%&lt;/strong>, where the XT&amp;rsquo;s extra compute stretches its legs.&lt;/p>
&lt;p>That&amp;rsquo;s a real, repeatable edge — but it&amp;rsquo;s the kind of gap you measure with a frame counter, not one you feel across a session. Both cards clear high-refresh 1440p comfortably and handle entry 4K. Drivers have also matured since these March-2025 launch reviews, nudging RDNA 4 up a little across the board, but the &lt;em>relative&lt;/em> order hasn&amp;rsquo;t changed.&lt;/p>
&lt;h2 id="the-catch-84-watts-for-10">The catch: 84 watts for ~10%&lt;/h2>
&lt;p>Here&amp;rsquo;s the trade the spec sheet makes plain. That ~7–12% comes at a &lt;strong>304W board power rating versus 220W&lt;/strong> — an 84W jump — and independent testing measured real draw around &lt;strong>310W (XT) versus 224W (9070)&lt;/strong>. GamersNexus called the plain 9070 &amp;ldquo;incredibly efficient&amp;rdquo; and described it as sitting in &amp;ldquo;the so-called sweet spot of power and performance,&amp;rdquo; delivering more frames per watt than its bigger sibling.&lt;/p>
&lt;p>In a real build that gap matters more than a single-digit FPS delta. The 9070 runs cooler and quieter, fits comfortably on a quality 550–650W supply, and puts less heat into a small case; the XT wants stronger cooling, better airflow, and headroom on the PSU. Size either one with our &lt;a href="https://techfuelhq.com/tools/psu-wattage-calculator/">PSU wattage calculator&lt;/a> before you buy — the XT&amp;rsquo;s draw is a real line item, not a rounding error.&lt;/p>
&lt;h2 id="the-tiebreaker-that-isnt-vram">The tiebreaker that isn&amp;rsquo;t: VRAM&lt;/h2>
&lt;p>One of the biggest levers in most GPU comparisons is simply &lt;em>off the table&lt;/em> here. Both cards carry &lt;strong>16GB of GDDR6 on a 256-bit bus&lt;/strong> — identical memory, identical 640 GB/s of bandwidth. Neither will run out of VRAM before the other, and neither ages better on that axis. That&amp;rsquo;s the opposite of a cross-brand fight like &lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5070-vs-rx-9070-2026/">RTX 5070 vs RX 9070&lt;/a>, where the 12GB-vs-16GB question does real work. Between these two Radeons, forget VRAM and decide on performance, power, and price alone.&lt;/p>
&lt;h2 id="undervolt-and-the-value-case">Undervolt and the value case&lt;/h2>
&lt;p>RDNA 4 responds unusually well to tuning, and it cuts both ways in this matchup. The RX 9070 XT is a popular &lt;strong>&lt;a href="https://techfuelhq.com/articles/rx-9070-xt-undervolt-2026/">undervolt target&lt;/a>&lt;/strong> — dropping voltage trims its considerable power draw and temperatures with little performance loss (and, because the card is power-limited, often &lt;em>adds&lt;/em> a few frames), taking the sting out of that 304W rating. But the same flexibility means the base &lt;strong>RX 9070 overclocks well&lt;/strong>, so a tuned 9070 can close much of the gap to a stock XT. That&amp;rsquo;s why the community verdict — echoed in the buying advice that shows up right in Google&amp;rsquo;s own summary for this matchup — is that a cheaper 9070 you push a little is often the smarter money than paying up for the XT and leaving it stock.&lt;/p>
&lt;h2 id="the-price-picture-in-2026">The price picture in 2026&lt;/h2>
&lt;p>At MSRP this was an easy call: &lt;strong>$549 vs $599&lt;/strong> is a $50 (9%) step for ~7–12% more performance, so the XT was a textbook upsell. But like the rest of the market in 2026, neither sells at MSRP. In a live Amazon check on &lt;strong>2026-07-20&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>RX 9070&lt;/strong> cards ran roughly &lt;strong>$610–686&lt;/strong> (an XFX Swift near $620, a PowerColor Reaper toward $686).&lt;/li>
&lt;li>&lt;strong>RX 9070 XT&lt;/strong> cards ran roughly &lt;strong>$690–750&lt;/strong> for mainstream models (premium designs past $800).&lt;/li>
&lt;/ul>
&lt;p>So the street premium has widened to about &lt;strong>$80–100&lt;/strong>, not $50 — enough that the 9070&amp;rsquo;s efficiency and lower price tilt the value math back toward it. The XT is still the right buy if you want the most frames out of the box or you game at 4K; the 9070 is the pick if the premium is real to you or efficiency matters. A GDDR shortage keeps these prices volatile, so treat the snapshot as a method and check the live price before you commit.&lt;/p>
&lt;h2 id="so-which-should-you-buy">So which should you buy?&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Want the most performance out of the box, or game at 4K:&lt;/strong> the &lt;strong>RX 9070 XT&lt;/strong>. You pay ~$80–100 more and 84W more for &lt;del>7–12% higher frames, more in ray tracing (&lt;/del>$690, &lt;a href="https://www.amazon.com/dp/B0DSWJJRQX?tag=techfuelhq-20" rel="nofollow sponsored">PowerColor Reaper RX 9070 XT, Amazon&lt;/a>).&lt;/li>
&lt;li>&lt;strong>Value efficiency, a quiet build, or a smaller PSU:&lt;/strong> the &lt;strong>RX 9070&lt;/strong>. Same 16GB, &lt;del>90% of the frames, 84W less heat, and it undervolts-or-overclocks to taste (&lt;/del>$620, &lt;a href="https://www.amazon.com/dp/B0DXLBTL4B?tag=techfuelhq-20" rel="nofollow sponsored">XFX Swift RX 9070, Amazon&lt;/a>).&lt;/li>
&lt;li>&lt;strong>Cross-shopping NVIDIA:&lt;/strong> see how the tier lines up in &lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5070-ti-vs-rx-9070-xt-2026/">RTX 5070 Ti vs RX 9070 XT&lt;/a> and &lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5070-vs-rx-9070-2026/">RTX 5070 vs RX 9070&lt;/a>.&lt;/li>
&lt;/ul>
&lt;p>The one thing not to do is buy the XT purely because it has the &amp;ldquo;XT&amp;rdquo; on the box. It&amp;rsquo;s the faster card, but the gap is single-digits-to-low-double-digits, the power cost is real, and at 2026 street prices the plain 9070 is often the smarter buy. Decide on the price gap in front of you, not the badge.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>GamersNexus — &lt;a href="https://gamersnexus.net/gpus/incredibly-efficient-amd-rx-9070-gpu-review-benchmarks-vs-9070-xt-rtx-5070" rel="noopener">Incredibly Efficient: AMD RX 9070 GPU Review &amp;amp; Benchmarks vs. 9070 XT, RTX 5070&lt;/a> (1440p/4K raster deltas, ray tracing, power draw and efficiency) — verified live 2026-07-20&lt;/li>
&lt;li>PCWorld — &lt;a href="https://www.pcworld.com/article/2627008/amd-radeon-rx-9070-and-9070-xt-review.html" rel="noopener">AMD Radeon RX 9070 and 9070 XT review&lt;/a> (the ~7% XT-over-9070 average) — verified live 2026-07-20&lt;/li>
&lt;li>Core specs — 56 vs 64 compute units, 16GB GDDR6 on a 256-bit bus, and the ~224W vs ~310W measured power draw — are stated in the cited GamersNexus review; the &lt;strong>$549 vs $599&lt;/strong> MSRP is confirmed by the cited PCWorld review. Stream-processor counts (3,584 vs 4,096) follow from the compute-unit counts, and the 220W vs 304W board-power ratings are AMD&amp;rsquo;s published figures, corroborated by those measured draws.&lt;/li>
&lt;li>Prices: live Amazon snapshot, 2026-07-20 (retailer links above)&lt;/li>
&lt;/ul></description></item><item><title>RX 9070 XT Undervolt Guide: More FPS, Less Heat (2026)</title><link>https://techfuelhq.com/articles/rx-9070-xt-undervolt-2026/</link><pubDate>Mon, 20 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/rx-9070-xt-undervolt-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-07-20 · ~9 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/articles/rx-9070-xt-undervolt-2026.svg" width="1200" height="630" loading="eager" fetchpriority="high" decoding="async" alt="RX 9070 XT undervolt in AMD Adrenalin: a -80 to -100mV voltage offset with the power limit at -10% to -30% cuts power draw by 40 to 100W and temperatures by 5 to 10C while adding up to 10 percent more FPS on this 304W power-limited card, because lower voltage lets it hold higher sustained clocks. XDA measured Cyberpunk 2077 rising from 58 to 64 FPS at -100mV." style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;h2 id="the-one-tweak-that-makes-a-9070-xt-both-cooler-and-faster">The one tweak that makes a 9070 XT both cooler &lt;em>and&lt;/em> faster&lt;/h2>
&lt;p>The RX 9070 XT is a &lt;strong>304W card&lt;/strong> — the power-hungry end of AMD&amp;rsquo;s RDNA 4 stack, and the exact reason the plain &lt;a href="https://techfuelhq.com/gpu-reviews/rx-9070-vs-rx-9070-xt-2026/">RX 9070 wins on efficiency&lt;/a>. But that high power draw hides an opportunity: the XT frequently runs &lt;em>into&lt;/em> its power limit, throttling clocks to stay under the ceiling. Lower the voltage, and the card holds higher clocks at the same power — so undervolting a 9070 XT doesn&amp;rsquo;t just cut heat and noise, it can make the card &lt;strong>faster&lt;/strong>.&lt;/p>
&lt;p>That&amp;rsquo;s not the usual &amp;ldquo;undervolt for efficiency&amp;rdquo; story. &lt;a href="https://www.xda-developers.com/i-undervolted-my-gpu-and-got-the-upgrade-i-actually-wanted/" rel="noopener">XDA measured&lt;/a> a 9070 XT (a Sapphire NITRO+) at a &lt;strong>-100mV offset&lt;/strong> jumping from &lt;strong>58 to 64 FPS in Cyberpunk 2077&lt;/strong> — roughly a 10% gain — while running cooler and quieter. Community testers on the &lt;a href="https://www.reddit.com/r/radeon/comments/1j6mbey/mega_thread_9070_xt_undervoltoverclockbrand/" rel="noopener">r/radeon 9070 XT mega-thread&lt;/a> report the same pattern across brands. Here&amp;rsquo;s how to do it safely, and the settings people converge on.&lt;/p>
&lt;h2 id="why-undervolting-raises-clocks-on-this-card">Why undervolting &lt;em>raises&lt;/em> clocks on this card&lt;/h2>
&lt;p>Modern GPUs run a voltage-frequency relationship: every clock speed needs a minimum voltage to stay stable. AMD ships the 9070 XT with voltage headroom baked in for the worst-case chip, so most cards are running higher voltage than they actually need at a given clock.&lt;/p>
&lt;p>When you lower that voltage, one of two things happens depending on what&amp;rsquo;s limiting the card:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>If the card is power-limited&lt;/strong> (the common case on the 9070 XT under load), less voltage means less power at the same clock — so the card has budget left over, and its boost algorithm spends it climbing to &lt;em>higher&lt;/em> clocks. That&amp;rsquo;s where the free FPS comes from.&lt;/li>
&lt;li>&lt;strong>If the card is thermally or voltage-limited&lt;/strong>, the undervolt mainly buys you lower temperatures and quieter fans at the same performance.&lt;/li>
&lt;/ul>
&lt;p>Either way you win. The only real cost is the time it takes to test for stability, because every chip is slightly different (the &amp;ldquo;silicon lottery&amp;rdquo;).&lt;/p>
&lt;h2 id="what-you-need">What you need&lt;/h2>
&lt;p>Just one tool: &lt;strong>AMD Software: Adrenalin Edition&lt;/strong>, which is already installed with your Radeon driver. As &lt;a href="https://www.howtogeek.com/tips-for-undervolting-your-gaming-gpu/" rel="noopener">How-To Geek notes&lt;/a>, &amp;ldquo;AMD Software: Adrenalin Edition is all you need to undervolt your AMD GPU&amp;rdquo; — no MSI Afterburner or third-party utility required (that&amp;rsquo;s the NVIDIA workflow, which we cover in the &lt;a href="https://techfuelhq.com/articles/rtx-5080-undervolt-guide-2026/">RTX 5080 undervolt guide&lt;/a>; for the method across both brands, start with &lt;a href="https://techfuelhq.com/articles/how-to-undervolt-gpu-2026/">how to undervolt your GPU&lt;/a>). It helps to also have a monitoring overlay (Adrenalin&amp;rsquo;s own Performance Metrics, Alt+R → Performance, shows clock, voltage, power, and temperature under load).&lt;/p>
&lt;h2 id="step-1-record-your-baseline">Step 1: Record your baseline&lt;/h2>
&lt;p>Before changing anything, load the card and note where it sits. Run a demanding game or a benchmark for 10–15 minutes and record, from Adrenalin&amp;rsquo;s metrics overlay or HWiNFO64:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>GPU clock&lt;/strong> (sustained under load)&lt;/li>
&lt;li>&lt;strong>GPU power&lt;/strong> (board power, watts)&lt;/li>
&lt;li>&lt;strong>Temperatures&lt;/strong> — watch the &lt;strong>hotspot / junction&lt;/strong> temperature, not just the edge temperature&lt;/li>
&lt;li>&lt;strong>Average FPS&lt;/strong> in a repeatable test scene&lt;/li>
&lt;/ul>
&lt;p>These are the numbers you&amp;rsquo;re trying to beat: same or higher FPS, at lower power and temperature.&lt;/p>
&lt;h2 id="step-2-open-the-tuning-controls">Step 2: Open the tuning controls&lt;/h2>
&lt;ol>
&lt;li>Press &lt;strong>Alt+R&lt;/strong> to open AMD Software: Adrenalin Edition&lt;/li>
&lt;li>Go to the &lt;strong>Performance&lt;/strong> tab, then &lt;strong>Tuning&lt;/strong>&lt;/li>
&lt;li>Set the &lt;strong>Tuning Control&lt;/strong> dropdown to &lt;strong>Custom&lt;/strong>&lt;/li>
&lt;li>Enable &lt;strong>GPU Tuning&lt;/strong>&lt;/li>
&lt;/ol>
&lt;p>You&amp;rsquo;ll now see the manual controls. On RDNA 4 you adjust a &lt;strong>voltage offset&lt;/strong> (in millivolts) applied across the curve, plus a separate &lt;strong>power limit&lt;/strong> slider and optional VRAM controls.&lt;/p>
&lt;h2 id="step-3-apply-a-conservative-undervolt-first">Step 3: Apply a conservative undervolt first&lt;/h2>
&lt;p>Do &lt;strong>not&lt;/strong> start at -100mV. Silicon varies, and a too-aggressive first pass just wastes time chasing crashes. Instead:&lt;/p>
&lt;ol>
&lt;li>Set the &lt;strong>voltage offset to -40mV&lt;/strong> as a safe first step&lt;/li>
&lt;li>Enable &lt;strong>Power Tuning&lt;/strong> and set the &lt;strong>power limit to -10%&lt;/strong> (this keeps performance closest to stock while lowering temps)&lt;/li>
&lt;li>Click &lt;strong>Apply Changes&lt;/strong>&lt;/li>
&lt;li>Test (Step 5). If it&amp;rsquo;s stable, come back and step the offset down by &lt;strong>10–15mV&lt;/strong> at a time — toward -60, -80, then -100mV — retesting at each step&lt;/li>
&lt;/ol>
&lt;p>The community-converged sweet spot for a stable, balanced daily profile is a &lt;strong>-80mV to -100mV offset&lt;/strong> with the power limit between &lt;strong>-10% and -30%&lt;/strong>. Use -10% power limit for maximum performance, or -30% if your priority is the lowest power and heat. Some owners, for instance, prefer a &lt;strong>smaller ~-40mV offset paired with a deeper -30% power limit&lt;/strong> and a raised maximum frequency — the exact mix depends on your goal and your chip.&lt;/p>
&lt;h2 id="step-4-optional-recover-a-little-with-vram-and-clocks">Step 4: (Optional) recover a little with VRAM and clocks&lt;/h2>
&lt;p>Two optional extras, once your undervolt is stable:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>VRAM Fast Timing&lt;/strong> — enable it under Memory Tuning; it tightens memory timings for a small, free bump. Many 9070 XT cards also take a modest memory frequency increase.&lt;/li>
&lt;li>&lt;strong>Maximum frequency offset&lt;/strong> — because you&amp;rsquo;ve freed up power budget, you can nudge the max frequency up to push clocks higher still. Add this &lt;em>after&lt;/em> the undervolt is proven stable, and test again.&lt;/li>
&lt;/ul>
&lt;p>Keep changes small and test between each one. The goal is a profile that&amp;rsquo;s rock-solid for months, not a benchmark screenshot that crashes on the third game.&lt;/p>
&lt;h2 id="step-5-test-for-stability-the-part-people-skip">Step 5: Test for stability (the part people skip)&lt;/h2>
&lt;p>An undervolt that looks great for five minutes and crashes an hour into a game is worse than no undervolt. Test properly:&lt;/p>
&lt;ul>
&lt;li>Run a &lt;strong>demanding, real game&lt;/strong> — Cyberpunk 2077, a Unreal Engine 5 title, or your actual most-played game — for &lt;strong>15–20 minutes&lt;/strong>, ideally longer&lt;/li>
&lt;li>Or loop a benchmark like &lt;strong>3DMark Steel Nomad / Time Spy&lt;/strong>&lt;/li>
&lt;li>Watch for &lt;strong>driver timeouts, black screens, or crashes to desktop&lt;/strong> — these mean the voltage is too low for the clock. Raise the offset by &lt;strong>5–10mV&lt;/strong> and retest.&lt;/li>
&lt;/ul>
&lt;p>One important caution from &lt;a href="https://www.howtogeek.com/tips-for-undervolting-your-gaming-gpu/" rel="noopener">How-To Geek&lt;/a>: some games — &lt;strong>Unreal Engine 5 titles especially&lt;/strong> — are more sensitive and will crash on an undervolt that every other game tolerates. Adrenalin supports &lt;strong>per-game tuning profiles&lt;/strong>, so if one title is fussy you can give it a gentler undervolt without softening your global profile.&lt;/p>
&lt;h2 id="what-to-expect">What to expect&lt;/h2>
&lt;p>Results vary by chip and by game — these are community-reported ranges, not first-party measurements — but the pattern is consistent:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Power draw:&lt;/strong> community testers report roughly &lt;strong>40–100W lower&lt;/strong>, depending on how far you push the offset and power limit.&lt;/li>
&lt;li>&lt;strong>Temperatures:&lt;/strong> commonly &lt;strong>5–10°C lower&lt;/strong> on the hotspot, which also lets fans spin slower and quieter; testers frequently note reduced coil whine too.&lt;/li>
&lt;li>&lt;strong>Performance:&lt;/strong> anywhere from &lt;strong>unchanged to ~10% higher FPS&lt;/strong> in power-limited titles (XDA&amp;rsquo;s Cyberpunk 58→64 is a good example); synthetic and CPU-bound scenes show smaller gains.&lt;/li>
&lt;/ul>
&lt;p>For a card you might otherwise cross-shop against the plain 9070 purely on efficiency, an undervolt narrows that gap considerably — worth remembering when you read our &lt;a href="https://techfuelhq.com/gpu-reviews/rx-9070-vs-rx-9070-xt-2026/">RX 9070 vs RX 9070 XT&lt;/a> breakdown or weigh the XT against NVIDIA in &lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5070-ti-vs-rx-9070-xt-2026/">RTX 5070 Ti vs RX 9070 XT&lt;/a>.&lt;/p>
&lt;h2 id="make-it-stick-and-size-your-build">Make it stick, and size your build&lt;/h2>
&lt;p>Once you&amp;rsquo;ve settled on a profile, Adrenalin applies it automatically at startup — no manual step each boot. Two build notes:&lt;/p>
&lt;ul>
&lt;li>The undervolt lowers sustained draw, but size your PSU for the card&amp;rsquo;s real peak, not its undervolted average — our &lt;a href="https://techfuelhq.com/tools/psu-wattage-calculator/">PSU wattage calculator&lt;/a> does the math for a 9070 XT build.&lt;/li>
&lt;li>If you care about the running cost, the &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">power &amp;amp; cost calculator&lt;/a> turns &amp;ldquo;60W saved&amp;rdquo; into an actual dollar figure per year.&lt;/li>
&lt;/ul>
&lt;p>The 9070 XT rewards ten minutes in Adrenalin more than almost any card this generation: cooler, quieter, and often faster, for free. Just test it properly before you trust it. The same trade exists on the processor side — if you&amp;rsquo;re running a Ryzen X3D chip, the &lt;a href="https://techfuelhq.com/articles/9800x3d-undervolt-guide-2026/">9800X3D undervolt guide&lt;/a> walks through Curve Optimizer the same way.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>XDA — &lt;a href="https://www.xda-developers.com/i-undervolted-my-gpu-and-got-the-upgrade-i-actually-wanted/" rel="noopener">I undervolted my GPU and got the upgrade I actually wanted&lt;/a> (RX 9070 XT at -100mV, Cyberpunk 2077 58→64 FPS, lower temps/noise) — verified live 2026-07-20&lt;/li>
&lt;li>How-To Geek — &lt;a href="https://www.howtogeek.com/tips-for-undervolting-your-gaming-gpu/" rel="noopener">8 Tips for Undervolting Your Gaming GPU&lt;/a> (the AMD Adrenalin method; per-game profiles; UE5 crash caution) — verified live 2026-07-20&lt;/li>
&lt;li>r/radeon — &lt;a href="https://www.reddit.com/r/radeon/comments/1j6mbey/mega_thread_9070_xt_undervoltoverclockbrand/" rel="noopener">9070 XT Undervolt/Overclock/Brand mega-thread&lt;/a> (community-converged -80 to -100mV offset / -10% to -30% power-limit settings across brands)&lt;/li>
&lt;li>RX 9070 XT specs (RDNA 4, 64 compute units, 16GB GDDR6, 256-bit, 304W board power) as verified in our &lt;a href="https://techfuelhq.com/gpu-reviews/rx-9070-vs-rx-9070-xt-2026/">RX 9070 vs RX 9070 XT&lt;/a> comparison (GamersNexus)&lt;/li>
&lt;/ul></description></item><item><title>Seagate IronWolf vs IronWolf Pro vs Exos (2026)</title><link>https://techfuelhq.com/homelab/seagate-ironwolf-vs-ironwolf-pro-vs-exos-2026/</link><pubDate>Mon, 20 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/homelab/seagate-ironwolf-vs-ironwolf-pro-vs-exos-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-07-20 · Updated 2026-07-20 · ~13 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence which products get recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR · Which Seagate drive for your NAS&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>Light-duty home NAS (2–4 bays):&lt;/strong> standard &lt;strong>IronWolf&lt;/strong> — 180TB/year is plenty, and it's one of the cheapest new NAS-rated CMR drives. Tops out at 16TB.&lt;/li>
&lt;li>&lt;strong>Heavy 24-7 use or a big array:&lt;/strong> &lt;strong>IronWolf Pro&lt;/strong> — 550TB/year workload, 5-year warranty, 3 years of bundled Rescue Data Recovery, up to 32TB.&lt;/li>
&lt;li>&lt;strong>Best price-per-TB (the homelab move):&lt;/strong> a &lt;strong>recertified enterprise Exos&lt;/strong>. A recertified 16TB Exos was &lt;strong>$30.62/TB&lt;/strong> in our July 20 pull vs ~$43/TB for a new NAS drive — but check it's SATA, not SAS.&lt;/li>
&lt;li>&lt;strong>The reality:&lt;/strong> IronWolf Pro and Exos are the &lt;strong>same base drive&lt;/strong> with different firmware, grade, and warranty. For most home NAS builds, buy on price and warranty channel, not the badge.&lt;/li>
&lt;li>&lt;strong>The one rule:&lt;/strong> whatever tier you pick, run redundancy and keep a real 3-2-1 backup. RAID is not a backup.&lt;/li>
&lt;/ul>
&lt;p style="margin:0.75rem 0 0 0;font-size:0.9rem;color:#a0a0b8;">Spec numbers are from Seagate's current data sheets. Prices are a live Amazon snapshot dated 2026-07-20 and move week to week — check the retailer link before buying.&lt;/p>
&lt;/div>
&lt;img src="https://techfuelhq.com/images/homelab/seagate-ironwolf-vs-ironwolf-pro-vs-exos-2026.svg" width="1200" height="760" loading="lazy" decoding="async" alt="Seagate NAS drive tiers for 2026: IronWolf for a home 1-8 bay NAS (2-16TB, 180TB/year, 3-year warranty, about $43/TB new); IronWolf Pro for heavier 24-7 use or larger arrays (2-32TB, 550TB/year, 5-year warranty plus Rescue, about $44/TB new); and enterprise Exos (10-30TB, 0.35% rated failure rate, 5-year warranty, about $31/TB recertified). All three share the same base platform and differ mainly in firmware, validation grade, and warranty; for a quiet home NAS the cheapest CMR drive that fits your bays usually wins, often a recertified Exos." style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;h2 id="the-short-version">The short version&lt;/h2>
&lt;p>Seagate sells three families that all end up in NAS boxes, and the naming makes them sound like a simple good–better–best ladder. They mostly aren&amp;rsquo;t. Here is the 30-second version:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>IronWolf&lt;/strong> is the home/SOHO NAS drive: CMR, 1-to-8-bay rated, capacities from 2TB to 16TB, a 180TB/year workload rating, and a 3-year warranty.&lt;/li>
&lt;li>&lt;strong>IronWolf Pro&lt;/strong> is the heavier-duty NAS drive: same CMR, but a 550TB/year workload, 2.5-million-hour MTBF on the big models, a 5-year warranty, and capacities all the way to 32TB.&lt;/li>
&lt;li>&lt;strong>Exos&lt;/strong> is the enterprise/datacenter drive that homelabbers buy for its price per terabyte — the same 7200-RPM CMR mechanics, rated to a 0.35% annual failure rate, but sold through channels where &lt;strong>recertified&lt;/strong> units routinely undercut new NAS drives on $/TB.&lt;/li>
&lt;/ul>
&lt;p>The twist that the ranking forum threads and the AI Overview never quite pin down: &lt;strong>IronWolf Pro and Exos are, on the spec sheet, essentially the same drive&lt;/strong> — and the current IronWolf Pro has quietly closed the reliability-rating gap that used to separate them. So the real decision is less &amp;ldquo;which is the better drive&amp;rdquo; and more &amp;ldquo;which capacity, at which price, through which warranty channel.&amp;rdquo; Let&amp;rsquo;s ground all of that in the actual data sheets and a dated price pull. For the box these drives go into, see our &lt;a href="https://techfuelhq.com/homelab/best-budget-nas-builds-2025/">budget NAS build guide&lt;/a>; for the cross-brand best-picks by use case (WD Red Plus, Toshiba N300, and where Seagate fits), see the &lt;a href="https://techfuelhq.com/homelab/best-nas-hard-drives-2026/">best NAS hard drives guide&lt;/a>. This page is specifically about choosing &lt;em>within&lt;/em> the Seagate lineup.&lt;/p>
&lt;h2 id="the-spec-table--current-seagate-data-sheets">The spec table — current Seagate data sheets&lt;/h2>
&lt;p>Every number below is from Seagate&amp;rsquo;s current data sheets (linked in Sources), not a reseller listing. Where Seagate lists a value only for certain capacities, that&amp;rsquo;s noted.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Spec&lt;/th>
&lt;th scope="col">IronWolf&lt;/th>
&lt;th scope="col">IronWolf Pro&lt;/th>
&lt;th scope="col">Exos (X-series)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Role&lt;/strong>&lt;/td>
&lt;td>Home / SOHO NAS&lt;/td>
&lt;td>24-7 NAS, large arrays&lt;/td>
&lt;td>Enterprise / datacenter&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Capacities&lt;/strong>&lt;/td>
&lt;td>2–16TB&lt;/td>
&lt;td>2–32TB&lt;/td>
&lt;td>~10–30TB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Recording&lt;/strong>&lt;/td>
&lt;td>CMR&lt;/td>
&lt;td>CMR&lt;/td>
&lt;td>CMR&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Spindle&lt;/strong>&lt;/td>
&lt;td>7200 RPM (8TB+)&lt;/td>
&lt;td>7200 RPM&lt;/td>
&lt;td>7200 RPM&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Workload rating&lt;/strong>&lt;/td>
&lt;td>180 TB/yr&lt;/td>
&lt;td>550 TB/yr&lt;/td>
&lt;td>24-7 rated*&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>MTBF&lt;/strong>&lt;/td>
&lt;td>1.0M hr&lt;/td>
&lt;td>2.5M hr (12TB+)&lt;/td>
&lt;td>2.5M hr&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Rated AFR&lt;/strong>&lt;/td>
&lt;td>not published&lt;/td>
&lt;td>not published&lt;/td>
&lt;td>0.35%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Warranty&lt;/strong>&lt;/td>
&lt;td>3 yr&lt;/td>
&lt;td>5 yr&lt;/td>
&lt;td>5 yr&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Rescue Data Recovery&lt;/strong>&lt;/td>
&lt;td>3 yr included&lt;/td>
&lt;td>3 yr included&lt;/td>
&lt;td>none&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>RV sensors&lt;/strong>&lt;/td>
&lt;td>yes (all current)&lt;/td>
&lt;td>yes (all)&lt;/td>
&lt;td>yes&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Bays&lt;/strong>&lt;/td>
&lt;td>1–8&lt;/td>
&lt;td>unlimited&lt;/td>
&lt;td>enterprise (unlimited)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Interface&lt;/strong>&lt;/td>
&lt;td>SATA&lt;/td>
&lt;td>SATA&lt;/td>
&lt;td>SATA &lt;strong>or SAS&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p style="font-size:0.9rem;color:#a0a0b8;margin-top:-0.4rem;">*The Exos marketing data sheets cited here list a 0.35% annual failure rate and 24-7 operation (8,760 power-on hours/year) rather than a TB/year workload number; Exos is built for the same continuous-duty class as IronWolf Pro.&lt;/p>
&lt;p>Three things worth pulling out of that table:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>The standard IronWolf now reaches 16TB.&lt;/strong> Seagate&amp;rsquo;s September 2025 IronWolf data sheet lists 2, 4, 6, 8, 10, 12, and 16TB; the old 14TB and 18TB SKUs were dropped. If you see an 18TB &amp;ldquo;IronWolf&amp;rdquo; (non-Pro), it&amp;rsquo;s old stock, not the current line.&lt;/li>
&lt;li>&lt;strong>RV sensors are on every current model, even standard IronWolf.&lt;/strong> Older IronWolf data sheets marked the smallest capacities as lacking rotational-vibration sensors; the current sheet lists RV sensors as &amp;ldquo;yes&amp;rdquo; across the whole line. That&amp;rsquo;s a real improvement for anyone putting standard IronWolf into a multi-bay enclosure.&lt;/li>
&lt;li>&lt;strong>The workload gap is the clearest real difference.&lt;/strong> 180 vs 550 TB/year is the number that actually separates IronWolf from Pro/Exos. For a home NAS storing media and backups you will rarely approach even 180TB/year of writes; for a busy multi-user or surveillance array, the 550 rating (and the 5-year warranty that comes with it) is the honest reason to step up.&lt;/li>
&lt;/ul>
&lt;h2 id="are-exos-and-ironwolf-pro-the-same-drive">Are Exos and IronWolf Pro the same drive?&lt;/h2>
&lt;p>This is the single most-argued question in every Seagate NAS thread, and the forum answer — &amp;ldquo;they&amp;rsquo;re the same drive, Exos just has different firmware&amp;rdquo; — turns out to be &lt;em>mostly right&lt;/em>, but nobody grounds it. Here&amp;rsquo;s the spec-sheet evidence.&lt;/p>
&lt;p>Line up Seagate&amp;rsquo;s own data sheets for a &lt;strong>matched 16TB&lt;/strong> Exos X16 and IronWolf Pro and the mechanical fingerprint is identical, down to the gram:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Weight:&lt;/strong> 670 g on both.&lt;/li>
&lt;li>&lt;strong>Dimensions:&lt;/strong> 26.11 × 101.85 × 146.99 mm on both.&lt;/li>
&lt;li>&lt;strong>Spindle / cache / latency:&lt;/strong> 7200 RPM, 256MB cache, 4.16 ms average latency — identical.&lt;/li>
&lt;li>&lt;strong>Read-error rate:&lt;/strong> 1 per 10^15 bits on both.&lt;/li>
&lt;li>&lt;strong>Vibration tolerance:&lt;/strong> 12.5 rad/s² on both.&lt;/li>
&lt;/ul>
&lt;p>That is not what two &lt;em>different&lt;/em> drives look like. It&amp;rsquo;s what one base platform looks like, wearing two firmware loads and two labels. Seagate has never published a component-level bill of materials, so this is strong circumstantial evidence rather than a teardown — but a weight-to-the-gram, dimension-for-dimension, latency-for-latency match across two separate spec sheets is about as close as public documentation gets.&lt;/p>
&lt;p>&lt;strong>What actually differs&lt;/strong> is the grade and the software:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Validation / reliability rating.&lt;/strong> Exos is rated to a 0.35% AFR and 2.5M-hour MTBF; the older IronWolf Pro that shared the 16TB platform was rated 0.73% AFR / 1.2M-hour MTBF on its 2019 data sheet (linked in Sources). That&amp;rsquo;s an enterprise validation and binning difference, not a different mechanism.&lt;/li>
&lt;li>&lt;strong>Firmware and features.&lt;/strong> Exos adds enterprise-oriented features (PowerBalance, SuperParity, security/SED options, and a SAS variant). IronWolf Pro adds the consumer-friendly stack: IronWolf Health Management and 3 years of bundled Rescue Data Recovery.&lt;/li>
&lt;/ul>
&lt;p>Here&amp;rsquo;s the part the old threads miss: on the &lt;strong>current&lt;/strong> data sheets, IronWolf Pro has &lt;em>caught up&lt;/em>. Today&amp;rsquo;s IronWolf Pro (the &amp;ldquo;NT&amp;rdquo; models) is rated to the same &lt;strong>550 TB/year workload&lt;/strong> and the same &lt;strong>2.5-million-hour MTBF&lt;/strong> as Exos on the helium 12TB-and-up capacities. The historical &amp;ldquo;Exos is the more durable tier&amp;rdquo; gap is now largely a legacy-spec artifact — the current Pro is specced right alongside Exos, and simply adds Rescue and a retail warranty channel on top.&lt;/p>
&lt;p>So the accurate way to say it: &lt;strong>IronWolf Pro and Exos are the same base drive at similar grade; you&amp;rsquo;re really choosing a feature set and a purchase channel.&lt;/strong> Retail IronWolf Pro gets you Rescue, easy RMA, and a shelf full of new units. Exos gets you the enterprise feature options and — crucially — the recertified market, which is where the price story lives.&lt;/p>
&lt;h2 id="two-myths-spec-checked">Two myths, spec-checked&lt;/h2>
&lt;p>Because Exos is an &amp;ldquo;enterprise&amp;rdquo; drive, two beliefs follow it around. Both fail against Seagate&amp;rsquo;s own numbers.&lt;/p>
&lt;p>&lt;strong>&amp;ldquo;Exos is louder.&amp;rdquo;&lt;/strong> At a matched generation, the Exos X-series and IronWolf Pro publish the &lt;em>same&lt;/em> typical acoustics: about &lt;strong>2.8 bels idle and 3.2 bels seek&lt;/strong>. There is a genuine wrinkle worth flagging that no competitor mentions: Seagate reports acoustics inconsistently across its own lines — the consumer IronWolf sheet uses sound-&lt;em>pressure&lt;/em> dBA, while the Pro and Exos sheets use sound-&lt;em>power&lt;/em> bels — so a clean cross-line &amp;ldquo;X dBA vs Y dBA&amp;rdquo; comparison doesn&amp;rsquo;t actually exist in the source data. The honest read: all three are 7200-RPM drives, all are audible under seek, none is engineered to be quiet, and Exos&amp;rsquo;s louder reputation is mostly spin-up chatter plus the fact that people run bare enterprise drives in undampened cases. The homelab community consensus (r/DataHoarder, r/homelab) lands in the same place: recertified Exos &amp;ldquo;aren&amp;rsquo;t louder than IronWolf once spun up,&amp;rdquo; they&amp;rsquo;re just loud at boot — so isolate the NAS in a closet or a dampened case rather than choosing your drive by noise.&lt;/p>
&lt;p>&lt;strong>&amp;ldquo;Exos draws more power.&amp;rdquo;&lt;/strong> Also not supported at a matched size. At 16TB, idle power is &lt;strong>identical (5.0W on both)&lt;/strong> the Exos X16 and IronWolf Pro. Their operating figures aren&amp;rsquo;t directly comparable because Seagate publishes &amp;ldquo;max operating&amp;rdquo; for Exos and &amp;ldquo;average operating&amp;rdquo; for IronWolf Pro — different definitions, not a real gap. The newer, denser Exos X24 does idle higher (about 6.3W) than the 2019-era 16TB drives, but that&amp;rsquo;s a generational change (bigger cache, denser platters), not an Exos-versus-IronWolf penalty.&lt;/p>
&lt;h2 id="which-one-for-your-nas">Which one for &lt;em>your&lt;/em> NAS&lt;/h2>
&lt;p>Sort by what your NAS actually is:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>A quiet 2–4 bay home NAS for media and backups.&lt;/strong> Standard &lt;strong>IronWolf&lt;/strong> is enough. You will not touch the 180TB/year ceiling, RV sensors are now standard across the line, and it&amp;rsquo;s among the cheapest &lt;em>new&lt;/em> NAS-rated CMR drives. If a recertified Exos of the same size is meaningfully cheaper per TB and you run redundancy, take the Exos instead (see pricing below).&lt;/li>
&lt;li>&lt;strong>A busy always-on array, many users, virtualization, or 6+ bays.&lt;/strong> Step to &lt;strong>IronWolf Pro&lt;/strong> (or Exos). The 550TB/year workload and 5-year warranty are the point, and the bundled 3-year Rescue is a genuine safety net. Between Pro and Exos here, it&amp;rsquo;s price and warranty channel: new-with-Rescue (Pro) versus cheapest-per-TB (recertified Exos).&lt;/li>
&lt;li>&lt;strong>Chasing maximum capacity per dollar and you run ZFS/parity + backups.&lt;/strong> &lt;strong>Recertified enterprise Exos&lt;/strong>, full stop — it&amp;rsquo;s the homelab budget path and has been for years. Just confirm SATA vs SAS and treat the warranty as the seller&amp;rsquo;s, not Seagate&amp;rsquo;s.&lt;/li>
&lt;li>&lt;strong>Surveillance/NVR duty specifically.&lt;/strong> Neither of these three — that&amp;rsquo;s what SkyHawk is for — but if you&amp;rsquo;re mixing, an IronWolf/Pro handles light NVR loads fine.&lt;/li>
&lt;/ul>
&lt;p>Whatever you pick, size the array &lt;em>after&lt;/em> redundancy, not before: a four-bay box of 16TB drives is not 64TB usable once you account for a parity or mirror drive. Run the real numbers in the &lt;a href="https://techfuelhq.com/tools/nas-storage-calculator/">NAS &amp;amp; RAID storage calculator&lt;/a> before you buy.&lt;/p>
&lt;h2 id="the-tb-reality--live-amazon-snapshot-2026-07-20">The $/TB reality — live Amazon snapshot, 2026-07-20&lt;/h2>
&lt;p>Here&amp;rsquo;s where the decision usually gets made. Below is a live US Amazon price pull captured &lt;strong>2026-07-20&lt;/strong>; $/TB uses the drive&amp;rsquo;s marketed (decimal) capacity. &lt;strong>Prices move week to week in the 2026 drive market — treat this as a method, not a promise, and check the retailer link before buying.&lt;/strong>&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Drive (model)&lt;/th>
&lt;th scope="col">Condition&lt;/th>
&lt;th scope="col">Capacity&lt;/th>
&lt;th scope="col">Price&lt;/th>
&lt;th scope="col">$/TB&lt;/th>
&lt;th scope="col">Link&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Seagate IronWolf (ST12000VN0008)&lt;/td>
&lt;td>New&lt;/td>
&lt;td>12TB&lt;/td>
&lt;td>$429.99&lt;/td>
&lt;td>$35.83&lt;/td>
&lt;td>&lt;a href="https://www.amazon.com/dp/B084ZTSMWF?tag=techfuelhq-20" rel="nofollow sponsored">Amazon&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Seagate IronWolf (ST16000VN001)&lt;/td>
&lt;td>New&lt;/td>
&lt;td>16TB&lt;/td>
&lt;td>$689.97&lt;/td>
&lt;td>$43.12&lt;/td>
&lt;td>&lt;a href="https://www.amazon.com/dp/B07SGGWYC1?tag=techfuelhq-20" rel="nofollow sponsored">Amazon&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Seagate IronWolf Pro (ST12000NT001)&lt;/td>
&lt;td>New&lt;/td>
&lt;td>12TB&lt;/td>
&lt;td>$459.99&lt;/td>
&lt;td>$38.33&lt;/td>
&lt;td>&lt;a href="https://www.amazon.com/dp/B0B94KSFTH?tag=techfuelhq-20" rel="nofollow sponsored">Amazon&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Seagate IronWolf Pro (ST16000NT001)&lt;/td>
&lt;td>New&lt;/td>
&lt;td>16TB&lt;/td>
&lt;td>$698.00&lt;/td>
&lt;td>$43.63&lt;/td>
&lt;td>&lt;a href="https://www.amazon.com/dp/B0B94NFYWX?tag=techfuelhq-20" rel="nofollow sponsored">Amazon&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Seagate IronWolf Pro (ST20000NT001)&lt;/td>
&lt;td>New&lt;/td>
&lt;td>20TB&lt;/td>
&lt;td>$669.99&lt;/td>
&lt;td>&lt;strong>$33.50&lt;/strong>&lt;/td>
&lt;td>&lt;a href="https://www.amazon.com/dp/B0B94MF4LP?tag=techfuelhq-20" rel="nofollow sponsored">Amazon&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Seagate Exos X18 (ST16000NM000J)&lt;/td>
&lt;td>New&lt;/td>
&lt;td>16TB&lt;/td>
&lt;td>$685.00&lt;/td>
&lt;td>$42.81&lt;/td>
&lt;td>&lt;a href="https://www.amazon.com/dp/B08JV7N6J1?tag=techfuelhq-20" rel="nofollow sponsored">Amazon&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Seagate Exos X16 (ST16000NM001G)&lt;/td>
&lt;td>&lt;strong>Recertified&lt;/strong>&lt;/td>
&lt;td>16TB&lt;/td>
&lt;td>$489.99&lt;/td>
&lt;td>&lt;strong>$30.62&lt;/strong>&lt;/td>
&lt;td>&lt;a href="https://www.amazon.com/dp/B08JYQKVJP?tag=techfuelhq-20" rel="nofollow sponsored">Amazon&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Seagate IronWolf Pro (ST16000NE000)&lt;/td>
&lt;td>&lt;strong>Recertified&lt;/strong>&lt;/td>
&lt;td>16TB&lt;/td>
&lt;td>$599.00&lt;/td>
&lt;td>$37.44&lt;/td>
&lt;td>&lt;a href="https://www.amazon.com/dp/B09G8JLRZ5?tag=techfuelhq-20" rel="nofollow sponsored">Amazon&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Seagate Exos (ST26000NM000C)&lt;/td>
&lt;td>&lt;strong>Recertified&lt;/strong>&lt;/td>
&lt;td>26TB&lt;/td>
&lt;td>$669.00&lt;/td>
&lt;td>&lt;strong>$25.73&lt;/strong>&lt;/td>
&lt;td>&lt;a href="https://www.amazon.com/dp/B0H27B3ZDS?tag=techfuelhq-20" rel="nofollow sponsored">Amazon&lt;/a>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Three takeaways jump out:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Recertified enterprise Exos is the $/TB champion by a wide margin.&lt;/strong> A recertified 16TB Exos at &lt;strong>$30.62/TB&lt;/strong> undercut a &lt;em>new&lt;/em> IronWolf Pro 16TB ($43.63/TB) by about 30%, and a recertified 26TB Exos fell to &lt;strong>$25.73/TB&lt;/strong> — the cheapest per terabyte in the table. This is exactly the play the homelab community leans on during the 2026 drive crunch.&lt;/li>
&lt;li>&lt;strong>Within the new drives, IronWolf and IronWolf Pro are nearly the same price at a given capacity&lt;/strong> (16TB: $689.97 vs $698.00). So if you&amp;rsquo;re buying new at 16TB, the Pro&amp;rsquo;s extra workload rating, 5-year warranty, and Rescue cost only a few dollars — an easy upgrade.&lt;/li>
&lt;li>&lt;strong>Bigger isn&amp;rsquo;t reliably cheaper per TB, but sometimes it is.&lt;/strong> The new IronWolf Pro 20TB ($33.50/TB) was cheaper per terabyte than the 16TB ($43.63/TB) in this pull — a shortage-pricing quirk. Always run the per-TB number for your target capacity on the day you buy.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>The SATA-vs-SAS trap.&lt;/strong> One thing to check before you click on any cheap Exos: &lt;strong>some Exos listings are SAS, not SATA.&lt;/strong> In this very pull, the &amp;ldquo;Exos X24 16TB&amp;rdquo; that surfaced first (ST16000NM002H) was a &lt;em>SAS&lt;/em> drive — it will not plug into a standard SATA NAS bay without a SAS HBA. Recertified enterprise pulls are especially likely to be SAS. Read the interface in the title/specs; if it doesn&amp;rsquo;t say SATA, assume SAS.&lt;/p>
&lt;p>For the recertified route specifically — the warranty reality, review-count trust signal, and which sellers homelabbers actually use — see the recertified section of the &lt;a href="https://techfuelhq.com/homelab/best-nas-hard-drives-2026/">best NAS hard drives guide&lt;/a> and the drive-buying breakdown in the &lt;a href="https://techfuelhq.com/homelab/best-budget-nas-builds-2025/">budget NAS build guide&lt;/a>, which also covers the burn-in test you should run the day a recertified drive arrives.&lt;/p>
&lt;h2 id="what-the-real-world-failure-data-actually-says">What the real-world failure data actually says&lt;/h2>
&lt;p>Spec-sheet MTBF is a modeled number, not a promise. The closest thing to real-world data is &lt;a href="https://www.backblaze.com/blog/backblaze-drive-stats-for-2025/" rel="noopener">Backblaze&amp;rsquo;s Drive Stats&lt;/a>, which tracks hundreds of thousands of drives in production. Their full-year 2025 failure-rate analysis covered &lt;strong>344,196 drives&lt;/strong> (the set left after excluding boot drives and thinly-populated models) and put the &lt;strong>fleet-wide annualized failure rate at 1.36%&lt;/strong> (down from 1.55% in 2024), with a lifetime AFR of 1.30%.&lt;/p>
&lt;p>Two honest caveats that most articles quoting Backblaze skip:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Backblaze runs Exos-class enterprise drives, not consumer IronWolf.&lt;/strong> Every Seagate model in their 2025 tables is an enterprise &amp;ldquo;ST…NM…&amp;rdquo; drive. Consumer IronWolf (&lt;code>ST…VN…&lt;/code>) and IronWolf Pro (&lt;code>ST…NE…&lt;/code>/&lt;code>NT…&lt;/code>) don&amp;rsquo;t appear in the fleet at all — Backblaze buys enterprise. So &amp;ldquo;Backblaze shows Seagate is reliable&amp;rdquo; is really a statement about &lt;strong>Exos-class&lt;/strong> drives, which is genuinely reassuring for the recertified-Exos route, but tells you little about the consumer IronWolf line.&lt;/li>
&lt;li>&lt;strong>The specific per-model annual percentages live in an image table that isn&amp;rsquo;t machine-readable, so we won&amp;rsquo;t quote a number we can&amp;rsquo;t verify&lt;/strong> — a good rule for any stat. What &lt;em>is&lt;/em> verifiable from Backblaze&amp;rsquo;s own notes: several Exos-class Seagate models had a standout-low year (the 16TB ST16000NM002J logged a single failure across 2025 and zero in Q4), while an aging 10TB Exos-class model was flagged as a high-failure outlier at end-of-life. The pattern — modern high-capacity enterprise drives failing rarely, worn-out old ones failing more — is exactly what you&amp;rsquo;d expect, and it&amp;rsquo;s the argument for buying recertified drives that still have plenty of rated life and pairing them with redundancy.&lt;/li>
&lt;/ul>
&lt;p>Bottom line on reliability: Seagate rates Exos to 0.35% AFR, the current IronWolf Pro to the same 2.5M-hour MTBF, and Backblaze&amp;rsquo;s real fleet of enterprise Seagate drives runs well under a couple of percent a year. None of that replaces a backup. Every tier here fails eventually; the drive tier matters far less than running RAID/RAIDZ so one failure doesn&amp;rsquo;t lose data and keeping a real &lt;a href="https://techfuelhq.com/tutorials/proxmox-backup-server-3-2-1-2026/">3-2-1 backup&lt;/a>.&lt;/p>
&lt;h2 id="what-competing-guides-skip-our-angle">What competing guides skip (our angle)&lt;/h2>
&lt;p>Most &amp;ldquo;IronWolf vs Pro vs Exos&amp;rdquo; pages are stale forum threads or generic &amp;ldquo;Pro has a longer warranty&amp;rdquo; listicles. Three things they consistently miss, all covered above:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>The spec-grounded &amp;lsquo;same drive&amp;rsquo; answer.&lt;/strong> We lined up the matched 16TB data sheets to show the identical mechanical fingerprint — and flagged that current IronWolf Pro has closed the old workload/MTBF gap with Exos, which most comparisons still describe using 2019-era numbers.&lt;/li>
&lt;li>&lt;strong>The unit-inconsistency behind the &amp;lsquo;Exos is louder&amp;rsquo; myth.&lt;/strong> Seagate publishes acoustics in different units across its lines, so the common noise comparison is comparing sound pressure to sound power. We said so.&lt;/li>
&lt;li>&lt;strong>The SATA-vs-SAS trap and a dated, real $/TB table&lt;/strong> with the recertified-Exos value laid out honestly — including that recertified enterprise Exos beat new NAS drives by ~30% per terabyte in our July 20 pull.&lt;/li>
&lt;/ul>
&lt;h2 id="related-reading">Related reading&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/best-nas-hard-drives-2026/">Best NAS hard drives 2026&lt;/a> — the cross-brand picks (WD Red Plus, IronWolf Pro, Toshiba N300) by use case, with the CMR-vs-SMR history and the recertified warranty details.&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/best-budget-nas-builds-2025/">Best budget NAS builds 2026&lt;/a> — the chassis and platform these drives go into, plus the new-vs-recertified-vs-shuck decision.&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/best-nas-for-plex-jellyfin-2026/">Best NAS for Plex and Jellyfin 2026&lt;/a> — when the media workload, not the disk, drives the build.&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/proxmox-truenas-unraid-storage-backend-2026/">TrueNAS vs Unraid vs Proxmox storage backend&lt;/a> — the OS/filesystem layer that turns these disks into a pool.&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tools/nas-storage-calculator/">NAS &amp;amp; RAID storage calculator&lt;/a> — real usable capacity after redundancy, before you buy.&lt;/li>
&lt;/ul>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;p>Manufacturer specifications (Seagate data sheets, verified live):&lt;/p>
&lt;ul>
&lt;li>Seagate IronWolf data sheet (DS1904.23-2509US, Sept 2025): &lt;a href="https://www.seagate.com/content/dam/seagate/en/content-fragments/products/datasheets/ironwolf-12tb/ironwolf-16tb-DS1904-23-2509US-en_US.pdf" rel="noopener">https://www.seagate.com/content/dam/seagate/en/content-fragments/products/datasheets/ironwolf-12tb/ironwolf-16tb-DS1904-23-2509US-en_US.pdf&lt;/a>&lt;/li>
&lt;li>Seagate IronWolf Pro data sheet (DS2129.7-2510US, Oct 2025): &lt;a href="https://www.seagate.com/content/dam/seagate/en/content-fragments/products/datasheets/ironwolf-pro-32-tb/ironwolf-pro-32-tb-DS2129-7-2510US-en_US.pdf" rel="noopener">https://www.seagate.com/content/dam/seagate/en/content-fragments/products/datasheets/ironwolf-pro-32-tb/ironwolf-pro-32-tb-DS2129-7-2510US-en_US.pdf&lt;/a>&lt;/li>
&lt;li>Seagate IronWolf Pro product page: &lt;a href="https://www.seagate.com/products/nas-drives/ironwolf-pro-hard-drive/" rel="noopener">https://www.seagate.com/products/nas-drives/ironwolf-pro-hard-drive/&lt;/a>&lt;/li>
&lt;li>Seagate IronWolf Pro 16TB data sheet (legacy DS1914.10-1905US — the 2019 sheet behind the matched-16TB comparison): &lt;a href="https://www.seagate.com/www-content/datasheets/pdfs/ironwolf-pro-16tb-DS1914-10-1905US-en_US.pdf" rel="noopener">https://www.seagate.com/www-content/datasheets/pdfs/ironwolf-pro-16tb-DS1914-10-1905US-en_US.pdf&lt;/a>&lt;/li>
&lt;li>Seagate Exos X24 data sheet (DS2080-2307US): &lt;a href="https://www.seagate.com/content/dam/seagate/en/content-fragments/products/datasheets/exos-x24/exos-x24-DS2080-2307US-en_US.pdf" rel="noopener">https://www.seagate.com/content/dam/seagate/en/content-fragments/products/datasheets/exos-x24/exos-x24-DS2080-2307US-en_US.pdf&lt;/a>&lt;/li>
&lt;li>Seagate Exos X16 data sheet (DS2011.1-1904US): &lt;a href="https://www.seagate.com/files/www-content/datasheets/pdfs/exos-x16-DS2011-1-1904US-en_US.pdf" rel="noopener">https://www.seagate.com/files/www-content/datasheets/pdfs/exos-x16-DS2011-1-1904US-en_US.pdf&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Real-world reliability:&lt;/p>
&lt;ul>
&lt;li>Backblaze Drive Stats for 2025: &lt;a href="https://www.backblaze.com/blog/backblaze-drive-stats-for-2025/" rel="noopener">https://www.backblaze.com/blog/backblaze-drive-stats-for-2025/&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Community discussion (homelab consensus on overkill, noise, and recertified value) was reviewed on r/homelab and r/DataHoarder and is cited inline as community opinion, not spec fact. Prices are a live Amazon snapshot dated 2026-07-20.&lt;/p></description></item><item><title>Best NAS for Plex &amp; Jellyfin 2026: Which Ones Actually Hardware-Transcode</title><link>https://techfuelhq.com/homelab/best-nas-for-plex-jellyfin-2026/</link><pubDate>Sun, 19 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/homelab/best-nas-for-plex-jellyfin-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-07-19 · Updated 2026-07-19 · ~13 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence which products get recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR · What to actually buy in 2026&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>Best budget (2-bay, real transcode):&lt;/strong> UGREEN NASync DXP2800 — Intel N100, 8GB DDR5, Quick Sync works (~$390 diskless, observed 2026-07-19).&lt;/li>
&lt;li>&lt;strong>Best mainstream (4-bay):&lt;/strong> UGREEN NASync DXP4800 Plus — Intel Pentium Gold 8505, 8GB DDR5, 10GbE, Quick Sync (~$657).&lt;/li>
&lt;li>&lt;strong>Best for heavy 4K / many streams:&lt;/strong> TerraMaster F4-424 Pro — Intel Core i3-N305 8-core, 32GB, 4K HW transcode (~$688).&lt;/li>
&lt;li>&lt;strong>Best value:&lt;/strong> an Intel N100/N150 &lt;strong>mini-PC + a NAS/DAS for storage&lt;/strong> — same Quick Sync engine, more transcode-per-dollar than most appliances.&lt;/li>
&lt;li>&lt;strong>The one rule:&lt;/strong> buy &lt;strong>Intel Quick Sync&lt;/strong>. In 2026 that means &lt;strong>not&lt;/strong> a current Synology (see below), and never an ARM/Realtek box.&lt;/li>
&lt;/ul>
&lt;p style="margin:0.75rem 0 0 0;font-size:0.9rem;color:#a0a0b8;">CPU and transcode facts are from manufacturer and Plex/Jellyfin documentation, cited inline. Prices are a live Amazon snapshot dated 2026-07-19 and move week to week — the 2026 memory/storage shortage has hardware prices unusually volatile, so check the retailer link before buying.&lt;/p>
&lt;/div>
&lt;img src="https://techfuelhq.com/images/homelab/best-nas-for-plex-jellyfin-2026.svg" width="1200" height="675" loading="eager" fetchpriority="high" decoding="async" alt="Best NAS for Plex and Jellyfin 2026, chosen by hardware transcoding: budget 2-bay UGREEN DXP2800 (Intel N100, Quick Sync), mainstream 4-bay UGREEN DXP4800 Plus (Pentium Gold 8505), heavy-4K TerraMaster F4-424 Pro (Core i3-N305), and the value pick of an Intel N100 mini-PC plus separate storage. The one rule: buy Intel Quick Sync, which in 2026 rules out the current Synology lineup." style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;h2 id="start-here-do-you-even-need-to-transcode">Start here: do you even need to transcode?&lt;/h2>
&lt;p>Almost every &amp;ldquo;best NAS for Plex&amp;rdquo; guide skips the one question that should drive the whole purchase, so let&amp;rsquo;s put it first. A media server does the least work when it &lt;strong>Direct Plays&lt;/strong> — hands the file to your player untouched. The server&amp;rsquo;s effort climbs from there: Direct Play → Remux (swap the container) → Direct Stream (convert audio only) → &lt;strong>Transcode&lt;/strong> (rebuild the video), per &lt;a href="https://jellyfin.org/docs/general/post-install/transcoding/" rel="noopener">Jellyfin&amp;rsquo;s transcoding docs&lt;/a>. Transcoding is the expensive one, and it&amp;rsquo;s a &lt;em>fallback&lt;/em> — it only happens when the client can&amp;rsquo;t play the file as-is.&lt;/p>
&lt;p>There are really only three triggers: an &lt;strong>unsupported codec or container&lt;/strong> on the client, a &lt;strong>bandwidth/bitrate cap&lt;/strong> (usually remote streaming), or &lt;strong>subtitle burn-in&lt;/strong> — and note that image-based subtitles like PGS or VOBSUB force a &lt;em>full&lt;/em> video transcode even when the video itself was fine. A modern player — Apple TV 4K, an NVIDIA Shield, a Fire TV Stick 4K Max — direct-plays most H.264 and HEVC natively, which means a lot of home setups rarely transcode at all. If that&amp;rsquo;s you, an ARM NAS is a perfectly good &lt;em>storage&lt;/em> box.&lt;/p>
&lt;p>So the honest buying rule is: &lt;strong>match your player to your files first, then buy exactly as much transcode headroom as the cases you can&amp;rsquo;t avoid demand.&lt;/strong> The one case that will force your hand is &lt;strong>4K HDR tone-mapping&lt;/strong> (playing 4K HDR content on an SDR target). Jellyfin&amp;rsquo;s own &lt;a href="https://jellyfin.org/docs/general/administration/hardware-selection/" rel="noopener">hardware-selection guide&lt;/a> is blunt about it: tone-mapping 4K60 Dolby Vision to H.264 SDR &amp;ldquo;requires a Ryzen 9 5950X for faster than real-time&amp;rdquo; in software, so &amp;ldquo;a GPU is ALWAYS recommended.&amp;rdquo; That single workload is why hardware transcoding — and therefore the CPU inside your NAS — is the spec that matters.&lt;/p>
&lt;h2 id="the-one-rule-intel-quick-sync-and-what-it-rules-out-in-2026">The one rule: Intel Quick Sync (and what it rules out in 2026)&lt;/h2>
&lt;p>Hardware transcoding on a NAS almost always means &lt;strong>Intel Quick Sync&lt;/strong>, the video engine baked into Intel&amp;rsquo;s integrated graphics. It lets a low-power chip transcode several streams while the CPU stays near idle. The practical compatibility line is simple:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Intel with an iGPU (Quick Sync) → yes.&lt;/strong> N100, N150, N95, N5105, J4125, J6412, Pentium Gold 8505, Core i3-N305, Core i5-1235U, and friends.&lt;/li>
&lt;li>&lt;strong>ARM / Realtek → no.&lt;/strong> No Quick Sync at all; these choke after roughly one software-transcoded stream. Fine for storage and Direct Play only.&lt;/li>
&lt;li>&lt;strong>AMD without an iGPU → no.&lt;/strong> Some embedded Ryzen parts (see Synology below) have &lt;em>no&lt;/em> integrated graphics, so every transcode falls back to the CPU.&lt;/li>
&lt;li>&lt;strong>AMD &lt;em>with&lt;/em> a Radeon iGPU → it depends.&lt;/strong> Parts like the Ryzen Embedded R2514 (Radeon Vega 8) can hardware-transcode through VAAPI, which Jellyfin handles well but Plex supports inconsistently.&lt;/li>
&lt;/ul>
&lt;p>Which brings us to the trap that makes this guide necessary.&lt;/p>
&lt;h3 id="the-2026-synology-transcode-trap">The 2026 Synology transcode trap&lt;/h3>
&lt;p>For a decade the default answer to &amp;ldquo;best NAS for Plex&amp;rdquo; was &amp;ldquo;a Synology.&amp;rdquo; &lt;strong>In 2026 that answer is usually wrong&lt;/strong>, and almost no competing guide explains why — because it broke in &lt;em>two different ways&lt;/em> at once.&lt;/p>
&lt;p>&lt;strong>Prong one — the AMD models have no iGPU.&lt;/strong> Synology&amp;rsquo;s 2025 Plus units moved to AMD Ryzen embedded chips with no integrated graphics. The &lt;strong>DS925+&lt;/strong> and DS1525+ use the Ryzen V1500B; the DS923+, DS723+ and DS725+ use the R1600. Reviewers put it plainly — the V1500B &amp;ldquo;does not have an embedded GPU… you will be unable to use the Plex hardware acceleration functionality.&amp;rdquo; Every transcode on these boxes is software-only, which a 40+ Mbps 10-bit 4K HEVC stream will not survive gracefully.&lt;/p>
&lt;p>&lt;strong>Prong two — the Intel models had their driver removed.&lt;/strong> The 2025 &lt;strong>DS225+&lt;/strong> and &lt;strong>DS425+&lt;/strong> still ship the same Intel Celeron &lt;strong>J4125&lt;/strong> with Quick Sync silicon as older units — but Synology stripped the i915 iGPU kernel driver out of DSM on the 25-series, disabling hardware H.264/HEVC transcoding at the software level. Synology&amp;rsquo;s own statement, quoted in a widely-shared &lt;a href="https://community.getchannels.com/t/psa-new-synology-nas-models-no-longer-support-hardware-transcoding/44542" rel="noopener">Channels community PSA&lt;/a>, is that &amp;ldquo;starting with products released in 2025 and beyond, even if the CPU supports hardware transcoding, we will no longer provide the driver required to enable it,&amp;rdquo; citing HEVC licensing. Threads on &lt;a href="https://www.synoforum.com/threads/how-to-fix-graphics-drivers-and-hardware-transcoding-on-synology-ds225-ds425-nas-solved.15308/" rel="noopener">SynoForum&lt;/a> document the same removal. The lone 2025 exception is the BeeStation Plus, for which Synology paid the codec licenses. A community SSH workaround exists to re-inject the driver on a DS225+/DS425+, but it&amp;rsquo;s unsupported and reapplies itself after every reboot or DSM update — a curiosity, not a reason to buy.&lt;/p>
&lt;p>The result is a genuine consumer trap: the DS225+ is even &lt;em>marketed&lt;/em> on Amazon with the title &amp;ldquo;Intel CPU for Hardware Transcoding,&amp;rdquo; which is true about the silicon and false about what DSM will actually let Plex or Jellyfin do. So: &lt;strong>do not buy a current Synology as an out-of-box media transcoder.&lt;/strong> The &lt;a href="https://www.amazon.com/dp/B0FB7KQLR1?tag=techfuelhq-20" rel="nofollow sponsored noopener">DS225+&lt;/a> (&lt;del>$360), &lt;a href="https://www.amazon.com/dp/B0F895RV3K?tag=techfuelhq-20" rel="nofollow sponsored noopener">DS425+&lt;/a> (&lt;/del>$545) and &lt;a href="https://www.amazon.com/dp/B0C8S7SF4B?tag=techfuelhq-20" rel="nofollow sponsored noopener">DS925+&lt;/a> (~$695) are fine NAS units for many jobs — hardware media transcoding is not one of them in 2026. (Older 24-series Intel boxes like the DS224+/DS423+ still transcode via Quick Sync, but the diskless SKUs are effectively gone from Amazon&amp;rsquo;s first-party listings and are being phased out — don&amp;rsquo;t build a 2026 purchase around finding one new.)&lt;/p>
&lt;h2 id="picks-by-use-case">Picks by use case&lt;/h2>
&lt;p>Every pick below is a &lt;strong>current, Intel Quick Sync&lt;/strong> box that actually hardware-transcodes on its shipping firmware. We haven&amp;rsquo;t lab-benchmarked these ourselves; CPU specs come from manufacturer pages and Amazon listings, and stream-count guidance is class-based, not a promise — real capacity depends on bitrate, HDR tone-mapping, and subtitle burn-in.&lt;/p>
&lt;h3 id="best-budget-2-bay-ugreen-nasync-dxp2800">Best budget, 2-bay: UGREEN NASync DXP2800&lt;/h3>
&lt;p>An &lt;strong>Intel N100&lt;/strong> (quad-core Alder Lake-N with UHD Quick Sync), &lt;strong>8GB DDR5&lt;/strong>, 2.5GbE, and two M.2 slots — the cheapest appliance on this list with &lt;em>working&lt;/em> hardware transcoding. The N100&amp;rsquo;s Quick Sync engine comfortably handles multiple 1080p transcodes and a 4K→1080p stream or two, all while the CPU barely registers. It ran &lt;strong>~$390 diskless (to ~$440)&lt;/strong> in our 2026-07-19 Amazon snapshot, with over a thousand reviews (&lt;a href="https://www.amazon.com/dp/B0D22HBFK1?tag=techfuelhq-20" rel="nofollow sponsored">Amazon&lt;/a>). This is the box to buy instead of the Synology DS225+.&lt;/p>
&lt;h3 id="best-mainstream-4-bay-ugreen-nasync-dxp4800-plus">Best mainstream, 4-bay: UGREEN NASync DXP4800 Plus&lt;/h3>
&lt;p>The center of gravity for most media libraries. An &lt;strong>Intel Pentium Gold 8505&lt;/strong> (five-core Alder Lake with UHD Quick Sync), &lt;strong>8GB DDR5&lt;/strong>, a &lt;strong>128GB system SSD&lt;/strong>, and — unusually at this price — &lt;strong>10GbE plus 2.5GbE&lt;/strong>. Four bays give you room to grow, and the Quick Sync engine handles several simultaneous transcodes including 4K. It was &lt;strong>~$657 diskless&lt;/strong> (a variant to ~$730) with 640+ reviews on 2026-07-19 (&lt;a href="https://www.amazon.com/dp/B0D22JRHZB?tag=techfuelhq-20" rel="nofollow sponsored">Amazon&lt;/a>). One caution: UGREEN sells a near-identically-named &lt;strong>DXP4800 GT&lt;/strong> at almost the same price that uses an &lt;em>AMD&lt;/em> Ryzen R2514 (Radeon Vega 8) — it transcodes through VAAPI on Jellyfin but is inconsistent on Plex, so if Plex is your app, pin the &lt;strong>&amp;ldquo;Plus&amp;rdquo;&lt;/strong> SKU, not the GT.&lt;/p>
&lt;h3 id="best-for-heavy-4k--many-streams-terramaster-f4-424-pro">Best for heavy 4K / many streams: TerraMaster F4-424 Pro&lt;/h3>
&lt;p>When you&amp;rsquo;re tone-mapping 4K HDR or feeding several transcoding clients at once, step up to an &lt;strong>Intel Core i3-N305&lt;/strong> — eight cores with a 32-EU UHD iGPU — paired with &lt;strong>32GB of DDR5&lt;/strong> and dual 2.5GbE. TerraMaster&amp;rsquo;s spec page lists hardware transcoding for H.264/H.265/MPEG-4/VC-1 up to 4K, and the listing&amp;rsquo;s own comparison marks 4K hardware transcoding as supported. It was &lt;strong>~$688 diskless&lt;/strong> (to ~$860 on a variant) on 2026-07-19 (&lt;a href="https://www.amazon.com/dp/B0CPPD51B9?tag=techfuelhq-20" rel="nofollow sponsored">Amazon&lt;/a>). If you want the same Quick Sync capability for less and can live with a plainer chassis, the &lt;strong>&lt;a href="https://www.amazon.com/dp/B0FMJJ777F?tag=techfuelhq-20" rel="nofollow sponsored noopener">TerraMaster F4-425&lt;/a>&lt;/strong> (Intel quad-core, 4K H.265 hardware decode, ~$365) is a strong value 4-bay.&lt;/p>
&lt;h3 id="best-value-a-mini-pc--separate-storage">Best value: a mini-PC + separate storage&lt;/h3>
&lt;p>The pick that most guides won&amp;rsquo;t tell you about, because it isn&amp;rsquo;t a NAS. An Intel &lt;strong>N100 or N150 mini-PC&lt;/strong> has the &lt;em>exact same Quick Sync engine&lt;/em> as the appliances above, costs &lt;strong>$130-300&lt;/strong>, draws around 10W, and — because it isn&amp;rsquo;t simultaneously running a disk array — out-transcodes most sub-$700 NAS boxes. The homelab-standard setup is to keep bulk media on a cheaper NAS or DAS and run Plex or Jellyfin on the mini-PC over the network. It&amp;rsquo;s more moving parts and a little more setup, but it decouples transcode compute from your disks and is the most transcode-per-dollar you can buy. Our &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">best mini-PCs for a homelab&lt;/a> guide covers the boxes; pair one with the drives from our &lt;a href="https://techfuelhq.com/homelab/best-nas-hard-drives-2026/">best NAS hard drives&lt;/a> guide.&lt;/p>
&lt;h2 id="plex-vs-jellyfin-the-transcode-cost-gap-got-wider-in-2026">Plex vs Jellyfin: the transcode cost gap got wider in 2026&lt;/h2>
&lt;p>Pick the same Intel Quick Sync box and both apps transcode the same way — they ride the identical QSV/NVENC/VAAPI paths, so the &lt;em>ability&lt;/em> is equivalent (we go deeper in &lt;a href="https://techfuelhq.com/articles/jellyfin-vs-plex-2026/">Jellyfin vs Plex&lt;/a>, and on the open-source side in &lt;a href="https://techfuelhq.com/homelab/jellyfin-vs-emby-2026/">Jellyfin vs Emby&lt;/a>). What differs is the bill.&lt;/p>
&lt;p>&lt;strong>Plex gates hardware transcoding behind a paid Plex Pass&lt;/strong>, and that price moved sharply this year: as of &lt;strong>July 1, 2026&lt;/strong> the lifetime Plex Pass jumped to &lt;strong>$749.99&lt;/strong> from $249.99, with monthly ($6.99) and annual ($69.99) unchanged and a new 5-year plan at $249.99 — confirmed by &lt;a href="https://www.plex.tv/blog/new-lifetime-plex-pass-pricing/" rel="noopener">Plex&amp;rsquo;s own pricing announcement&lt;/a> and widely reported. &lt;strong>Jellyfin does the same hardware transcoding for free&lt;/strong>, with no premium tier, per its &lt;a href="https://jellyfin.org/docs/general/post-install/transcoding/hardware-acceleration/" rel="noopener">hardware-acceleration docs&lt;/a>. If you&amp;rsquo;re buying a Quick Sync NAS specifically to transcode, Jellyfin turns &amp;ldquo;free hardware acceleration&amp;rdquo; into a real line item against Plex&amp;rsquo;s now-$749.99 lifetime — worth weighing before you commit to an ecosystem.&lt;/p>
&lt;h2 id="the-transcode-compatibility-table">The transcode compatibility table&lt;/h2>
&lt;p>The verdict every competitor&amp;rsquo;s spec-list leaves out — does the box actually hardware-transcode on the OS it ships with today?&lt;/p>
&lt;div style="overflow-x:auto;margin:1.5rem 0;">
&lt;table style="border-collapse:collapse;width:100%;min-width:640px;font-size:0.93rem;">
&lt;thead>&lt;tr style="background:rgba(200,255,0,0.06);text-align:left;">
&lt;th style="padding:0.6rem 0.75rem;border-bottom:1px solid #2a2a44;">Model&lt;/th>
&lt;th style="padding:0.6rem 0.75rem;border-bottom:1px solid #2a2a44;">CPU&lt;/th>
&lt;th style="padding:0.6rem 0.75rem;border-bottom:1px solid #2a2a44;">Quick Sync?&lt;/th>
&lt;th style="padding:0.6rem 0.75rem;border-bottom:1px solid #2a2a44;">HW transcode OOTB?&lt;/th>
&lt;th style="padding:0.6rem 0.75rem;border-bottom:1px solid #2a2a44;">~Price (2026-07-19)&lt;/th>
&lt;/tr>&lt;/thead>
&lt;tbody>
&lt;tr>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">UGREEN DXP2800&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">Intel N100&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;color:#8fdca0;">Yes&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;color:#8fdca0;">Yes&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">~$390&lt;/td>&lt;/tr>
&lt;tr>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">UGREEN DXP4800 Plus&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">Intel Pentium Gold 8505&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;color:#8fdca0;">Yes&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;color:#8fdca0;">Yes&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">~$657&lt;/td>&lt;/tr>
&lt;tr>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">TerraMaster F4-424 Pro&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">Intel Core i3-N305&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;color:#8fdca0;">Yes&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;color:#8fdca0;">Yes&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">~$688&lt;/td>&lt;/tr>
&lt;tr>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">UGREEN DXP4800 GT&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">AMD Ryzen R2514 (Vega 8)&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;color:#e0b060;">No (VAAPI)&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;color:#e0b060;">Jellyfin yes / Plex spotty&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">~$660&lt;/td>&lt;/tr>
&lt;tr>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">Synology DS225+ / DS425+&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">Intel Celeron J4125&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;color:#e07a7a;">Silicon yes, driver removed&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;color:#e07a7a;">No (DSM 25-series)&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">~$360 / ~$545&lt;/td>&lt;/tr>
&lt;tr>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">Synology DS925+&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">AMD Ryzen V1500B (no iGPU)&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;color:#e07a7a;">No&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;color:#e07a7a;">No&lt;/td>&lt;td style="padding:0.55rem 0.75rem;border-bottom:1px solid #1e1e3a;">~$695&lt;/td>&lt;/tr>
&lt;tr>&lt;td style="padding:0.55rem 0.75rem;">ARM/Realtek (e.g. Synology DS223)&lt;/td>&lt;td style="padding:0.55rem 0.75rem;">ARM (no iGPU)&lt;/td>&lt;td style="padding:0.55rem 0.75rem;color:#e07a7a;">No&lt;/td>&lt;td style="padding:0.55rem 0.75rem;color:#e07a7a;">No (Direct Play only)&lt;/td>&lt;td style="padding:0.55rem 0.75rem;">—&lt;/td>&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;h2 id="the-bottom-line">The bottom line&lt;/h2>
&lt;p>Buying a NAS for Plex or Jellyfin in 2026 is not the Synology default it used to be. Work it in this order: decide whether you even transcode (match your player to your files first), then — if you do — buy &lt;strong>Intel Quick Sync&lt;/strong>, which today means a &lt;strong>UGREEN or TerraMaster Intel box&lt;/strong>, an older Intel Synology while stock lasts, or, for the best transcode-per-dollar, an &lt;strong>N100/N150 mini-PC paired with cheaper storage&lt;/strong>. Then pair it with the right disks from our &lt;a href="https://techfuelhq.com/homelab/best-nas-hard-drives-2026/">NAS hard-drives guide&lt;/a>, and if you&amp;rsquo;re still choosing apps, weigh Jellyfin&amp;rsquo;s free hardware transcoding against Plex&amp;rsquo;s now-$749.99 lifetime in &lt;a href="https://techfuelhq.com/articles/jellyfin-vs-plex-2026/">Jellyfin vs Plex&lt;/a>. Prices here are a dated 2026-07-19 snapshot in an unusually volatile year — treat them as a method, not a promise, and check the live retailer price before you buy.&lt;/p></description></item><item><title>Clock Watchdog Timeout? Revert the Overclock First (2026)</title><link>https://techfuelhq.com/articles/clock-watchdog-timeout-2026/</link><pubDate>Mon, 13 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/clock-watchdog-timeout-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-07-13 · ~8 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;strong>CLOCK_WATCHDOG_TIMEOUT&lt;/strong> (stop code &lt;code>0x00000101&lt;/code>) has a precise meaning that most guides gloss over: &lt;strong>a CPU core stopped responding&lt;/strong> — it missed an expected clock interrupt, and the system halted rather than wait on a hung core. That points somewhere very specific, and it isn&amp;rsquo;t &amp;ldquo;update your drivers&amp;rdquo; or &amp;ldquo;run &lt;code>sfc /scannow&lt;/code>.&amp;rdquo; Nine times out of ten it&amp;rsquo;s &lt;strong>CPU instability from tuning&lt;/strong> — an overclock, an undervolt, or a memory profile the chip can&amp;rsquo;t quite hold. The fix is to take the tuning back off, in order.&lt;/p>
&lt;h2 id="why-the-generic-advice-doesnt-work-here">Why the generic advice doesn&amp;rsquo;t work here&lt;/h2>
&lt;p>Search this error and you&amp;rsquo;ll get the same rote list every blue screen gets: update Windows, update drivers, run SFC, scan for malware. For &lt;code>0x101&lt;/code> that advice almost never lands, because a core hanging is a &lt;strong>hardware-stability&lt;/strong> event, not a corrupted-file event. Software didn&amp;rsquo;t make a CPU core stop responding; &lt;strong>running it outside its stable envelope did.&lt;/strong>&lt;/p>
&lt;p>So the diagnosis flips: instead of adding fixes, you &lt;strong>remove variables&lt;/strong> until the core is running at settings it&amp;rsquo;s guaranteed to hold.&lt;/p>
&lt;!-- ========== SIGNATURE VISUAL: THE REVERT STACK (distinct grammar: strip tuning back to a stable floor) ========== -->
&lt;div class="visual-block">
&lt;div style="background:#140f0a;border:1px solid rgba(246,169,74,0.20);border-radius:10px;padding:24px 20px 18px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
&lt;div style="margin-bottom:15px;">
&lt;div style="font-size:19px;font-weight:700;color:#f6ecdc;letter-spacing:-0.3px;">Strip the tuning back to a stable floor&lt;/div>
&lt;div style="font-size:12.5px;color:#a89a80;margin-top:6px;line-height:1.5;">0x101 is a core that stopped responding. Turn off the four things that push a core past stable, top to bottom. Stable at the floor? Add them back one at a time to find the culprit.&lt;/div>
&lt;/div>
&lt;div style="display:flex;flex-direction:column;gap:7px;">
&lt;div style="display:flex;gap:12px;align-items:baseline;background:rgba(246,169,74,0.09);border-left:3px solid #f6a94a;border-radius:0 6px 6px 0;padding:10px 13px;min-width:0;">
&lt;span style="font-size:9px;font-weight:700;letter-spacing:1px;color:#8a7a5c;flex-shrink:0;width:64px;">OFF &amp;#183; 1&lt;/span>
&lt;div style="min-width:0;">&lt;div style="font-size:13px;font-weight:700;color:#f4ead9;">Manual CPU overclock&lt;/div>&lt;div style="font-size:11.5px;color:#c9bfae;line-height:1.45;">All-core OC set in BIOS &amp;#8594; clear to Auto/default. The most direct cause.&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="display:flex;gap:12px;align-items:baseline;background:rgba(246,169,74,0.09);border-left:3px solid #f6a94a;border-radius:0 6px 6px 0;padding:10px 13px;min-width:0;">
&lt;span style="font-size:9px;font-weight:700;letter-spacing:1px;color:#8a7a5c;flex-shrink:0;width:64px;">OFF &amp;#183; 2&lt;/span>
&lt;div style="min-width:0;">&lt;div style="font-size:13px;font-weight:700;color:#f4ead9;">PBO + Curve Optimizer / undervolt&lt;/div>&lt;div style="font-size:11.5px;color:#c9bfae;line-height:1.45;">Set PBO and Curve Optimizer to &lt;strong style="color:#f6d9ad;">zero/off&lt;/strong>. A too-negative curve crashes at &lt;em>idle&lt;/em>, not just load.&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="display:flex;gap:12px;align-items:baseline;background:rgba(246,169,74,0.09);border-left:3px solid #f6a94a;border-radius:0 6px 6px 0;padding:10px 13px;min-width:0;">
&lt;span style="font-size:9px;font-weight:700;letter-spacing:1px;color:#8a7a5c;flex-shrink:0;width:64px;">OFF &amp;#183; 3&lt;/span>
&lt;div style="min-width:0;">&lt;div style="font-size:13px;font-weight:700;color:#f4ead9;">EXPO / XMP memory profile&lt;/div>&lt;div style="font-size:11.5px;color:#c9bfae;line-height:1.45;">Set memory to JEDEC. An unstable profile destabilizes the memory controller and hangs a core.&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="display:flex;gap:12px;align-items:baseline;background:rgba(126,224,160,0.07);border-left:3px solid #7ee0a0;border-radius:0 6px 6px 0;padding:10px 13px;min-width:0;">
&lt;span style="font-size:9px;font-weight:700;letter-spacing:1px;color:#6f9a78;flex-shrink:0;width:64px;">FLOOR&lt;/span>
&lt;div style="min-width:0;">&lt;div style="font-size:13px;font-weight:700;color:#c7f0d3;">Stock CPU + JEDEC RAM + updated BIOS&lt;/div>&lt;div style="font-size:11.5px;color:#bcd0bf;line-height:1.45;">Rock-solid here? Re-add one tuning at a time. &lt;strong style="color:#9be8b6;">Still crashing? Now suspect the CPU or PSU.&lt;/strong>&lt;/div>&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:14px;padding-top:12px;border-top:1px solid rgba(246,169,74,0.14);font-size:11px;color:#8f8064;line-height:1.5;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;">
&lt;span>The counterintuitive one is &lt;strong style="color:#d8c3a6;">#2&lt;/strong>: an AM5 undervolt/Curve Optimizer that&amp;#8217;s too aggressive fails hardest at &lt;em>low&lt;/em> load, so it can pass a stress test and still crash you at the desktop.&lt;/span>
&lt;span style="font-family:ui-monospace,monospace;font-size:10px;color:#5f5644;">techfuelhq.com&lt;/span>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="step-1-clear-every-cpu-overclock">Step 1: Clear every CPU overclock&lt;/h2>
&lt;p>If you (or a &amp;ldquo;one-click OC&amp;rdquo; in the motherboard software) set a manual all-core overclock, that&amp;rsquo;s the first suspect. In BIOS, set the CPU ratio/frequency and voltage back to &lt;strong>Auto&lt;/strong> or &lt;strong>default&lt;/strong>. If you used a vendor tool like ASUS AI Overclocking, Ryzen Master, or Intel XTU, reset its profile to stock too. Reboot and use the PC. A manual overclock that was &amp;ldquo;stable&amp;rdquo; in a benchmark but not across every real workload is a textbook &lt;code>0x101&lt;/code>.&lt;/p>
&lt;h2 id="step-2-turn-off-pbo-and-curve-optimizer-the-undervolt-trap">Step 2: Turn off PBO and Curve Optimizer (the undervolt trap)&lt;/h2>
&lt;p>On modern AMD (Ryzen 7000/9000) especially, the crash usually isn&amp;rsquo;t a classic overclock — it&amp;rsquo;s an &lt;strong>undervolt via Curve Optimizer&lt;/strong> or an aggressive &lt;strong>PBO&lt;/strong> profile. In BIOS, set &lt;strong>PBO to Disabled/Auto&lt;/strong> and &lt;strong>Curve Optimizer to 0&lt;/strong> on all cores.&lt;/p>
&lt;p>Here&amp;rsquo;s the part that fools people: &lt;strong>a too-negative Curve Optimizer crashes at idle or light load, not under a stress test.&lt;/strong> The chip boosts to its highest clocks at low load, and that&amp;rsquo;s exactly where an under-volted core runs out of voltage and stops responding. So a machine that survives an hour of Cinebench can still throw CLOCK_WATCHDOG_TIMEOUT sitting on the desktop or browsing. If reverting the curve to zero stops the crashes, dial it back in &lt;strong>less aggressively&lt;/strong> (for example, from −30 to −15) and re-test — including plenty of idle time, not just a benchmark. Our &lt;a href="https://techfuelhq.com/articles/safe-cpu-temp-2026/">safe CPU temperature guide&lt;/a> covers how to watch clocks and temps while you validate a curve.&lt;/p>
&lt;h2 id="step-3-disable-expo--xmp-memory-can-hang-a-core-too">Step 3: Disable EXPO / XMP (memory can hang a core too)&lt;/h2>
&lt;p>An &lt;strong>EXPO&lt;/strong> (AMD) or &lt;strong>XMP&lt;/strong> (Intel) profile the memory controller can&amp;rsquo;t quite hold destabilizes the whole CPU-memory subsystem, and it often shows up as a core hang rather than a memory error. Set memory to &lt;strong>default JEDEC speed&lt;/strong> in BIOS and test. If the crashes stop, the profile was the problem — not the CPU. You can then try a milder profile, or add a touch of SoC/memory voltage. If you&amp;rsquo;re unsure what your kit is rated for versus what it&amp;rsquo;s running, the &lt;a href="https://techfuelhq.com/articles/ddr5-ram-buying-guide-2025/">DDR5 buying guide&lt;/a> walks through the EXPO/XMP-versus-JEDEC distinction and the AM5 6000-sweet-spot.&lt;/p>
&lt;p>A brand-new build that has &lt;strong>never&lt;/strong> been stable and throws &lt;code>0x101&lt;/code> is very often an EXPO profile the board never truly validated.&lt;/p>
&lt;h2 id="step-4-update-the-bios">Step 4: Update the BIOS&lt;/h2>
&lt;p>Once you&amp;rsquo;re at a stock floor, &lt;strong>update your motherboard BIOS&lt;/strong> to the latest stable release. CPU stability on current platforms depends heavily on &lt;strong>AGESA/microcode&lt;/strong> revisions, and a known stability bug — the kind that caused a wave of crashes on early AM5 or a new CPU generation — is often fixed in a BIOS update. Update, re-apply a clean load of stock defaults afterward, and only then reintroduce EXPO and any tuning.&lt;/p>
&lt;h2 id="step-5-if-a-fully-stock-system-still-crashes">Step 5: If a fully stock system still crashes&lt;/h2>
&lt;p>Only now does &lt;code>0x101&lt;/code> become a hardware-replacement question:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Power:&lt;/strong> a marginal or failing PSU, or an under-seated CPU (EPS) power cable, can starve a core under load and hang it. Reseat the 8-pin EPS cable; if crashes are load-related, test with a known-good, adequately-rated PSU. Work our &lt;a href="https://techfuelhq.com/articles/pc-keeps-restarting-2026/">PC keeps restarting guide&lt;/a> for the full power checklist and the isolation build.&lt;/li>
&lt;li>&lt;strong>Cooling:&lt;/strong> confirm the CPU isn&amp;rsquo;t thermal-throttling to instability under load with HWiNFO — see &lt;a href="https://techfuelhq.com/articles/safe-cpu-temp-2026/">safe CPU temperatures&lt;/a>.&lt;/li>
&lt;li>&lt;strong>The CPU itself:&lt;/strong> genuinely failing CPUs are rare, but a chip that crashes completely stock, at JEDEC memory, with an updated BIOS, healthy power, and good temps, is the remaining suspect — especially if it followed a period of heavy overclocking or a known-degradation batch.&lt;/li>
&lt;/ul>
&lt;h2 id="the-fix-order-in-one-list">The fix order, in one list&lt;/h2>
&lt;ol>
&lt;li>&lt;strong>Clear manual CPU overclocks&lt;/strong> → Auto/default.&lt;/li>
&lt;li>&lt;strong>PBO + Curve Optimizer to 0/off&lt;/strong> — the undervolt that crashes at &lt;em>idle&lt;/em> is the sneaky one.&lt;/li>
&lt;li>&lt;strong>EXPO/XMP off → JEDEC&lt;/strong> to rule out unstable memory.&lt;/li>
&lt;li>&lt;strong>Update the BIOS&lt;/strong> for AGESA/microcode stability fixes, then re-add tuning one at a time.&lt;/li>
&lt;li>&lt;strong>Stock and still crashing?&lt;/strong> Now check power (PSU, EPS cable), cooling, then the CPU.&lt;/li>
&lt;/ol>
&lt;p>Because &lt;code>0x101&lt;/code> is a core that stopped responding, the entire fix is about getting that core back inside a stable envelope — which is why reverting tuning comes first and parts come last. If this blue screen is showing up alongside other stop codes or random reboots, the whole-system flow in &lt;a href="https://techfuelhq.com/articles/pc-keeps-restarting-2026/">PC keeps restarting&lt;/a> and &lt;a href="https://techfuelhq.com/articles/computer-keeps-freezing-2026/">computer keeps freezing&lt;/a> maps each code to its fix.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>Stop code identity: Microsoft&amp;rsquo;s &lt;a href="https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/bug-check-0x101---clock-watchdog-timeout" rel="noopener">Bug Check 0x101 CLOCK_WATCHDOG_TIMEOUT&lt;/a> reference — an expected clock interrupt on a processor was not received within the allocated interval (a core stopped responding). The tuning-first ordering reflects that this is a CPU-stability bug check, corroborated across Reddit r/overclocking and r/AMD, Tom&amp;rsquo;s Hardware and Level1Techs threads that repeatedly trace &lt;code>0x101&lt;/code> to an unstable overclock, Curve Optimizer, or EXPO profile.&lt;/li>
&lt;li>The AM5 Curve-Optimizer idle-instability behaviour (low-load boost exposing an under-volt) is well-documented community knowledge, self-verifiable by reverting the curve and observing the crash pattern. BIOS/AGESA microcode as a stability lever is standard platform behaviour. Temperature validation via HWiNFO; power checks per our first-party PC-keeps-restarting guide.&lt;/li>
&lt;/ul>
&lt;p>&lt;em>Steps are for Windows 10 and 11 in 2026; BIOS menu names vary by board. Found an error? Email &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a> with the article URL.&lt;/em>&lt;/p></description></item><item><title>DPC Watchdog Violation? The Storage-First Fix (2026)</title><link>https://techfuelhq.com/articles/dpc-watchdog-violation-2026/</link><pubDate>Mon, 13 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/dpc-watchdog-violation-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-07-13 · ~9 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never change what gets recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;p>&lt;strong>DPC_WATCHDOG_VIOLATION&lt;/strong> (stop code &lt;code>0x00000133&lt;/code>) reads like a hardware death sentence and almost never is one. The name is the whole diagnosis: a driver ran a &lt;strong>Deferred Procedure Call&lt;/strong> for too long, and Windows&amp;rsquo; watchdog timer killed the system to protect it. That means the fix is a driver — and the guides that send you straight to &lt;code>sfc /scannow&lt;/code> are starting in the wrong place. Below is the order that actually clears it, front-loaded with the storage fix that resolves most cases.&lt;/p>
&lt;h2 id="what-the-stop-code-is-actually-telling-you">What the stop code is actually telling you&lt;/h2>
&lt;p>A DPC is a low-priority task a driver defers to run a moment later — normal Windows plumbing. The &lt;strong>DPC Watchdog&lt;/strong> is a timer that watches for one running too long: roughly &lt;strong>100 microseconds&lt;/strong> for a single DPC, or a longer cumulative budget across a run. When a driver blows past that, the watchdog fires &lt;code>0x133&lt;/code> rather than let a stalled driver hang the whole machine.&lt;/p>
&lt;p>So the question is never &amp;ldquo;which part is broken&amp;rdquo; — it&amp;rsquo;s &lt;strong>&amp;ldquo;which driver stalled?&amp;rdquo;&lt;/strong> And the answer, statistically, is a storage driver. That is why the fix order below leads with storage, not with the generic scan-everything advice.&lt;/p>
&lt;!-- ========== SIGNATURE VISUAL: DPC WATCHDOG CULPRIT LADDER (probability-ranked, distinct grammar) ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0b1017;border:1px solid rgba(96,165,250,0.18);border-radius:10px;padding:24px 20px 18px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
&lt;div style="margin-bottom:16px;">
&lt;div style="font-size:19px;font-weight:700;color:#eaf1fb;letter-spacing:-0.3px;">Which driver stalled the CPU? Work it top-down&lt;/div>
&lt;div style="font-size:12.5px;color:#8fa2ba;margin-top:6px;line-height:1.5;">0x133 is a driver holding the CPU too long. These are the culprits in rough order of how often they cause it &amp;#8212; fix from the top, and stop when the crashes stop.&lt;/div>
&lt;/div>
&lt;div style="display:flex;flex-direction:column;gap:8px;">
&lt;div style="display:flex;gap:12px;align-items:center;background:rgba(248,113,113,0.08);border-left:3px solid #f87171;border-radius:0 6px 6px 0;padding:11px 13px;min-width:0;">
&lt;div style="font-family:ui-monospace,monospace;font-size:11px;font-weight:700;color:#0b1017;background:#f87171;border-radius:4px;padding:4px 8px;flex-shrink:0;">#1&lt;/div>
&lt;div style="min-width:0;">&lt;div style="font-size:13.5px;font-weight:700;color:#f4dede;">Storage driver / SSD firmware&lt;/div>&lt;div style="font-size:11.5px;color:#cdd9e8;line-height:1.45;">Wrong SATA AHCI driver, or outdated SSD/NVMe firmware. &lt;strong style="color:#e6edf6;">Steps 1&amp;#8211;2.&lt;/strong>&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="display:flex;gap:12px;align-items:center;background:rgba(246,169,74,0.09);border-left:3px solid #f6a94a;border-radius:0 6px 6px 0;padding:11px 13px;min-width:0;">
&lt;div style="font-family:ui-monospace,monospace;font-size:11px;font-weight:700;color:#0b1017;background:#f6a94a;border-radius:4px;padding:4px 8px;flex-shrink:0;">#2&lt;/div>
&lt;div style="min-width:0;">&lt;div style="font-size:13.5px;font-weight:700;color:#f6e6cf;">Network / Bluetooth driver&lt;/div>&lt;div style="font-size:11.5px;color:#cdd9e8;line-height:1.45;">Crashes when Wi-Fi connects or a headset pairs? That driver. &lt;strong style="color:#e6edf6;">Step 3.&lt;/strong>&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="display:flex;gap:12px;align-items:center;background:rgba(96,165,250,0.09);border-left:3px solid #60a5fa;border-radius:0 6px 6px 0;padding:11px 13px;min-width:0;">
&lt;div style="font-family:ui-monospace,monospace;font-size:11px;font-weight:700;color:#0b1017;background:#60a5fa;border-radius:4px;padding:4px 8px;flex-shrink:0;">#3&lt;/div>
&lt;div style="min-width:0;">&lt;div style="font-size:13.5px;font-weight:700;color:#dbe8fb;">A specific USB device driver&lt;/div>&lt;div style="font-size:11.5px;color:#cdd9e8;line-height:1.45;">Only when a dock, printer, or external drive is plugged in. &lt;strong style="color:#e6edf6;">Step 3.&lt;/strong>&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="display:flex;gap:12px;align-items:center;background:rgba(148,163,184,0.10);border-left:3px solid #94a3b8;border-radius:0 6px 6px 0;padding:11px 13px;min-width:0;">
&lt;div style="font-family:ui-monospace,monospace;font-size:11px;font-weight:700;color:#0b1017;background:#94a3b8;border-radius:4px;padding:4px 8px;flex-shrink:0;">#4&lt;/div>
&lt;div style="min-width:0;">&lt;div style="font-size:13.5px;font-weight:700;color:#e2e8f0;">Failing SSD or bad RAM (rare)&lt;/div>&lt;div style="font-size:11.5px;color:#cdd9e8;line-height:1.45;">Only after the driver path is exhausted. Check drive health, then memory. &lt;strong style="color:#e6edf6;">Steps 5&amp;#8211;6.&lt;/strong>&lt;/div>&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:15px;padding-top:12px;border-top:1px solid rgba(96,165,250,0.12);font-size:11px;color:#7f8ea3;line-height:1.5;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;">
&lt;span>Don&amp;#8217;t know which? The minidump names the exact &lt;span style="font-family:ui-monospace,monospace;color:#b7c6da;">.sys&lt;/span> file &amp;#8212; &lt;strong style="color:#b7c6da;">Step 4&lt;/strong> reads it in two minutes.&lt;/span>
&lt;span style="font-family:ui-monospace,monospace;font-size:10px;color:#4f5c6e;">techfuelhq.com&lt;/span>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="step-1-change-the-sata-ahci-controller-driver-fixes-the-most-cases">Step 1: Change the SATA AHCI controller driver (fixes the most cases)&lt;/h2>
&lt;p>This one fix clears the largest share of DPC Watchdog Violations, and it costs nothing. Windows&amp;rsquo; own &lt;strong>Standard SATA AHCI Controller&lt;/strong> driver is more stable for this error than some vendor storage drivers (Intel&amp;rsquo;s &lt;code>iaStorAC&lt;/code>, in particular).&lt;/p>
&lt;ol>
&lt;li>Press &lt;strong>Windows Key + X&lt;/strong> → &lt;strong>Device Manager&lt;/strong>.&lt;/li>
&lt;li>Expand &lt;strong>IDE ATA/ATAPI controllers&lt;/strong> (on some systems, &lt;strong>Storage controllers&lt;/strong>).&lt;/li>
&lt;li>Right-click your &lt;strong>SATA AHCI Controller&lt;/strong> → &lt;strong>Update driver&lt;/strong>.&lt;/li>
&lt;li>Choose &lt;strong>Browse my computer for drivers&lt;/strong> → &lt;strong>Let me pick from a list of available drivers&lt;/strong>.&lt;/li>
&lt;li>Select &lt;strong>Standard SATA AHCI Controller&lt;/strong> → &lt;strong>Next&lt;/strong>, then &lt;strong>reboot&lt;/strong>.&lt;/li>
&lt;/ol>
&lt;p>If &amp;ldquo;Standard SATA AHCI Controller&amp;rdquo; isn&amp;rsquo;t offered, your drive is on a vendor NVMe/RAID driver — leave it and move to Step 2, then the minidump in Step 4.&lt;/p>
&lt;h2 id="step-2-update-your-ssd--nvme-firmware">Step 2: Update your SSD / NVMe firmware&lt;/h2>
&lt;p>Outdated SSD firmware is the other half of the storage cause: an old firmware revision mishandles a TRIM, garbage-collection, or low-power transition and stalls its driver long enough to trip the watchdog. Update it from the manufacturer&amp;rsquo;s own tool — Windows Update won&amp;rsquo;t do this:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Samsung&lt;/strong> → Samsung Magician&lt;/li>
&lt;li>&lt;strong>WD / SanDisk&lt;/strong> → WD Dashboard&lt;/li>
&lt;li>&lt;strong>Crucial&lt;/strong> → Crucial Storage Executive&lt;/li>
&lt;li>&lt;strong>Kingston&lt;/strong> → Kingston SSD Manager&lt;/li>
&lt;/ul>
&lt;p>If your drive is a lesser-known brand with no utility, check whether it even &lt;em>is&lt;/em> the boot drive causing the crashes — and if it&amp;rsquo;s an older drive throwing other symptoms too (slow boots, disappearing from Explorer), treat it as a storage-health problem and work our &lt;a href="https://techfuelhq.com/articles/ssd-not-showing-up-2026/">SSD not showing up guide&lt;/a>, which covers the health checks that catch a failing drive.&lt;/p>
&lt;h2 id="step-3-if-its-tied-to-one-action-that-names-the-driver">Step 3: If it&amp;rsquo;s tied to one action, that names the driver&lt;/h2>
&lt;p>A DPC Watchdog Violation that fires on a &lt;strong>specific trigger&lt;/strong> is the easiest kind to fix, because the trigger points straight at the guilty driver:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Crashes when Wi-Fi connects or Bluetooth pairs&lt;/strong> → the network or Bluetooth driver. Update it from the &lt;strong>laptop or adapter maker&amp;rsquo;s site&lt;/strong> (Intel, Realtek, Qualcomm), not just Windows Update — the vendor&amp;rsquo;s build is usually newer.&lt;/li>
&lt;li>&lt;strong>Crashes when you plug in a dock, printer, or external drive&lt;/strong> → that device&amp;rsquo;s driver. Unplug the device to confirm the crashes stop, then update its driver from the maker.&lt;/li>
&lt;li>&lt;strong>Crashes at random with nothing obviously connected&lt;/strong> → move to the minidump in Step 4; guessing wastes days.&lt;/li>
&lt;/ul>
&lt;h2 id="step-4-read-the-minidump--name-the-exact-driver">Step 4: Read the minidump — name the exact driver&lt;/h2>
&lt;p>You don&amp;rsquo;t have to guess which driver stalled. Every blue screen writes a small dump to &lt;code>C:\Windows\Minidump&lt;/code>, and a free reader turns it into a filename. (Not every stop code makes you dig for it — &lt;a href="https://techfuelhq.com/articles/system-thread-exception-not-handled-2026/">SYSTEM_THREAD_EXCEPTION_NOT_HANDLED&lt;/a> usually prints the failing driver&amp;rsquo;s name right on the screen.)&lt;/p>
&lt;ol>
&lt;li>Install &lt;strong>WhoCrashed&lt;/strong> (free) or &lt;strong>BlueScreenView&lt;/strong> (free, portable).&lt;/li>
&lt;li>Point it at &lt;code>C:\Windows\Minidump&lt;/code>.&lt;/li>
&lt;li>Read the driver it names — the &lt;strong>.sys&lt;/strong> file that was executing when the watchdog fired.&lt;/li>
&lt;/ol>
&lt;p>A result like &lt;code>netwtw10.sys&lt;/code> (Intel Wi-Fi), &lt;code>rt640x64.sys&lt;/code> (Realtek LAN), or a vendor storage &lt;code>.sys&lt;/code> tells you exactly which driver to update or roll back. This is the difference between a targeted fix and a week of updating everything. If the dump names a &lt;strong>graphics&lt;/strong> driver (&lt;code>nvlddmkm.sys&lt;/code>, &lt;code>amdkmdag.sys&lt;/code>), clean-reinstall it with the process in our &lt;a href="https://techfuelhq.com/articles/gpu-driver-crash-fix-2026/">GPU driver crash fix guide&lt;/a>.&lt;/p>
&lt;h2 id="step-5-repair-system-files-only-now">Step 5: Repair system files (only now)&lt;/h2>
&lt;p>If the driver path is genuinely exhausted, corrupt system files are the next check. Open &lt;strong>Terminal (Admin)&lt;/strong> and run, in order:&lt;/p>
&lt;pre tabindex="0">&lt;code>sfc /scannow
DISM /Online /Cleanup-Image /RestoreHealth
&lt;/code>&lt;/pre>&lt;p>Reboot after. These repair Windows&amp;rsquo; own files — useful when a botched update damaged a system driver, but they will not fix a third-party driver that&amp;rsquo;s simply out of date, which is why they come after the driver work, not before it.&lt;/p>
&lt;h2 id="step-6-test-the-hardware-last-not-first">Step 6: Test the hardware (last, not first)&lt;/h2>
&lt;p>Only when every driver angle is exhausted does &lt;code>0x133&lt;/code> become a hardware question:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Drive health:&lt;/strong> run &lt;strong>CrystalDiskInfo&lt;/strong>. A boot SSD reading &lt;strong>Caution&lt;/strong> (reallocated sectors, high error counts) can time out its own driver — back up now and plan a replacement.&lt;/li>
&lt;li>&lt;strong>Memory:&lt;/strong> unstable RAM can corrupt a driver mid-execution. Run &lt;strong>Windows Memory Diagnostic&lt;/strong> (&lt;code>mdsched.exe&lt;/code>) or &lt;strong>MemTest86&lt;/strong> overnight, and if you&amp;rsquo;re running an &lt;strong>EXPO/XMP&lt;/strong> profile, set memory to default JEDEC speed to rule out an unstable overclock. Our &lt;a href="https://techfuelhq.com/articles/ddr5-ram-buying-guide-2025/">DDR5 buying guide&lt;/a> covers the EXPO/JEDEC distinction if you&amp;rsquo;re unsure what your kit is set to.&lt;/li>
&lt;/ul>
&lt;p>Hardware is genuinely the cause in a minority of DPC Watchdog Violations — which is exactly why it&amp;rsquo;s Step 6 and not Step 1.&lt;/p>
&lt;h2 id="the-fix-order-in-one-list">The fix order, in one list&lt;/h2>
&lt;ol>
&lt;li>&lt;strong>Swap to Standard SATA AHCI Controller&lt;/strong> (Device Manager) — clears the most cases.&lt;/li>
&lt;li>&lt;strong>Update SSD/NVMe firmware&lt;/strong> with the maker&amp;rsquo;s tool.&lt;/li>
&lt;li>&lt;strong>Tied to Wi-Fi / a USB device?&lt;/strong> Update that specific driver from the vendor.&lt;/li>
&lt;li>&lt;strong>Read the minidump&lt;/strong> (WhoCrashed / BlueScreenView) to name the exact &lt;code>.sys&lt;/code>.&lt;/li>
&lt;li>&lt;strong>&lt;code>sfc /scannow&lt;/code> + DISM&lt;/strong> for corrupt system files.&lt;/li>
&lt;li>&lt;strong>Test hardware last&lt;/strong> — CrystalDiskInfo for the SSD, MemTest86 for RAM, JEDEC to rule out EXPO/XMP.&lt;/li>
&lt;/ol>
&lt;p>Work it top-down and most DPC Watchdog Violations fall at Step 1 or 2. If yours survives to Step 6 and a drive- or memory-test comes back bad, that&amp;rsquo;s your answer — but you&amp;rsquo;ll have ruled out the far more likely driver causes first, instead of replacing parts on a hunch.&lt;/p>
&lt;p>If the crashes are one symptom of a system that&amp;rsquo;s &lt;em>also&lt;/em> rebooting or freezing on other stop codes, step back to the whole-system diagnosis in &lt;a href="https://techfuelhq.com/articles/pc-keeps-restarting-2026/">PC keeps restarting&lt;/a> or &lt;a href="https://techfuelhq.com/articles/computer-keeps-freezing-2026/">computer keeps freezing&lt;/a> — the stop-code decoder there maps each blue screen to the right fix.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>Stop code identity and the watchdog mechanism: Microsoft&amp;rsquo;s &lt;a href="https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/bug-check-0x133-dpc-watchdog-violation" rel="noopener">Bug Check 0x133 DPC_WATCHDOG_VIOLATION&lt;/a> reference — a single DPC exceeding its time allotment, or a run of DPCs exceeding the watchdog period.&lt;/li>
&lt;li>The Standard SATA AHCI Controller swap and SSD-firmware fixes are the widely-corroborated first-line remedies across Microsoft Q&amp;amp;A, Tom&amp;rsquo;s Hardware and Level1Techs forum threads, and vendor guidance; all are non-destructive and self-verifiable on any Windows 10/11 PC.&lt;/li>
&lt;li>Minidump reading uses the free WhoCrashed (Resplendence) and BlueScreenView (NirSoft) utilities against &lt;code>C:\Windows\Minidump&lt;/code>. Drive health via CrystalDiskInfo SMART data; memory via Windows Memory Diagnostic (&lt;code>mdsched.exe&lt;/code>) and MemTest86.&lt;/li>
&lt;/ul>
&lt;p>&lt;em>Steps are for Windows 10 and 11 in 2026; menu names vary slightly by version. Found an error? Email &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a> with the article URL.&lt;/em>&lt;/p></description></item><item><title>Kernel Security Check Failure? Test RAM First (2026)</title><link>https://techfuelhq.com/articles/kernel-security-check-failure-2026/</link><pubDate>Mon, 13 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/kernel-security-check-failure-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-07-13 · ~9 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;strong>KERNEL_SECURITY_CHECK_FAILURE&lt;/strong> (stop code &lt;code>0x00000139&lt;/code>) sounds like a virus or a hacked machine. It isn&amp;rsquo;t. The &amp;ldquo;security check&amp;rdquo; is Windows verifying the &lt;strong>integrity of its own data structures&lt;/strong> — and this blue screen means one of them was found &lt;strong>corrupted in memory&lt;/strong>. That single fact reorders the whole fix: the first thing you test is not drivers or malware, but &lt;strong>the two things that corrupt memory&lt;/strong> — your RAM and any memory overclock.&lt;/p>
&lt;p>Most guides bury RAM testing at step five behind &lt;code>sfc /scannow&lt;/code>. For 0x139 specifically, that&amp;rsquo;s backwards.&lt;/p>
&lt;h2 id="what-0x139-is-actually-checking">What 0x139 is actually checking&lt;/h2>
&lt;p>Windows constantly validates critical kernel data — list pointers, buffers, control structures. A &lt;strong>security check&lt;/strong> compares one of these against what it should be. When they don&amp;rsquo;t match, the kernel assumes something corrupted it and halts with &lt;code>0x139&lt;/code> rather than keep running on bad data. It&amp;rsquo;s a smoke detector for &lt;strong>memory corruption&lt;/strong>.&lt;/p>
&lt;p>Corruption has a short list of sources, and they&amp;rsquo;re not equally likely:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Unstable or failing RAM&lt;/strong> — a bad stick, or a good stick pushed past what it can hold.&lt;/li>
&lt;li>&lt;strong>An XMP/EXPO overclock the kit or memory controller can&amp;rsquo;t quite sustain&lt;/strong> — the RAM is fine, the &lt;em>speed&lt;/em> isn&amp;rsquo;t.&lt;/li>
&lt;li>&lt;strong>A bad driver&lt;/strong> writing where it shouldn&amp;rsquo;t.&lt;/li>
&lt;li>&lt;strong>Corrupt system files&lt;/strong> after a bad update.&lt;/li>
&lt;li>&lt;strong>Failing storage&lt;/strong> feeding corrupt data back to the kernel.&lt;/li>
&lt;/ul>
&lt;p>The order you test them in is the difference between a one-evening fix and a week of flailing. The same ordering carries over to the sibling stop code &lt;a href="https://techfuelhq.com/articles/page-fault-in-nonpaged-area-2026/">PAGE_FAULT_IN_NONPAGED_AREA&lt;/a> (&lt;code>0x50&lt;/code>), which shares the top two suspects — bad memory first, then failing storage.&lt;/p>
&lt;!-- ========== SIGNATURE VISUAL: TWO-QUESTION TRIAGE (distinct grammar from the culprit-ladder) ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0c1510;border:1px solid rgba(126,224,160,0.20);border-radius:10px;padding:24px 20px 18px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
&lt;div style="margin-bottom:16px;">
&lt;div style="font-size:19px;font-weight:700;color:#e7f6ec;letter-spacing:-0.3px;">Two questions decide where you start&lt;/div>
&lt;div style="font-size:12.5px;color:#93b6a1;margin-top:6px;line-height:1.5;">0x139 is memory corruption. Before you touch anything, answer these &amp;#8212; they route you to the fast path instead of testing all five causes blind.&lt;/div>
&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;gap:14px;">
&lt;div style="flex:1;min-width:250px;background:rgba(126,224,160,0.06);border:1px solid rgba(126,224,160,0.22);border-radius:8px;padding:16px 16px 14px;">
&lt;div style="font-size:12px;font-weight:700;color:#9be8b6;letter-spacing:0.3px;margin-bottom:8px;">Q1 &amp;#183; Did you change hardware, RAM, or an overclock?&lt;/div>
&lt;div style="font-size:11.5px;color:#c7d8c9;line-height:1.55;">New sticks, more sticks, a fresh XMP/EXPO profile, a CPU/RAM overclock, or a brand-new build that has never been stable &amp;#8594; &lt;strong style="color:#e7f6ec;">start at RAM + memory speed (Steps 1&amp;#8211;2).&lt;/strong> This is the most common path, especially on a new AM5 or Intel build.&lt;/div>
&lt;/div>
&lt;div style="flex:1;min-width:250px;background:rgba(96,165,250,0.06);border:1px solid rgba(96,165,250,0.22);border-radius:8px;padding:16px 16px 14px;">
&lt;div style="font-size:12px;font-weight:700;color:#93c5fd;letter-spacing:0.3px;margin-bottom:8px;">Q2 &amp;#183; Did it start after a driver or Windows update?&lt;/div>
&lt;div style="font-size:11.5px;color:#c9d5e8;line-height:1.55;">Crashes began right after a GPU driver, a device driver, or a Windows update &amp;#8594; &lt;strong style="color:#e7f1ff;">start at drivers + system files (Steps 3&amp;#8211;4).&lt;/strong> A named driver in the minidump makes this a one-driver fix.&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:14px;padding-top:12px;border-top:1px solid rgba(126,224,160,0.14);font-size:11px;color:#7f9a88;line-height:1.5;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;">
&lt;span>Answered &lt;strong style="color:#c7d8c9;">neither&lt;/strong>, or not sure? Test RAM anyway &amp;#8212; it&amp;#8217;s free, non-destructive, and the top cause of 0x139.&lt;/span>
&lt;span style="font-family:ui-monospace,monospace;font-size:10px;color:#4f6355;">techfuelhq.com&lt;/span>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="step-1-test-your-ram">Step 1: Test your RAM&lt;/h2>
&lt;p>Bad memory is the number-one cause, so this is where almost everyone should start.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>MemTest86&lt;/strong> (free, from a USB stick) is the thorough test — run at least one full overnight pass. A single error anywhere means a stick or a memory setting is bad.&lt;/li>
&lt;li>&lt;strong>Windows Memory Diagnostic&lt;/strong> (&lt;code>Windows Key + R&lt;/code> → &lt;code>mdsched.exe&lt;/code> → &lt;em>Restart now&lt;/em>) is the quick built-in check — less thorough, but a fast first pass.&lt;/li>
&lt;li>&lt;strong>Reseat and isolate:&lt;/strong> power down, reseat both sticks firmly, then if the errors persist, &lt;strong>test one stick at a time&lt;/strong> in the same slot to find the bad module. A single failing stick is a common, cheap fix — replace it (ideally with a matched kit).&lt;/li>
&lt;/ul>
&lt;p>If MemTest86 is clean at default speed, your physical RAM is probably fine — which points straight at Step 2.&lt;/p>
&lt;h2 id="step-2-drop-xmp--expo-to-jedec">Step 2: Drop XMP / EXPO to JEDEC&lt;/h2>
&lt;p>This is the step people skip, and it fixes a huge share of 0x139 on modern builds. &lt;strong>XMP&lt;/strong> (Intel) and &lt;strong>EXPO&lt;/strong> (AMD) are memory &lt;em>overclock&lt;/em> profiles — the advertised DDR5-6000 or DDR5-6400 speed is not the RAM&amp;rsquo;s guaranteed-stable default. If your specific kit or your CPU&amp;rsquo;s memory controller can&amp;rsquo;t quite hold that profile, it silently corrupts data and throws &lt;code>0x139&lt;/code>, while the sticks themselves are perfectly good.&lt;/p>
&lt;ul>
&lt;li>In BIOS, &lt;strong>disable XMP/EXPO&lt;/strong> (or set the profile to &lt;strong>Auto/Default&lt;/strong>) so memory runs at its JEDEC base speed (typically DDR5-4800 or 5600).&lt;/li>
&lt;li>Boot and use the PC. &lt;strong>If the crashes stop, the overclock was the problem&lt;/strong> — not the RAM.&lt;/li>
&lt;li>From there you can try a milder profile, nudge SoC/DRAM voltage, or simply run at JEDEC. If you&amp;rsquo;re unsure what speed your kit is rated for versus running at, our &lt;a href="https://techfuelhq.com/articles/ddr5-ram-buying-guide-2025/">DDR5 buying guide&lt;/a> explains the XMP/EXPO-versus-JEDEC distinction and the AM5 6000-sweet-spot in plain terms.&lt;/li>
&lt;/ul>
&lt;p>A brand-new build that has &lt;strong>never&lt;/strong> been stable and throws 0x139 is very often this — an EXPO profile the board never truly validated.&lt;/p>
&lt;h2 id="step-3-find-a-bad-driver-with-driver-verifier">Step 3: Find a bad driver with Driver Verifier&lt;/h2>
&lt;p>If memory is clean and the overclock is ruled out, a misbehaving driver corrupting kernel memory is next. First, read the easy clue: open &lt;code>C:\Windows\Minidump&lt;/code> with &lt;strong>BlueScreenView&lt;/strong> (free) — if it names a specific &lt;code>.sys&lt;/code>, update or roll back that driver and you may be done. A graphics driver (&lt;code>nvlddmkm.sys&lt;/code>, &lt;code>amdkmdag.sys&lt;/code>) gets a clean reinstall via our &lt;a href="https://techfuelhq.com/articles/gpu-driver-crash-fix-2026/">GPU driver crash fix guide&lt;/a>.&lt;/p>
&lt;p>When the dump is vague, &lt;strong>Driver Verifier&lt;/strong> forces the guilty driver to reveal itself — but it&amp;rsquo;s a power tool, so use it safely:&lt;/p>
&lt;ol>
&lt;li>Create a &lt;strong>System Restore point&lt;/strong> first.&lt;/li>
&lt;li>Run &lt;strong>&lt;code>verifier&lt;/code>&lt;/strong> → &lt;em>Create custom settings&lt;/em> → select the standard tests → &lt;em>Select driver names from a list&lt;/em> → check &lt;strong>only non-Microsoft drivers&lt;/strong>.&lt;/li>
&lt;li>Reboot. If a bad driver exists, Verifier will blue-screen and name it in the next minidump.&lt;/li>
&lt;li>&lt;strong>Know the escape hatch:&lt;/strong> if it boot-loops, enter &lt;strong>Safe Mode&lt;/strong> and run &lt;strong>&lt;code>verifier /reset&lt;/code>&lt;/strong> to turn it off.&lt;/li>
&lt;/ol>
&lt;p>If you&amp;rsquo;re not comfortable recovering from a boot loop, skip Verifier and lean on Steps 1–2 and 4 — they resolve most cases without it.&lt;/p>
&lt;h2 id="step-4-repair-system-files-and-check-storage">Step 4: Repair system files and check storage&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Corrupt system files&lt;/strong> (common after a failed update) — open &lt;strong>Terminal (Admin)&lt;/strong> and run &lt;code>sfc /scannow&lt;/code>, then &lt;code>DISM /Online /Cleanup-Image /RestoreHealth&lt;/code>, and reboot.&lt;/li>
&lt;li>&lt;strong>Failing storage&lt;/strong> — a dying boot SSD can feed corrupt data back to the kernel. Run &lt;strong>CrystalDiskInfo&lt;/strong>; a drive reading &lt;strong>Caution&lt;/strong> should be backed up and replaced. If the drive is also vanishing from Explorer or slowing down, work our &lt;a href="https://techfuelhq.com/articles/ssd-not-showing-up-2026/">SSD not showing up guide&lt;/a>.&lt;/li>
&lt;li>&lt;strong>Malware&lt;/strong> — because &amp;ldquo;security&amp;rdquo; is in the name people jump here first, but it&amp;rsquo;s an uncommon cause. A full &lt;strong>Windows Security&lt;/strong> scan rules it out; don&amp;rsquo;t let it distract from the RAM and driver work.&lt;/li>
&lt;/ul>
&lt;h2 id="the-fix-order-in-one-list">The fix order, in one list&lt;/h2>
&lt;ol>
&lt;li>&lt;strong>Test RAM&lt;/strong> — MemTest86 overnight, reseat, one stick at a time.&lt;/li>
&lt;li>&lt;strong>Drop XMP/EXPO to JEDEC&lt;/strong> — rules out an unstable memory overclock (fixes many new builds).&lt;/li>
&lt;li>&lt;strong>Drivers&lt;/strong> — read the minidump (BlueScreenView); use Driver Verifier for the stubborn ones, with a restore point and the Safe-Mode reset ready.&lt;/li>
&lt;li>&lt;strong>System files + storage&lt;/strong> — &lt;code>sfc&lt;/code> / DISM, then CrystalDiskInfo; a quick malware scan to close it out.&lt;/li>
&lt;/ol>
&lt;p>The reason RAM leads and malware trails is the stop code itself: &lt;code>0x139&lt;/code> is a &lt;strong>memory-integrity&lt;/strong> failure, and you test the things that corrupt memory before the things that rarely do. If this blue screen is showing up alongside &lt;em>other&lt;/em> stop codes or random reboots, step up to the whole-system flow in &lt;a href="https://techfuelhq.com/articles/pc-keeps-restarting-2026/">PC keeps restarting&lt;/a> or &lt;a href="https://techfuelhq.com/articles/computer-keeps-freezing-2026/">computer keeps freezing&lt;/a>, where the stop-code decoder maps each code to its fix.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>Stop code identity: Microsoft&amp;rsquo;s &lt;a href="https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/bug-check-0x139--kernel-security-check-failure" rel="noopener">Bug Check 0x139 KERNEL_SECURITY_CHECK_FAILURE&lt;/a> reference — the kernel detected the corruption of a critical data structure. The RAM-first ordering reflects that this is a memory-integrity bug check, corroborated across Microsoft Q&amp;amp;A, Tom&amp;rsquo;s Hardware, Level1Techs and MSI forum threads that repeatedly trace 0x139 to bad RAM or an unstable XMP/EXPO profile.&lt;/li>
&lt;li>Memory testing: MemTest86 (PassMark) from bootable USB, and Windows Memory Diagnostic (&lt;code>mdsched.exe&lt;/code>). XMP/EXPO-versus-JEDEC behaviour is standard DDR5 platform behaviour, self-verifiable in BIOS. Driver Verifier (&lt;code>verifier.exe&lt;/code>) and its &lt;code>verifier /reset&lt;/code> recovery are documented Microsoft tools. Minidump reading via BlueScreenView (NirSoft); drive health via CrystalDiskInfo SMART data.&lt;/li>
&lt;/ul>
&lt;p>&lt;em>Steps are for Windows 10 and 11 in 2026; menu names vary slightly by version. Found an error? Email &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a> with the article URL.&lt;/em>&lt;/p></description></item><item><title>Page Fault in Nonpaged Area? Test RAM &amp; Storage (2026)</title><link>https://techfuelhq.com/articles/page-fault-in-nonpaged-area-2026/</link><pubDate>Mon, 13 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/page-fault-in-nonpaged-area-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-07-13 · ~8 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;strong>PAGE_FAULT_IN_NONPAGED_AREA&lt;/strong> (stop code &lt;code>0x00000050&lt;/code>) has an unusually literal meaning. The &amp;ldquo;nonpaged area&amp;rdquo; is memory Windows keeps permanently resident — data too critical to ever swap to disk. This blue screen means Windows went to read something there and &lt;strong>the data wasn&amp;rsquo;t valid&lt;/strong>. So the whole diagnosis is one question: &lt;strong>why was the memory missing?&lt;/strong> There are only three real answers, and testing them in the right order saves you days.&lt;/p>
&lt;h2 id="the-address-was-there-a-moment-ago-where-did-it-go">The address was there a moment ago. Where did it go?&lt;/h2>
&lt;p>Windows asked for data at a specific memory address and got garbage or nothing. Three things cause that, and they&amp;rsquo;re not equally likely:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Bad RAM lost it.&lt;/strong> A failing or unstable stick corrupts the resident data. Most common.&lt;/li>
&lt;li>&lt;strong>Failing storage can&amp;rsquo;t supply it.&lt;/strong> The nonpaged area is backed by the drive; a dying SSD or bad sectors can&amp;rsquo;t serve the data back. Common, especially on boot.&lt;/li>
&lt;li>&lt;strong>A driver pointed at the wrong address.&lt;/strong> A buggy driver references freed or invalid memory. Common when the blue screen names a &lt;code>.sys&lt;/code>.&lt;/li>
&lt;/ol>
&lt;p>That ordering &lt;em>is&lt;/em> the fix order. The two most likely causes are hardware, so you test memory and storage before you start reinstalling drivers.&lt;/p>
&lt;!-- ========== SIGNATURE VISUAL: THREE-REASON SPLIT (distinct grammar: one symptom, three sources, ranked) ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0c1015;border:1px solid rgba(129,140,248,0.20);border-radius:10px;padding:24px 20px 18px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
&lt;div style="margin-bottom:15px;">
&lt;div style="font-size:19px;font-weight:700;color:#eceefb;letter-spacing:-0.3px;">"The memory wasn't there" &amp;#8212; three reasons, in order&lt;/div>
&lt;div style="font-size:12.5px;color:#9aa0c4;margin-top:6px;line-height:1.5;">0x50 is one symptom with three sources. Test top to bottom; the first two are hardware and cover most cases. A named driver jumps you straight to #3.&lt;/div>
&lt;/div>
&lt;div style="display:flex;flex-direction:column;gap:9px;">
&lt;div style="background:rgba(129,140,248,0.07);border:1px solid rgba(129,140,248,0.22);border-radius:8px;padding:13px 15px;min-width:0;">
&lt;div style="display:flex;justify-content:space-between;align-items:baseline;gap:10px;flex-wrap:wrap;">
&lt;span style="font-size:13.5px;font-weight:700;color:#c7cbf5;">1 &amp;#183; RAM lost it&lt;/span>
&lt;span style="font-size:10px;font-weight:700;color:#0c1015;background:#818cf8;border-radius:20px;padding:2px 9px;white-space:nowrap;">MOST COMMON&lt;/span>
&lt;/div>
&lt;div style="font-size:11.5px;color:#c3c8e0;line-height:1.5;margin-top:4px;">A bad or XMP-unstable stick corrupts resident memory. &lt;strong style="color:#e6e8f6;">MemTest86, one stick at a time, JEDEC to rule out the overclock. (Step 1.)&lt;/strong>&lt;/div>
&lt;/div>
&lt;div style="background:rgba(96,165,250,0.07);border:1px solid rgba(96,165,250,0.22);border-radius:8px;padding:13px 15px;min-width:0;">
&lt;div style="display:flex;justify-content:space-between;align-items:baseline;gap:10px;flex-wrap:wrap;">
&lt;span style="font-size:13.5px;font-weight:700;color:#bcd6fb;">2 &amp;#183; Storage can't supply it&lt;/span>
&lt;span style="font-size:10px;font-weight:700;color:#9fc3f0;border:1px solid rgba(96,165,250,0.5);border-radius:20px;padding:2px 9px;white-space:nowrap;">COMMON ON BOOT&lt;/span>
&lt;/div>
&lt;div style="font-size:11.5px;color:#c3d0e6;line-height:1.5;margin-top:4px;">A failing drive or bad sectors can&amp;#8217;t serve the paged-out data back. &lt;strong style="color:#e6edf6;">CrystalDiskInfo + chkdsk /f /r. (Step 2.)&lt;/strong>&lt;/div>
&lt;/div>
&lt;div style="background:rgba(246,169,74,0.08);border:1px solid rgba(246,169,74,0.22);border-radius:8px;padding:13px 15px;min-width:0;">
&lt;div style="display:flex;justify-content:space-between;align-items:baseline;gap:10px;flex-wrap:wrap;">
&lt;span style="font-size:13.5px;font-weight:700;color:#f6d9ad;">3 &amp;#183; A driver pointed wrong&lt;/span>
&lt;span style="font-size:10px;font-weight:700;color:#f0b568;border:1px solid rgba(246,169,74,0.5);border-radius:20px;padding:2px 9px;white-space:nowrap;">IF A .SYS IS NAMED&lt;/span>
&lt;/div>
&lt;div style="font-size:11.5px;color:#e2d4bd;line-height:1.5;margin-top:4px;">nvlddmkm.sys (NVIDIA), vgk.sys (Vanguard anti-cheat), or another named driver. &lt;strong style="color:#f6e6cf;">Fix that one driver. (Step 3.)&lt;/strong>&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:14px;padding-top:12px;border-top:1px solid rgba(129,140,248,0.14);font-size:11px;color:#8288ad;line-height:1.5;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;">
&lt;span>The blue screen sometimes prints a &lt;span style="font-family:ui-monospace,monospace;color:#c3c8e0;">.sys&lt;/span> name in parentheses &amp;#8212; if it does, start at #3. No name &amp;#8212; start at #1.&lt;/span>
&lt;span style="font-family:ui-monospace,monospace;font-size:10px;color:#565c7e;">techfuelhq.com&lt;/span>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="step-1-test-ram">Step 1: Test RAM&lt;/h2>
&lt;p>The nonpaged area lives in physical memory, so a bad stick is the first and most likely suspect.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>MemTest86&lt;/strong> from a USB stick, at least one full overnight pass. A single error means a stick or a memory setting is bad.&lt;/li>
&lt;li>&lt;strong>Windows Memory Diagnostic&lt;/strong> (&lt;code>Windows Key + R&lt;/code> → &lt;code>mdsched.exe&lt;/code>) is the quick built-in first pass.&lt;/li>
&lt;li>&lt;strong>Reseat and isolate:&lt;/strong> power down, reseat both sticks, then test one at a time to find the bad module.&lt;/li>
&lt;li>&lt;strong>Rule out the overclock:&lt;/strong> if you run &lt;strong>XMP/EXPO&lt;/strong>, set memory to default &lt;strong>JEDEC&lt;/strong> speed. An unstable profile corrupts memory exactly like a bad stick while the RAM itself is fine — the same trap covered in &lt;a href="https://techfuelhq.com/articles/kernel-security-check-failure-2026/">kernel security check failure&lt;/a>, the other memory-corruption blue screen. Our &lt;a href="https://techfuelhq.com/articles/ddr5-ram-buying-guide-2025/">DDR5 buying guide&lt;/a> explains the XMP/EXPO-versus-JEDEC distinction.&lt;/li>
&lt;/ul>
&lt;h2 id="step-2-check-storage-health">Step 2: Check storage health&lt;/h2>
&lt;p>Because the nonpaged area is backed by the drive, a failing disk is the second suspect — and the leading one when 0x50 hits &lt;strong>on boot&lt;/strong> or when loading large files.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>CrystalDiskInfo&lt;/strong> reads the drive&amp;rsquo;s SMART health. Anything reading &lt;strong>Caution&lt;/strong> (reallocated sectors, high error counts) is a warning — back up now.&lt;/li>
&lt;li>&lt;strong>&lt;code>chkdsk /f /r&lt;/code>&lt;/strong> from an admin Terminal scans for and repairs bad sectors (it schedules on the next reboot for the system drive).&lt;/li>
&lt;li>If the drive is also &lt;strong>disappearing from Explorer&lt;/strong>, slowing down, or dropping out, treat it as a storage-health problem and work our &lt;a href="https://techfuelhq.com/articles/ssd-not-showing-up-2026/">SSD not showing up guide&lt;/a>.&lt;/li>
&lt;/ul>
&lt;h2 id="step-3-name-the-driver-from-the-minidump">Step 3: Name the driver from the minidump&lt;/h2>
&lt;p>If the blue screen printed a &lt;code>.sys&lt;/code> in parentheses, or RAM and storage both test clean, read the dump:&lt;/p>
&lt;ol>
&lt;li>Install &lt;strong>BlueScreenView&lt;/strong> (free, portable) and point it at &lt;code>C:\Windows\Minidump&lt;/code>.&lt;/li>
&lt;li>Read the driver it names.&lt;/li>
&lt;/ol>
&lt;p>Two names come up constantly for 0x50:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;code>nvlddmkm.sys&lt;/code>&lt;/strong> — the NVIDIA graphics driver. Do a clean reinstall with &lt;strong>DDU&lt;/strong> (Display Driver Uninstaller) in Safe Mode, then a fresh driver.&lt;/li>
&lt;li>&lt;strong>&lt;code>vgk.sys&lt;/code>&lt;/strong> — &lt;strong>Riot Vanguard&lt;/strong>, the Valorant/League anti-cheat that runs at the kernel level. Update or reinstall the game&amp;rsquo;s anti-cheat; uninstall it to confirm it&amp;rsquo;s the cause.&lt;/li>
&lt;/ul>
&lt;p>Any other &lt;code>.sys&lt;/code> names its device — search the filename, then update or roll back that one driver.&lt;/p>
&lt;h2 id="step-4-system-files-and-paging-file-last">Step 4: System files and paging file (last)&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Repair system files:&lt;/strong> &lt;code>sfc /scannow&lt;/code>, then &lt;code>DISM /Online /Cleanup-Image /RestoreHealth&lt;/code>, then reboot — useful after a bad update damaged a system file.&lt;/li>
&lt;li>&lt;strong>Reset the paging file:&lt;/strong> rarely the cause, but a corrupt paging file can glitch the nonpaged area. Under &lt;strong>System Properties → Advanced → Performance Settings → Advanced → Virtual memory&lt;/strong>, toggle &amp;ldquo;Automatically manage&amp;rdquo; off and on (or set a custom size, then back to system-managed) to rebuild it.&lt;/li>
&lt;/ul>
&lt;h2 id="the-fix-order-in-one-list">The fix order, in one list&lt;/h2>
&lt;ol>
&lt;li>&lt;strong>RAM&lt;/strong> — MemTest86, one stick at a time, JEDEC to rule out XMP/EXPO.&lt;/li>
&lt;li>&lt;strong>Storage&lt;/strong> — CrystalDiskInfo (SMART) + &lt;code>chkdsk /f /r&lt;/code>.&lt;/li>
&lt;li>&lt;strong>Driver&lt;/strong> — BlueScreenView names the &lt;code>.sys&lt;/code>; DDU for &lt;code>nvlddmkm.sys&lt;/code>, reinstall anti-cheat for &lt;code>vgk.sys&lt;/code>.&lt;/li>
&lt;li>&lt;strong>System files / paging file&lt;/strong> — &lt;code>sfc&lt;/code> + DISM, rebuild the paging file.&lt;/li>
&lt;/ol>
&lt;p>Because 0x50 is invalid-memory-referenced, the two hardware causes lead and the driver work follows a named clue — no reinstalling every driver on a hunch. If this blue screen appears alongside other stop codes or random reboots, the whole-system flow in &lt;a href="https://techfuelhq.com/articles/pc-keeps-restarting-2026/">PC keeps restarting&lt;/a> maps each code to its fix.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>Stop code identity: Microsoft&amp;rsquo;s &lt;a href="https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/bug-check-0x50--page-fault-in-nonpaged-area" rel="noopener">Bug Check 0x50 PAGE_FAULT_IN_NONPAGED_AREA&lt;/a> — invalid system memory was referenced; the address is wrong or points at freed memory. The RAM-then-storage-then-driver ordering reflects that this is a memory/hardware-integrity bug check, corroborated across Microsoft Q&amp;amp;A, Tom&amp;rsquo;s Hardware, and Reddit r/techsupport / r/pchelp threads.&lt;/li>
&lt;li>Memory testing: MemTest86 (PassMark) and Windows Memory Diagnostic (&lt;code>mdsched.exe&lt;/code>). Storage: CrystalDiskInfo SMART data and &lt;code>chkdsk /f /r&lt;/code>. Minidump reading via BlueScreenView (NirSoft). Driver names &lt;code>nvlddmkm.sys&lt;/code> (NVIDIA) and &lt;code>vgk.sys&lt;/code> (Riot Vanguard) are standard, self-verifiable identifications; DDU is the standard clean-reinstall tool for GPU drivers.&lt;/li>
&lt;/ul>
&lt;p>&lt;em>Steps are for Windows 10 and 11 in 2026; menu names vary slightly by version. Found an error? Email &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a> with the article URL.&lt;/em>&lt;/p></description></item><item><title>System Thread Exception Not Handled? Read the Driver (2026)</title><link>https://techfuelhq.com/articles/system-thread-exception-not-handled-2026/</link><pubDate>Mon, 13 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/system-thread-exception-not-handled-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-07-13 · ~8 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;strong>SYSTEM_THREAD_EXCEPTION_NOT_HANDLED&lt;/strong> (stop code &lt;code>0x0000007E&lt;/code>) is one of the friendlier blue screens, because it usually &lt;strong>tells you what broke&lt;/strong>. A system thread threw an error nothing caught — and that thread almost always belongs to a &lt;strong>driver&lt;/strong>. Better still, Windows often prints the guilty driver&amp;rsquo;s filename right there in parentheses. Your job is to read that name and fix that one driver, not to reinstall everything and hope.&lt;/p>
&lt;h2 id="the-one-thing-that-makes-this-error-easy-the-parentheses">The one thing that makes this error easy: the parentheses&lt;/h2>
&lt;p>Most blue screens give you a cryptic code and nothing else. This one frequently shows something like:&lt;/p>
&lt;blockquote>
&lt;p>SYSTEM_THREAD_EXCEPTION_NOT_HANDLED &lt;strong>(nvlddmkm.sys)&lt;/strong>&lt;/p>&lt;/blockquote>
&lt;p>That &lt;code>.sys&lt;/code> in parentheses is the driver that crashed. It turns a vague &amp;ldquo;something&amp;rsquo;s wrong&amp;rdquo; into a one-driver fix. If you see a name, you&amp;rsquo;re most of the way there. If you &lt;em>don&amp;rsquo;t&lt;/em> see one (the screen flashes too fast, or it&amp;rsquo;s blank), the minidump gives you the same answer — covered in Step 3.&lt;/p>
&lt;!-- ========== SIGNATURE VISUAL: THE NAME IN THE PARENTHESES (distinct grammar: decoder keyed to the .sys) ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0b0f14;border:1px solid rgba(52,211,153,0.20);border-radius:10px;padding:24px 20px 18px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
&lt;div style="margin-bottom:15px;">
&lt;div style="font-size:19px;font-weight:700;color:#e7f6f0;letter-spacing:-0.3px;">Read the name in the parentheses&lt;/div>
&lt;div style="font-size:12.5px;color:#8fbaa8;margin-top:6px;line-height:1.5;">The &lt;span style="font-family:ui-monospace,monospace;color:#cdeede;">.sys&lt;/span> file on the blue screen names the driver that crashed. Match it below, then fix that one driver in Safe Mode.&lt;/div>
&lt;/div>
&lt;div style="display:flex;flex-direction:column;gap:7px;">
&lt;div style="display:flex;gap:12px;align-items:baseline;background:rgba(52,211,153,0.08);border-left:3px solid #34d399;border-radius:0 6px 6px 0;padding:10px 13px;min-width:0;">
&lt;span style="font-family:ui-monospace,monospace;font-size:11px;font-weight:700;color:#6ee7b7;flex-shrink:0;width:118px;word-break:break-word;">nvlddmkm.sys&lt;/span>
&lt;span style="font-size:11.5px;color:#c9e3d7;line-height:1.45;min-width:0;">NVIDIA graphics driver. &lt;strong style="color:#e7f6f0;">Clean-reinstall with DDU. Most common by far.&lt;/strong>&lt;/span>
&lt;/div>
&lt;div style="display:flex;gap:12px;align-items:baseline;background:rgba(52,211,153,0.08);border-left:3px solid #34d399;border-radius:0 6px 6px 0;padding:10px 13px;min-width:0;">
&lt;span style="font-family:ui-monospace,monospace;font-size:11px;font-weight:700;color:#6ee7b7;flex-shrink:0;width:118px;word-break:break-word;">atikmdag.sys&lt;/span>
&lt;span style="font-size:11.5px;color:#c9e3d7;line-height:1.45;min-width:0;">AMD graphics driver. &lt;strong style="color:#e7f6f0;">Same fix &amp;#8212; DDU, then a fresh driver.&lt;/strong>&lt;/span>
&lt;/div>
&lt;div style="display:flex;gap:12px;align-items:baseline;background:rgba(96,165,250,0.08);border-left:3px solid #60a5fa;border-radius:0 6px 6px 0;padding:10px 13px;min-width:0;">
&lt;span style="font-family:ui-monospace,monospace;font-size:11px;font-weight:700;color:#93c5fd;flex-shrink:0;width:118px;word-break:break-word;">netwtw*.sys / rt*.sys&lt;/span>
&lt;span style="font-size:11.5px;color:#cdd9e8;line-height:1.45;min-width:0;">Wi-Fi / LAN driver (Intel, Realtek). &lt;strong style="color:#e6edf6;">Update from the adapter maker, not just Windows Update.&lt;/strong>&lt;/span>
&lt;/div>
&lt;div style="display:flex;gap:12px;align-items:baseline;background:rgba(148,163,184,0.10);border-left:3px solid #94a3b8;border-radius:0 6px 6px 0;padding:10px 13px;min-width:0;">
&lt;span style="font-family:ui-monospace,monospace;font-size:11px;font-weight:700;color:#cbd5e1;flex-shrink:0;width:118px;word-break:break-word;">any other .sys&lt;/span>
&lt;span style="font-size:11.5px;color:#cdd9e8;line-height:1.45;min-width:0;">Search the filename to find the device. &lt;strong style="color:#e2e8f0;">Update or roll back that one driver.&lt;/strong>&lt;/span>
&lt;/div>
&lt;div style="display:flex;gap:12px;align-items:baseline;background:rgba(148,163,184,0.10);border-left:3px solid #94a3b8;border-radius:0 6px 6px 0;padding:10px 13px;min-width:0;">
&lt;span style="font-family:ui-monospace,monospace;font-size:11px;font-weight:700;color:#cbd5e1;flex-shrink:0;width:118px;word-break:break-word;">no name shown&lt;/span>
&lt;span style="font-size:11.5px;color:#cdd9e8;line-height:1.45;min-width:0;">Read the minidump with BlueScreenView. &lt;strong style="color:#e2e8f0;">It names the same .sys. (Step 3.)&lt;/strong>&lt;/span>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:14px;padding-top:12px;border-top:1px solid rgba(52,211,153,0.14);font-size:11px;color:#7a9a8b;line-height:1.5;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;">
&lt;span>Every fix below happens in &lt;strong style="color:#c9e3d7;">Safe Mode&lt;/strong> &amp;#8212; a boot-looping 0x7E can&amp;#8217;t be fixed from a desktop it never reaches.&lt;/span>
&lt;span style="font-family:ui-monospace,monospace;font-size:10px;color:#4d6357;">techfuelhq.com&lt;/span>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="step-1-get-into-safe-mode">Step 1: Get into Safe Mode&lt;/h2>
&lt;p>If the system boots normally between crashes, you can work from the desktop. If it&amp;rsquo;s &lt;strong>boot-looping&lt;/strong>, you need Safe Mode first:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Force-power-off during boot three times&lt;/strong> (hold the power button as Windows starts to load) to trigger &lt;strong>Automatic Repair&lt;/strong>.&lt;/li>
&lt;li>Choose &lt;strong>Advanced options → Startup Settings → Restart&lt;/strong>.&lt;/li>
&lt;li>Press &lt;strong>5&lt;/strong> for &lt;strong>Safe Mode with Networking&lt;/strong> (so you can download a driver).&lt;/li>
&lt;/ol>
&lt;p>Safe Mode loads Windows with generic drivers, so the crashing driver is inactive and you can replace it.&lt;/p>
&lt;h2 id="step-2-fix-the-named-driver">Step 2: Fix the named driver&lt;/h2>
&lt;p>With the &lt;code>.sys&lt;/code> name in hand:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Graphics driver&lt;/strong> (&lt;code>nvlddmkm.sys&lt;/code> / &lt;code>atikmdag.sys&lt;/code>): the clean fix is &lt;strong>DDU (Display Driver Uninstaller)&lt;/strong> in Safe Mode, then install a fresh driver — the full process is in our &lt;a href="https://techfuelhq.com/articles/gpu-driver-crash-fix-2026/">GPU driver crash fix guide&lt;/a>. If the crash started right after a driver update, install the &lt;strong>previous&lt;/strong> stable version rather than the newest.&lt;/li>
&lt;li>&lt;strong>Network / Wi-Fi driver&lt;/strong> (&lt;code>netwtw*.sys&lt;/code>, &lt;code>rt*.sys&lt;/code>): update it from the &lt;strong>laptop or adapter maker&amp;rsquo;s site&lt;/strong> (Intel, Realtek, Qualcomm), which is usually newer than Windows Update&amp;rsquo;s build.&lt;/li>
&lt;li>&lt;strong>Any other driver:&lt;/strong> in &lt;strong>Device Manager&lt;/strong>, find the device, open the &lt;strong>Driver&lt;/strong> tab, and either &lt;strong>Roll Back Driver&lt;/strong> (if it broke after an update) or &lt;strong>Update driver&lt;/strong>. Roll Back is the fastest fix when a recent update caused it.&lt;/li>
&lt;/ul>
&lt;h2 id="step-3-if-no-driver-is-named-read-the-minidump">Step 3: If no driver is named, read the minidump&lt;/h2>
&lt;p>When the blue screen doesn&amp;rsquo;t show a name, the crash dump has it:&lt;/p>
&lt;ol>
&lt;li>Install &lt;strong>BlueScreenView&lt;/strong> (free, portable) and point it at &lt;code>C:\Windows\Minidump&lt;/code>.&lt;/li>
&lt;li>It lists the &lt;code>.sys&lt;/code> that was executing when the thread threw — the same driver you&amp;rsquo;d have read on the blue screen.&lt;/li>
&lt;/ol>
&lt;p>Then fix that driver per Step 2. This is why you almost never need to reinstall every driver for 0x7E — the system tells you which one, one way or another.&lt;/p>
&lt;h2 id="step-4-system-files-then-hardware-last">Step 4: System files, then hardware (last)&lt;/h2>
&lt;p>If the driver path is genuinely exhausted:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Repair system files:&lt;/strong> in an admin Terminal, run &lt;code>sfc /scannow&lt;/code>, then &lt;code>DISM /Online /Cleanup-Image /RestoreHealth&lt;/code>, and reboot — useful when a bad update damaged a system driver.&lt;/li>
&lt;li>&lt;strong>Test RAM:&lt;/strong> unstable memory can make a driver throw exceptions. Run &lt;strong>MemTest86&lt;/strong> overnight, and if you run &lt;strong>XMP/EXPO&lt;/strong>, test at default JEDEC speed.&lt;/li>
&lt;li>&lt;strong>Check GPU temperature:&lt;/strong> an overheating graphics card can crash its own driver — confirm temps are in range under load before blaming the card itself.&lt;/li>
&lt;/ul>
&lt;h2 id="the-fix-order-in-one-list">The fix order, in one list&lt;/h2>
&lt;ol>
&lt;li>&lt;strong>Read the &lt;code>.sys&lt;/code>&lt;/strong> in parentheses (or from the minidump).&lt;/li>
&lt;li>&lt;strong>Boot Safe Mode&lt;/strong> (Automatic Repair → Startup Settings → Safe Mode with Networking).&lt;/li>
&lt;li>&lt;strong>Fix that one driver&lt;/strong> — DDU for graphics, vendor update for network, Roll Back for a post-update break.&lt;/li>
&lt;li>&lt;strong>System files / hardware last&lt;/strong> — &lt;code>sfc&lt;/code> + DISM, then MemTest86 and GPU temps.&lt;/li>
&lt;/ol>
&lt;p>Because 0x7E is a driver throwing an uncaught exception — and it usually names the driver — this is one of the fastest blue screens to fix once you know to read the parentheses. If it shows up alongside other stop codes or random reboots, the whole-system flow in &lt;a href="https://techfuelhq.com/articles/pc-keeps-restarting-2026/">PC keeps restarting&lt;/a> and &lt;a href="https://techfuelhq.com/articles/computer-keeps-freezing-2026/">computer keeps freezing&lt;/a> maps each code to its fix, and the storage-driver sibling &lt;a href="https://techfuelhq.com/articles/dpc-watchdog-violation-2026/">DPC watchdog violation&lt;/a> covers the other common driver-timeout blue screen.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>Stop code identity: Microsoft&amp;rsquo;s &lt;a href="https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/bug-check-0x7e--system-thread-exception-not-handled" rel="noopener">Bug Check 0x7E SYSTEM_THREAD_EXCEPTION_NOT_HANDLED&lt;/a> — a system thread generated an exception the error handler did not catch; the parameters identify the exception and the driver. The driver-first ordering and the parenthetical-&lt;code>.sys&lt;/code> behaviour are standard and self-verifiable, corroborated across Microsoft Q&amp;amp;A, Tom&amp;rsquo;s Hardware and Level1Techs threads that repeatedly trace 0x7E to a graphics or device driver.&lt;/li>
&lt;li>Tools: BlueScreenView (NirSoft) for &lt;code>C:\Windows\Minidump&lt;/code>; DDU (Wagnardsoft) for clean GPU-driver reinstalls; Windows Safe Mode and Device Manager Roll Back Driver are built-in. Driver identifiers &lt;code>nvlddmkm.sys&lt;/code> (NVIDIA) and &lt;code>atikmdag.sys&lt;/code> (AMD) are standard, verifiable names.&lt;/li>
&lt;/ul>
&lt;p>&lt;em>Steps are for Windows 10 and 11 in 2026; menu names vary slightly by version. Found an error? Email &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a> with the article URL.&lt;/em>&lt;/p></description></item><item><title>Computer Randomly Turns Off? Fix the Sudden Shutdowns (2026)</title><link>https://techfuelhq.com/articles/computer-randomly-turns-off-2026/</link><pubDate>Sat, 11 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/computer-randomly-turns-off-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-07-11 · Updated 2026-07-13 · ~9 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence what gets recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;p>A computer that suddenly turns itself off — no warning, no blue screen, just an instant black cut like the plug was pulled — is scary, but the &lt;em>way&lt;/em> it dies is the biggest clue you have. A total, instant power-off that &lt;strong>stays off&lt;/strong> is almost never a software crash. It&amp;rsquo;s a &lt;strong>hardware protection circuit doing its job&lt;/strong>: something got too hot, drew too much power, or shorted, and the system killed power to protect itself. That narrows the whole diagnosis to a short, ordered checklist.&lt;/p>
&lt;!-- ========== SIGNATURE VISUAL A: THE SHUTDOWN WAVEFORMS (oscilloscope-style power-vs-time signal traces, one per failure mode - wave-27 grammar, NOT reused from waves 1-26) ========== -->
&lt;div class="visual-block">
&lt;div style="background:#080b09;border:1px solid rgba(65,214,122,0.22);border-radius:10px;padding:22px 18px 16px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
&lt;div style="margin-bottom:14px;">
&lt;div style="display:flex;align-items:center;gap:9px;">
&lt;span style="width:8px;height:8px;border-radius:50%;background:#41d67a;box-shadow:0 0 8px #41d67a;">&lt;/span>
&lt;div style="font-size:18.5px;font-weight:700;color:#e4f5ea;letter-spacing:-0.3px;">The shape of the shutdown&lt;/div>
&lt;/div>
&lt;div style="font-size:12.5px;color:#7f9a86;margin-top:6px;line-height:1.5;">Each fault leaves a different trace on the power line. Read the shape of yours &amp;#8212; &lt;em>when&lt;/em> the power drops and whether it comes back &amp;#8212; and you have named the cause before you open the case.&lt;/div>
&lt;/div>
&lt;div style="display:grid;gap:9px;">
&lt;div style="background:#0d130e;border:1px solid rgba(65,214,122,0.13);border-radius:8px;padding:9px 12px 10px;">
&lt;svg viewBox="0 0 260 50" width="100%" style="display:block;height:auto;" role="img" aria-label="Power trace: flat at idle, steps up to a high load plateau, then drops instantly to zero after a few minutes.">
&lt;line x1="8" y1="44" x2="252" y2="44" stroke="#233026" stroke-width="1"/>
&lt;path d="M8,38 L54,38 L66,14 L196,14 L196,44 L252,44" fill="none" stroke="#41d67a" stroke-width="2" stroke-linejoin="round" stroke-linecap="round"/>
&lt;circle cx="196" cy="44" r="3.2" fill="#ef4444"/>
&lt;text x="118" y="11" font-family="ui-monospace,monospace" font-size="8" fill="#5f7a68">load&lt;/text>
&lt;/svg>
&lt;div style="font-size:11.5px;color:#cfe6d6;line-height:1.45;margin-top:3px;">&lt;strong style="color:#eafff2;">Fine, then an instant cut under load.&lt;/strong> Runs at idle, dies minutes into a game or render, won&amp;#8217;t restart until it cools &amp;#8212; &lt;strong style="color:#8fe0ad;">overheating&lt;/strong> (Step 2).&lt;/div>
&lt;/div>
&lt;div style="background:#0d130e;border:1px solid rgba(65,214,122,0.13);border-radius:8px;padding:9px 12px 10px;">
&lt;svg viewBox="0 0 260 50" width="100%" style="display:block;height:auto;" role="img" aria-label="Power trace: steady, a sharp spike, then an instant drop to zero exactly at the spike.">
&lt;line x1="8" y1="44" x2="252" y2="44" stroke="#233026" stroke-width="1"/>
&lt;path d="M8,26 L150,26 L160,12 L166,12 L166,44 L252,44" fill="none" stroke="#41d67a" stroke-width="2" stroke-linejoin="round" stroke-linecap="round"/>
&lt;circle cx="166" cy="44" r="3.2" fill="#ef4444"/>
&lt;text x="150" y="9" font-family="ui-monospace,monospace" font-size="8" fill="#5f7a68">spike&lt;/text>
&lt;/svg>
&lt;div style="font-size:11.5px;color:#cfe6d6;line-height:1.45;margin-top:3px;">&lt;strong style="color:#eafff2;">Drops the instant load spikes.&lt;/strong> Cuts out exactly when a game or benchmark hits hard, never at idle &amp;#8212; a strained or failing &lt;strong style="color:#8fe0ad;">power supply&lt;/strong> (Step 3).&lt;/div>
&lt;/div>
&lt;div style="background:#0d130e;border:1px solid rgba(65,214,122,0.13);border-radius:8px;padding:9px 12px 10px;">
&lt;svg viewBox="0 0 260 50" width="100%" style="display:block;height:auto;" role="img" aria-label="Power trace: a small bump right at power-on, then immediately back to zero.">
&lt;line x1="8" y1="44" x2="252" y2="44" stroke="#233026" stroke-width="1"/>
&lt;path d="M8,44 L20,44 L26,30 L34,30 L34,44 L252,44" fill="none" stroke="#41d67a" stroke-width="2" stroke-linejoin="round" stroke-linecap="round"/>
&lt;circle cx="34" cy="44" r="3.2" fill="#ef4444"/>
&lt;text x="14" y="26" font-family="ui-monospace,monospace" font-size="8" fill="#5f7a68">on&lt;/text>
&lt;/svg>
&lt;div style="font-size:11.5px;color:#cfe6d6;line-height:1.45;margin-top:3px;">&lt;strong style="color:#eafff2;">Dies seconds after the button.&lt;/strong> Off before anything reaches the screen, usually on a machine you just built or moved &amp;#8212; a dead &lt;strong style="color:#8fe0ad;">short&lt;/strong> (Step 4).&lt;/div>
&lt;/div>
&lt;div style="background:#0d130e;border:1px solid rgba(65,214,122,0.13);border-radius:8px;padding:9px 12px 10px;">
&lt;svg viewBox="0 0 260 50" width="100%" style="display:block;height:auto;" role="img" aria-label="Power trace: a low steady idle line that drops to zero at a random point with no load rise beforehand.">
&lt;line x1="8" y1="44" x2="252" y2="44" stroke="#233026" stroke-width="1"/>
&lt;path d="M8,30 L40,30 L44,28 L88,28 L92,31 L150,31 L154,29 L182,29 L182,44 L252,44" fill="none" stroke="#41d67a" stroke-width="2" stroke-linejoin="round" stroke-linecap="round"/>
&lt;circle cx="182" cy="44" r="3.2" fill="#ef4444"/>
&lt;text x="70" y="24" font-family="ui-monospace,monospace" font-size="8" fill="#5f7a68">idle&lt;/text>
&lt;/svg>
&lt;div style="font-size:11.5px;color:#cfe6d6;line-height:1.45;margin-top:3px;">&lt;strong style="color:#eafff2;">Random cut with no load, even at idle.&lt;/strong> No trigger, &amp;#8220;not overheating&amp;#8221; &amp;#8212; a degrading &lt;strong style="color:#8fe0ad;">PSU&lt;/strong>, unstable &lt;strong style="color:#8fe0ad;">memory&lt;/strong>, or bad &lt;strong style="color:#8fe0ad;">wall power&lt;/strong> (Steps 3, 5, 6).&lt;/div>
&lt;/div>
&lt;div style="background:#130f09;border:1px solid rgba(240,163,56,0.2);border-radius:8px;padding:9px 12px 10px;">
&lt;svg viewBox="0 0 260 50" width="100%" style="display:block;height:auto;" role="img" aria-label="Power trace: steady, drops to zero briefly, then rises back up on its own - a restart, not a shutdown.">
&lt;line x1="8" y1="44" x2="252" y2="44" stroke="#332a1a" stroke-width="1"/>
&lt;path d="M8,26 L140,26 L140,44 L164,44 L164,26 L252,26" fill="none" stroke="#f0a338" stroke-width="2" stroke-linejoin="round" stroke-linecap="round"/>
&lt;circle cx="152" cy="44" r="3.2" fill="#f0a338"/>
&lt;text x="150" y="9" font-family="ui-monospace,monospace" font-size="8" fill="#7a6540">back on&lt;/text>
&lt;/svg>
&lt;div style="font-size:11.5px;color:#f3ddc0;line-height:1.45;margin-top:3px;">&lt;strong style="color:#ffeccb;">Drops, then comes right back on its own.&lt;/strong> That is a &lt;strong style="color:#f0a338;">restart&lt;/strong>, not a shutdown &amp;#8212; a different fault list (Step 7).&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:12px;font-size:10.5px;color:#5f7368;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;">
&lt;span>Traces are illustrative &amp;#8212; the pattern, not the exact voltage, is the diagnostic.&lt;/span>
&lt;span style="font-family:ui-monospace,monospace;color:#4a5850;">techfuelhq.com&lt;/span>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="step-1-read-the-signature-this-decides-everything">Step 1: Read the signature (this decides everything)&lt;/h2>
&lt;p>Before you touch a screwdriver, answer three questions — they route you to the right cause immediately:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Does it stay off, or power back on by itself?&lt;/strong> If it instantly reboots on its own (comes back to the Windows logo without you pressing anything), that&amp;rsquo;s a &lt;em>restart&lt;/em>, not a shutdown — the cause list is different and starts with reading the crash code. Work the &lt;a href="https://techfuelhq.com/articles/pc-keeps-restarting-2026/">PC keeps restarting guide&lt;/a> instead.&lt;/li>
&lt;li>&lt;strong>Do you see a blue screen first, or is it an instant black cut?&lt;/strong> A blue-screen-then-reboot is software or a driver reporting a fault. An &lt;strong>instant black with no BSOD&lt;/strong> is power being cut faster than Windows can draw a screen — a hardware protection trip. This guide is for the instant-black kind.&lt;/li>
&lt;li>&lt;strong>Do the fans and lights die too, or keep running?&lt;/strong> A &lt;em>true&lt;/em> shutdown kills fans and lights together, completely. If the fans keep spinning and only the screen goes black, you didn&amp;rsquo;t lose power — that&amp;rsquo;s a freeze or a display fault (see the FAQ above).&lt;/li>
&lt;/ul>
&lt;p>The rest of this guide assumes the signature that actually means &amp;ldquo;shutdown&amp;rdquo;: &lt;strong>instant, complete power-off, no blue screen, stays off until you press the button.&lt;/strong> Now read &lt;em>when&lt;/em> it happens:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Only under load / while gaming&lt;/strong> → heat or power supply (Steps 2 and 3).&lt;/li>
&lt;li>&lt;strong>Seconds after you turn it on&lt;/strong>, especially a new build → a short circuit (Step 4).&lt;/li>
&lt;li>&lt;strong>Random, including at idle — &amp;ldquo;not overheating&amp;rdquo;&lt;/strong> → PSU degradation, unstable memory, or wall power (Steps 3, 5, 6).&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>One log confirms it was really a power cut.&lt;/strong> Open Event Viewer (&lt;code>eventvwr.msc&lt;/code>) → Windows Logs → System and look for &lt;strong>Event ID 41, source Kernel-Power&lt;/strong> — &amp;ldquo;the system has rebooted without cleanly shutting down first.&amp;rdquo; That entry is Windows telling you power was lost &lt;em>before&lt;/em> it could shut down properly, which rules out a clean/scheduled shutdown or a sleep setting masquerading as a crash. It&amp;rsquo;s a symptom marker, not a cause — a Kernel-Power 41 shows up for a thermal trip, a PSU drop, and a hard freeze alike — but seeing it confirms you&amp;rsquo;re chasing the right kind of fault and should keep working the signature below.&lt;/p>
&lt;!-- ========== SIGNATURE VISUAL B: SYMPTOM-TO-CAUSE LIKELIHOOD MIX (proportional-composition bars mapping WHEN it happens to which cause to suspect first - wave-27 grammar, distinct within-wave from the oscilloscope traces) ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0b1017;border:1px solid rgba(56,189,248,0.18);border-radius:10px;padding:22px 18px 16px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
&lt;div style="margin-bottom:16px;">
&lt;div style="display:flex;align-items:center;gap:9px;">
&lt;span style="width:8px;height:8px;border-radius:50%;background:#38bdf8;box-shadow:0 0 8px #38bdf8;">&lt;/span>
&lt;div style="font-size:18.5px;font-weight:700;color:#e8f1fb;letter-spacing:-0.3px;">Which shutdown do you have?&lt;/div>
&lt;/div>
&lt;div style="font-size:12.5px;color:#8090a3;margin-top:6px;line-height:1.5;">Same symptom, three different &lt;em>when&lt;/em>s &amp;#8212; and each points somewhere different. The widest block in your row is the cause to check &lt;strong style="color:#cdd9e6;">first&lt;/strong>.&lt;/div>
&lt;/div>
&lt;div style="display:flex;flex-direction:column;gap:15px;">
&lt;div>
&lt;div style="font-size:11px;font-weight:800;letter-spacing:0.6px;color:#c3cede;text-transform:uppercase;margin-bottom:5px;">Only under load / while gaming&lt;/div>
&lt;div style="display:flex;height:32px;border-radius:6px;overflow:hidden;font-size:10.5px;font-weight:700;">
&lt;div style="flex:52;background:#fb923c;display:flex;align-items:center;justify-content:center;color:#1c1204;">Overheating&lt;/div>
&lt;div style="flex:40;background:#41d67a;display:flex;align-items:center;justify-content:center;color:#06210f;">Power supply&lt;/div>
&lt;div style="flex:8;background:#2b3441;">&lt;/div>
&lt;/div>
&lt;/div>
&lt;div>
&lt;div style="font-size:11px;font-weight:800;letter-spacing:0.6px;color:#c3cede;text-transform:uppercase;margin-bottom:5px;">Seconds after power-on / new build&lt;/div>
&lt;div style="display:flex;height:32px;border-radius:6px;overflow:hidden;font-size:10.5px;font-weight:700;">
&lt;div style="flex:66;background:#ef4444;display:flex;align-items:center;justify-content:center;color:#2a0606;">Short circuit&lt;/div>
&lt;div style="flex:24;background:#41d67a;display:flex;align-items:center;justify-content:center;color:#06210f;">PSU&lt;/div>
&lt;div style="flex:10;background:#2b3441;">&lt;/div>
&lt;/div>
&lt;/div>
&lt;div>
&lt;div style="font-size:11px;font-weight:800;letter-spacing:0.6px;color:#c3cede;text-transform:uppercase;margin-bottom:5px;">Random / at idle / &amp;#8220;not overheating&amp;#8221;&lt;/div>
&lt;div style="display:flex;height:32px;border-radius:6px;overflow:hidden;font-size:10.5px;font-weight:700;">
&lt;div style="flex:44;background:#41d67a;display:flex;align-items:center;justify-content:center;color:#06210f;">Power supply&lt;/div>
&lt;div style="flex:26;background:#a78bfa;display:flex;align-items:center;justify-content:center;color:#1c1230;">RAM / XMP&lt;/div>
&lt;div style="flex:22;background:#38bdf8;display:flex;align-items:center;justify-content:center;color:#052030;">Wall power&lt;/div>
&lt;div style="flex:8;background:#2b3441;">&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:15px;padding-top:12px;border-top:1px solid rgba(56,189,248,0.12);font-size:10.5px;color:#aab6c6;line-height:1.5;">
&lt;span>&lt;span style="display:inline-block;width:9px;height:9px;border-radius:2px;background:#fb923c;vertical-align:middle;margin-right:4px;">&lt;/span>Overheating&lt;/span>
&lt;span>&lt;span style="display:inline-block;width:9px;height:9px;border-radius:2px;background:#41d67a;vertical-align:middle;margin-right:4px;">&lt;/span>Power supply&lt;/span>
&lt;span>&lt;span style="display:inline-block;width:9px;height:9px;border-radius:2px;background:#ef4444;vertical-align:middle;margin-right:4px;">&lt;/span>Short circuit&lt;/span>
&lt;span>&lt;span style="display:inline-block;width:9px;height:9px;border-radius:2px;background:#a78bfa;vertical-align:middle;margin-right:4px;">&lt;/span>RAM / XMP-EXPO&lt;/span>
&lt;span>&lt;span style="display:inline-block;width:9px;height:9px;border-radius:2px;background:#38bdf8;vertical-align:middle;margin-right:4px;">&lt;/span>Wall power&lt;/span>
&lt;/div>
&lt;div style="margin-top:11px;font-size:10.5px;color:#61707f;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;">
&lt;span>Block width = diagnostic priority for that pattern, not survey data.&lt;/span>
&lt;span style="font-family:ui-monospace,monospace;color:#4c5a68;">techfuelhq.com&lt;/span>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="step-2-overheating-thermal-shutdown">Step 2: Overheating (thermal shutdown)&lt;/h2>
&lt;p>Heat causes shutdowns in two stages. At its rated limit — roughly &lt;strong>95-100°C&lt;/strong> on the CPU — the chip first &lt;strong>throttles&lt;/strong>, dropping clocks to shed heat (that alone never turns the PC off; modern CPUs are designed to sit at that limit). The hard power cut comes from a separate emergency trip (Intel calls it THERMTRIP) that fires only when throttling can&amp;rsquo;t hold the temperature down — a dead pump, a detached cooler, a blocked fan. That&amp;rsquo;s why this is the #1 cause of shutdowns that happen &lt;strong>under load&lt;/strong>, and why the machine often refuses to restart until it has cooled for a minute or two — which is itself the giveaway.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Check temperatures under load&lt;/strong> with HWiNFO or HWMonitor and watch the peak right before it dies. Our &lt;a href="https://techfuelhq.com/articles/safe-cpu-temp-2026/">safe CPU temperature guide&lt;/a> covers what&amp;rsquo;s normal (Ryzen to ~95°C, Zen 4 X3D ~89°C, Intel ~100°C) and when heat is genuinely the fault — a chip parking at its limit and cutting out means cooling can&amp;rsquo;t keep up.&lt;/li>
&lt;li>&lt;strong>Clear dust&lt;/strong> from fans, heatsinks, and vents with a &lt;a href="https://www.amazon.com/s?k=compressed+air+duster+can&amp;tag=techfuelhq-20" rel="nofollow sponsored noopener" target="_blank">can of compressed air&lt;/a>, and confirm every fan actually spins. A failed CPU-cooler fan or a dead AIO pump causes fast, hard thermal shutdowns.&lt;/li>
&lt;li>&lt;strong>Reapply thermal paste&lt;/strong> if it&amp;rsquo;s a few years old — dried-out paste is the classic reason a PC that used to run cool now overheats and shuts off. A single tube of &lt;a href="https://www.amazon.com/dp/B07L9BDY3T?tag=techfuelhq-20" rel="nofollow sponsored noopener" target="_blank">Arctic MX-4&lt;/a> covers several repastes.&lt;/li>
&lt;/ul>
&lt;p>If it&amp;rsquo;s the graphics card getting too hot in games, &lt;a href="https://techfuelhq.com/articles/gpu-overheating-2026/">confirm the GPU is really overheating&lt;/a> with the core-vs-hotspot check before you pull the cooler apart — a card that only &lt;em>looks&lt;/em> hot needs a different fix. And if the CPU is the one hitting its limit, the &lt;a href="https://techfuelhq.com/articles/cpu-overheating-2026/">why is my CPU overheating&lt;/a> walkthrough sorts the cause by &lt;em>when&lt;/em> it happens.&lt;/p>
&lt;h2 id="step-3-power-supply-the-shutdown-specific-big-one">Step 3: Power supply (the shutdown-specific big one)&lt;/h2>
&lt;p>The PSU is the single most under-suspected cause of sudden shutdowns — and the most likely one when there&amp;rsquo;s &lt;strong>no blue screen&lt;/strong> and the crash is &lt;strong>load-related&lt;/strong>. When the supply can&amp;rsquo;t hold the load, one of its protection circuits fires — &lt;strong>over-current (OCP)&lt;/strong> on a rail, &lt;strong>over-power (OPP)&lt;/strong> across the whole unit, or &lt;strong>over-temperature (OTP)&lt;/strong> if a fan has died — and it drops every rail instantly to protect itself and your parts. A classic tell: after the shutdown you sometimes have to flip the PSU&amp;rsquo;s rear switch off and back on (or unplug it for a few seconds) before it will power up again — the protection has latched and needs a full power-cycle to reset. This is also the top suspect for a &lt;strong>second-hand or aged supply&lt;/strong>: capacitors and regulation drift with years and heat, so a unit that was fine at purchase can start tripping under a load it used to hold.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Reseat every power cable&lt;/strong> — the 24-pin, the CPU (EPS) connector, and every GPU power cable, including all pins on a &lt;strong>12VHPWR / 12V-2x6&lt;/strong> connector, which is notorious for partial seating and can drop a card under load.&lt;/li>
&lt;li>&lt;strong>Rule out undersizing.&lt;/strong> A new, power-hungry GPU on an older PSU is a textbook shutdown cause. Run your parts through the &lt;a href="https://techfuelhq.com/tools/psu-wattage-calculator/">PSU wattage calculator&lt;/a> — if you&amp;rsquo;re near or over the unit&amp;rsquo;s rating under load, that&amp;rsquo;s your answer. Leave headroom; transient spikes from modern GPUs briefly exceed their average draw.&lt;/li>
&lt;li>&lt;strong>Swap-test if needed.&lt;/strong> If temperatures are confirmed healthy and it still cuts out under load, a &lt;strong>known-good, adequately-rated PSU&lt;/strong> is the definitive test.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>On an RTX 40- or 50-series card, suspect the 16-pin connector specifically.&lt;/strong> The &lt;strong>12VHPWR / 12V-2x6&lt;/strong> plug runs a 575 W RTX 5090 at roughly 96% of its 600 W rating — about a 1.1x safety margin, versus 1.7x or more on the old 8-pin — so a plug that isn&amp;rsquo;t fully seated, or a pin whose contact has degraded, concentrates current and heats up fast. The early warning signs are exactly the ones on this page: crashes, instability, and hard shutdowns under load &lt;em>before&lt;/em> anything visibly melts. These failures are still being reported in 2026 even on native, first-party cables — UK outlet Club386 lost its own RTX 5090 and a 1,000 W supply to one in June 2026. If you have one of these cards and it cuts out under load: push the plug in until it clicks with no gap or exposed metal, use the native 12V-2x6 cable that came with an &lt;strong>ATX 3.1&lt;/strong> PSU rather than an adapter, keep the cable straight for at least ~35 mm out of the connector, and stop using any plug or socket that looks discolored or smells hot.&lt;/p>
&lt;p>Want to confirm the supply is genuinely &lt;em>failing&lt;/em> rather than just undersized? Our deep dive covers the tell-tale symptoms, why the paperclip test can give a false all-clear, and how to read the 12V rail under load: &lt;a href="https://techfuelhq.com/articles/psu-failure-symptoms-2026/">PSU Failure Symptoms: Is It Really the Power Supply?&lt;/a>&lt;/p>
&lt;h2 id="step-4-a-short-circuit-instant-off-especially-new-builds">Step 4: A short circuit (instant-off, especially new builds)&lt;/h2>
&lt;p>If the PC dies &lt;strong>seconds after you press power&lt;/strong> — sometimes before anything reaches the screen — and especially on a machine you just built or moved, suspect a &lt;strong>dead short&lt;/strong>. A loose case screw rolling around, a misplaced brass standoff touching the back of the motherboard, or a component grounding against the case makes the PSU&amp;rsquo;s protection cut power instantly to prevent damage.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Check the standoffs:&lt;/strong> there should be exactly one under each motherboard mounting hole and none anywhere else. A stray standoff under the board is the single most common new-build short.&lt;/li>
&lt;li>&lt;strong>Hunt for loose metal&lt;/strong> — spare screws behind the motherboard tray, a cable&amp;rsquo;s bare connector touching a fan header, anything metal resting on the board.&lt;/li>
&lt;li>&lt;strong>Breadboard test:&lt;/strong> if you can&amp;rsquo;t find it, pull the motherboard out of the case and run it on its box (a &amp;ldquo;breadboard&amp;rdquo; test) with just CPU, cooler, one stick of RAM, and the PSU. If it stays on outside the case, the case was shorting it.&lt;/li>
&lt;/ul>
&lt;h2 id="step-5-ram-and-unstable-memory-profiles">Step 5: RAM and unstable memory profiles&lt;/h2>
&lt;p>Faulty memory or an unstable &lt;strong>EXPO/XMP&lt;/strong> profile can cause hard shutdowns and crashes, and this is a prime suspect for the &lt;strong>&amp;ldquo;random, not overheating&amp;rdquo;&lt;/strong> pattern.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Test it:&lt;/strong> run the built-in &lt;strong>Windows Memory Diagnostic&lt;/strong> (Windows Key + R → &lt;code>mdsched.exe&lt;/code>), or &lt;strong>MemTest86&lt;/strong> from a USB stick for a thorough overnight pass.&lt;/li>
&lt;li>&lt;strong>Disable XMP/EXPO&lt;/strong> in BIOS and run the memory at its default &lt;strong>JEDEC&lt;/strong> speed. If the shutdowns stop, the kit or memory controller wasn&amp;rsquo;t holding the rated speed — a very common cause of instability that looks like a hardware fault.&lt;/li>
&lt;li>&lt;strong>Reseat and isolate:&lt;/strong> reseat both sticks, then test one stick at a time to find a bad module.&lt;/li>
&lt;/ul>
&lt;h2 id="step-6-wall-power-surges-and-settings">Step 6: Wall power, surges, and settings&lt;/h2>
&lt;p>If temps and the PSU check out and it still cuts at random — including at idle — look outside the case:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Try a different wall outlet, plugged in directly.&lt;/strong> A failing outlet, an overloaded circuit, or a dying UPS/surge protector can drop power to the PC. One quick test: bypass power strips and battery backups and go straight to the wall.&lt;/li>
&lt;li>&lt;strong>Check for a brown-out pattern&lt;/strong> — if shutdowns coincide with a big appliance (AC, microwave, space heater) kicking on, your circuit is sagging under load. A proper UPS with AVR fixes this; size it with our homelab UPS math.&lt;/li>
&lt;li>&lt;strong>Rule out &amp;ldquo;shutdown&amp;rdquo; that&amp;rsquo;s really sleep.&lt;/strong> If the machine powers &lt;em>down&lt;/em> on a schedule or after idle, check Windows power settings and disable &lt;strong>Fast Startup&lt;/strong> — a misbehaving sleep/hibernate can look like a random shutoff. (This only applies if the fans genuinely stop; a hard load-triggered cut is never a sleep setting.)&lt;/li>
&lt;/ul>
&lt;h2 id="step-7-when-its-actually-a-restart-or-a-freeze">Step 7: When it&amp;rsquo;s actually a restart or a freeze&lt;/h2>
&lt;p>Two quick off-ramps, because the fix is completely different:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>It reboots itself or shows a blue screen&lt;/strong> → that&amp;rsquo;s a restart, not a shutdown. Turn off Windows&amp;rsquo; auto-restart so you can read the stop code, and work the &lt;a href="https://techfuelhq.com/articles/pc-keeps-restarting-2026/">PC keeps restarting guide&lt;/a>.&lt;/li>
&lt;li>&lt;strong>The screen goes black but fans and lights stay on&lt;/strong> → that&amp;rsquo;s a freeze or a display dropout, not a power-off. Different checklist — start with our &lt;a href="https://techfuelhq.com/articles/computer-keeps-freezing-2026/">computer keeps freezing guide&lt;/a>.&lt;/li>
&lt;/ul>
&lt;h2 id="the-fix-order-in-one-list">The fix order, in one list&lt;/h2>
&lt;ol>
&lt;li>&lt;strong>Read the signature&lt;/strong> — stays-off + no-BSOD + instant = hardware protection trip (this guide). Reboots or BSOD = a &lt;a href="https://techfuelhq.com/articles/pc-keeps-restarting-2026/">restart&lt;/a>.&lt;/li>
&lt;li>&lt;strong>Read the pattern&lt;/strong> — under-load = heat/PSU; seconds after power-on = short; idle/&amp;ldquo;not overheating&amp;rdquo; = PSU/RAM/wall power.&lt;/li>
&lt;li>&lt;strong>Overheating&lt;/strong> — temps under load, dust, fans, thermal paste.&lt;/li>
&lt;li>&lt;strong>PSU&lt;/strong> — reseat cables, check wattage headroom, then swap-test if load-related.&lt;/li>
&lt;li>&lt;strong>Short circuit&lt;/strong> — standoffs, loose metal, breadboard test (new builds first).&lt;/li>
&lt;li>&lt;strong>RAM&lt;/strong> — mdsched/MemTest86, disable XMP/EXPO, one stick at a time.&lt;/li>
&lt;li>&lt;strong>Wall power&lt;/strong> — different outlet direct, check for brown-outs, rule out sleep/Fast Startup.&lt;/li>
&lt;/ol>
&lt;p>Work it in the order your pattern points to and you&amp;rsquo;ll almost always find a single physical cause — no parts-cannon required.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>The diagnostic uses Microsoft&amp;rsquo;s built-in Windows tools — the Windows Memory Diagnostic (&lt;code>mdsched.exe&lt;/code>), Event Viewer (&lt;code>eventvwr.msc&lt;/code>), and standard power settings — plus manufacturer-standard thermal and PSU-protection behavior, all self-verifiable on any Windows 10/11 PC. The ordered hardware causes (overheating, PSU overload/failure, short circuit, unstable memory, wall power) are cross-corroborated across community and vendor troubleshooting threads for sudden, no-blue-screen shutdowns, including the r/techsupport and r/pchelp random-shutdown threads where a failing or second-hand PSU is the recurring verdict and Kernel-Power Event 41 the recurring log entry.&lt;/li>
&lt;li>PSU protection behavior (OCP / OPP / OTP) follows the standard defined in Tom&amp;rsquo;s Hardware&amp;rsquo;s PSU 101 protections reference and Corsair&amp;rsquo;s PSU protections explainer. The RTX 40/50-series 12VHPWR / 12V-2x6 connector risk and 2026 incident context draw on TechPowerUp and Club386&amp;rsquo;s own RTX 5090 connector-failure reporting.&lt;/li>
&lt;li>Thermal limits and what &amp;ldquo;too hot&amp;rdquo; actually is: our &lt;a href="https://techfuelhq.com/articles/safe-cpu-temp-2026/">safe CPU temperature guide&lt;/a> (first-party). Confirming a genuinely failing supply: our &lt;a href="https://techfuelhq.com/articles/psu-failure-symptoms-2026/">PSU failure symptoms guide&lt;/a> (first-party). The restart-vs-shutdown distinction: our &lt;a href="https://techfuelhq.com/articles/pc-keeps-restarting-2026/">PC keeps restarting guide&lt;/a> (first-party).&lt;/li>
&lt;/ul>
&lt;p>&lt;em>Steps are for Windows 10 and 11 in 2026; menu names vary slightly by version. Found an error? Email &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a> with the article URL.&lt;/em>&lt;/p></description></item><item><title>External Hard Drive Not Showing Up? Find Where It Disappears — and Don't Format It (2026)</title><link>https://techfuelhq.com/articles/external-hard-drive-not-showing-up-2026/</link><pubDate>Sat, 11 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/external-hard-drive-not-showing-up-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-07-11 · ~8 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence what gets recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;p>Every &amp;ldquo;external hard drive not showing up&amp;rdquo; guide hands you the same twenty-step checklist and lets you flail through all of it. And near the end, most of them tell you to &lt;strong>format the drive&lt;/strong> — advice that, applied to a drive full of your only copy of something, destroys the very thing you were trying to save. This guide is built around the two questions the checklists skip: &lt;strong>where does the drive disappear&lt;/strong>, and &lt;strong>is the drive failing or just misconfigured?&lt;/strong> Answer those two, in that order, and the correct fix falls out — usually a free one, and often without any risk to your data.&lt;/p>
&lt;p>The reassuring part, echoed across the r/datarecovery and r/techsupport threads on this exact problem: an external drive that won&amp;rsquo;t show up is &lt;strong>usually not a dead drive.&lt;/strong> Far more often it&amp;rsquo;s an underpowered port, a tired cable, a missing drive letter, a failing enclosure board, or a partition Windows suddenly can&amp;rsquo;t read. Each of those has a different fix, and the drive tells you which one — by &lt;em>where&lt;/em> it stops appearing as you climb the detection ladder.&lt;/p>
&lt;h2 id="step-1-the-60-second-detection-ladder">Step 1: The 60-second detection ladder&lt;/h2>
&lt;p>Before you change anything, find out how far up the ladder your drive gets. Plug it in and check these three places, in order. Where it &lt;em>first&lt;/em> fails to appear is the single most useful fact you can gather.&lt;/p>
&lt;ol>
&lt;li>&lt;strong>File Explorer&lt;/strong> (This PC). If the drive shows here with a letter, it works — you&amp;rsquo;re done, or you&amp;rsquo;re chasing a &amp;ldquo;wrong letter / shows as the wrong thing&amp;rdquo; cosmetic issue.&lt;/li>
&lt;li>&lt;strong>Disk Management&lt;/strong> (right-click Start → Disk Management, or run &lt;code>diskmgmt.msc&lt;/code>). If the drive is &lt;em>here&lt;/em> but not in File Explorer, the hardware is fine and you have a disk-layer fix — Step 3. This is the best place to land.&lt;/li>
&lt;li>&lt;strong>Device Manager&lt;/strong> (right-click Start → Device Manager; look under &lt;strong>Disk drives&lt;/strong> and &lt;strong>Universal Serial Bus controllers&lt;/strong>). If the drive is &lt;em>here&lt;/em> but not in Disk Management, you&amp;rsquo;re at the driver-and-enclosure layer — Step 4.&lt;/li>
&lt;/ol>
&lt;p>And if it appears in &lt;strong>none&lt;/strong> of the three — often with no connection chime at all — you&amp;rsquo;re at the power-and-cable layer, or the drive is genuinely failing. That&amp;rsquo;s Steps 2 and 5.&lt;/p>
&lt;p>Almost every &amp;ldquo;my external drive won&amp;rsquo;t show up&amp;rdquo; post is really one of these rungs, and people burn hours on power-and-cable fixes for what is actually a two-click drive-letter problem in Disk Management. Find the rung first.&lt;/p>
&lt;h2 id="step-2-not-showing-anywhere--the-power-and-connection-pass">Step 2: Not showing anywhere — the power and connection pass&lt;/h2>
&lt;p>If the drive is invisible across all three tools, start at the physical layer. This takes two minutes and clears a surprising share of cases.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Change the port — and use the rear of a desktop.&lt;/strong> Front-panel USB and unpowered hubs deliver less stable power than the ports wired directly to the motherboard on the back of the machine. Plug the drive straight into a rear port.&lt;/li>
&lt;li>&lt;strong>Swap the cable.&lt;/strong> A worn or partly-seated USB cable is one of the most common hidden culprits, and it&amp;rsquo;s free to rule out. Micro-USB and USB-C connectors on portable drives wear loose over years of use.&lt;/li>
&lt;li>&lt;strong>The bus-power trap on 2.5-inch drives.&lt;/strong> A portable drive that spins up for a second and then stops is almost always starved for power. A USB 2.0 port supplies about 500 mA and USB 3.x about 900 mA, but a mechanical drive draws a surge as it spins up — if the port can&amp;rsquo;t deliver it, the controller resets and the motor never ramps. The fix: use the drive&amp;rsquo;s &lt;strong>Y-cable&lt;/strong> into two ports, plug into a &lt;strong>powered USB hub&lt;/strong> with its own AC adapter, or, for a desktop drive with a barrel-plug adapter, use the wall adapter rather than bus power.&lt;/li>
&lt;li>&lt;strong>Try a second computer.&lt;/strong> If the drive appears on another machine, your original PC&amp;rsquo;s ports, power, or drivers are the problem, not the drive. If it appears on &lt;em>no&lt;/em> machine, move to Step 5.&lt;/li>
&lt;/ul>
&lt;p>If a rear port, a fresh cable, or proper power brings the drive back into File Explorer, you&amp;rsquo;re finished. If it now appears but only in Disk Management or Device Manager, follow the matching step below.&lt;/p>
&lt;h2 id="step-3-shows-in-disk-management--the-disk-layer-and-two-landmines">Step 3: Shows in Disk Management — the disk layer (and two landmines)&lt;/h2>
&lt;p>This is the best rung to land on, because the drive is detected and talking. But it&amp;rsquo;s also where the standard advice gets dangerous, so read carefully. Open Disk Management and find the drive in the lower pane.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Healthy volume, no drive letter.&lt;/strong> Right-click the volume → &lt;strong>Change Drive Letter and Paths&lt;/strong> → &lt;strong>Add&lt;/strong> → pick a letter. It appears in File Explorer immediately. This is the happiest outcome and a genuinely common one.&lt;/li>
&lt;li>&lt;strong>&amp;ldquo;Offline.&amp;rdquo;&lt;/strong> Right-click the disk → &lt;strong>Online&lt;/strong>. Windows occasionally marks an external disk offline after a bad disconnect.&lt;/li>
&lt;li>&lt;strong>Landmine 1 — &amp;ldquo;RAW&amp;rdquo; or &amp;ldquo;you need to format the disk.&amp;rdquo;&lt;/strong> &lt;em>Stop.&lt;/em> RAW means Windows can no longer read the drive&amp;rsquo;s file system — not that your data is gone. Formatting lays a fresh, empty file system over your files and makes recovery much harder. If this drive held anything you care about, treat it as a recovery job: run reputable recovery software to pull your files to &lt;em>another&lt;/em> disk first, and only format afterward to reuse the drive.&lt;/li>
&lt;li>&lt;strong>Landmine 2 — &amp;ldquo;Not Initialized&amp;rdquo; / &amp;ldquo;Unallocated&amp;rdquo; on a drive that had data.&lt;/strong> Windows will cheerfully offer to &lt;strong>Initialize Disk&lt;/strong>. Do &lt;strong>not&lt;/strong> click it on a drive that held data. Initializing writes a new, blank partition table over the existing one — the exact structure recovery software needs. Click &lt;strong>Cancel&lt;/strong> and recover first. Initialize is only correct for a genuinely new, empty drive.&lt;/li>
&lt;/ul>
&lt;p>There&amp;rsquo;s a tell that separates a software problem from a hardware one here: if you try to initialize and Windows throws &lt;strong>&amp;ldquo;The request failed due to a fatal device hardware error&amp;rdquo;&lt;/strong> or &lt;strong>&amp;ldquo;Incorrect function,&amp;rdquo;&lt;/strong> that&amp;rsquo;s not a setting you can fix — the drive or its enclosure is physically failing. Don&amp;rsquo;t keep retrying. Jump to Step 5.&lt;/p>
&lt;h2 id="step-4-shows-only-in-device-manager--driver-and-enclosure">Step 4: Shows only in Device Manager — driver and enclosure&lt;/h2>
&lt;p>If Device Manager lists the drive but Disk Management doesn&amp;rsquo;t, the fault is in the connection layer — the enclosure&amp;rsquo;s USB-to-SATA bridge board or a driver, not the storage platters.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Reinstall the driver clean.&lt;/strong> In Device Manager, right-click the drive → &lt;strong>Scan for hardware changes&lt;/strong>. If that fails, uninstall the device, then unplug and replug so Windows reinstalls the driver fresh. This clears a corrupt or half-loaded USB driver.&lt;/li>
&lt;li>&lt;strong>Check for a warning icon.&lt;/strong> A yellow mark, &amp;ldquo;This device cannot start (Code 10),&amp;rdquo; or a device that appears and vanishes points at the enclosure&amp;rsquo;s bridge board.&lt;/li>
&lt;li>&lt;strong>The enclosure-versus-drive test — the wedge for external drives specifically.&lt;/strong> A pre-built external drive is just a bare hard drive inside a plastic enclosure with a little USB bridge board. That board fails far more often than the drive itself. If the drive shows a heartbeat in Device Manager but never a usable disk, open the enclosure (or &amp;ldquo;shuck&amp;rdquo; it) and connect the bare drive to a &lt;strong>USB-to-SATA adapter&lt;/strong> or an internal SATA port. If the drive comes to life that way, the enclosure was the whole problem, and a &lt;a href="https://www.amazon.com/s?k=usb&amp;#43;to&amp;#43;sata&amp;#43;adapter&amp;amp;tag=techfuelhq-20" rel="nofollow sponsored noopener">USB-to-SATA adapter&lt;/a> costs a few dollars against a drive you&amp;rsquo;d otherwise have written off.&lt;/li>
&lt;/ul>
&lt;p>If this is a small USB flash drive or a non-storage gadget rather than a hard drive, the driver-and-descriptor angle is a slightly different animal — the &lt;a href="https://techfuelhq.com/articles/usb-device-not-recognized-2026/">USB device not recognized&lt;/a> triage covers that error path in full.&lt;/p>
&lt;h2 id="step-5-nothing-noise-or-a-fatal-error--is-the-drive-dead">Step 5: Nothing, noise, or a fatal error — is the drive dead?&lt;/h2>
&lt;p>If you&amp;rsquo;ve changed ports, swapped cables, given it proper power, and tried a second machine, and the drive is still invisible everywhere — or it makes noise — it&amp;rsquo;s time to decide between &amp;ldquo;failing&amp;rdquo; and &amp;ldquo;already failed,&amp;rdquo; and to stop doing anything that risks the data.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Repeated spin-up-and-stop, buzzing, or no chime at all&lt;/strong> after a proper power pass points at a dead enclosure board or a seized drive. Try the bare-drive test from Step 4 once; if it changes nothing, stop.&lt;/li>
&lt;li>&lt;strong>Clicking or beeping&lt;/strong> is a mechanical distress signal, not a detection quirk, and every power-on risks it further. A rhythmic &lt;em>click&lt;/em> is usually a head problem — see &lt;a href="https://techfuelhq.com/articles/hard-drive-clicking-2026/">hard drive clicking&lt;/a>. A repeated &lt;em>beep&lt;/em> with the drive not spinning is either a power problem or a seized motor, and it has its own fork — see &lt;a href="https://techfuelhq.com/articles/hard-drive-beeping-2026/">hard drive beeping&lt;/a> before you plug it in again.&lt;/li>
&lt;li>&lt;strong>A rising &amp;ldquo;Pending Sector&amp;rdquo; or &amp;ldquo;Reallocated Sector&amp;rdquo; count&lt;/strong> (visible in CrystalDiskInfo when the drive is readable enough to check) means the drive is actively deteriorating. Get what you can and retire it.&lt;/li>
&lt;li>&lt;strong>&amp;ldquo;Fatal device hardware error&amp;rdquo; on initialize&lt;/strong> — as in Step 3 — is a hardware verdict. It won&amp;rsquo;t clear with a setting.&lt;/li>
&lt;/ul>
&lt;p>For irreplaceable data on a drive that&amp;rsquo;s mechanically sick, the right move is a professional recovery service, not a fourth software attempt — DIY retries on a dying drive are the single most common way a recoverable problem becomes an unrecoverable one. If the data is expendable and the drive is simply worn out, replace it; a modern &lt;a href="https://www.amazon.com/s?k=external&amp;#43;hard&amp;#43;drive&amp;amp;tag=techfuelhq-20" rel="nofollow sponsored noopener">external hard drive&lt;/a> is cheap insurance, and this time, keep a second copy.&lt;/p>
&lt;p>&lt;em>(If the drive that won&amp;rsquo;t show up is an internal SSD rather than an external one, the detection ladder runs through BIOS instead of USB — see &lt;a href="https://techfuelhq.com/articles/ssd-not-showing-up-2026/">SSD not showing up&lt;/a> for that layered triage.)&lt;/em>&lt;/p>
&lt;h2 id="the-bottom-line">The bottom line&lt;/h2>
&lt;p>An external drive that won&amp;rsquo;t show up is rarely a dead drive, and you don&amp;rsquo;t need the giant checklist — you need to find the layer it disappears at and answer one safety question before you touch a format button. If it&amp;rsquo;s absent from &lt;strong>all three&lt;/strong> tools, work the power-and-cable pass: rear port, fresh cable, and real power for a hungry 2.5-inch drive. If it&amp;rsquo;s in &lt;strong>Disk Management&lt;/strong>, it&amp;rsquo;s usually two clicks — assign a letter or bring it online — with the hard rule that you never format or initialize a drive that still holds data. If it&amp;rsquo;s only in &lt;strong>Device Manager&lt;/strong>, suspect the enclosure board and test the bare drive. And if it&amp;rsquo;s invisible everywhere or making noise, only then is the drive itself the answer — and protecting the data comes before everything else. Find the rung, answer the safety question, and most of the time the drive was never the problem at all.&lt;/p></description></item><item><title>Games Keep Crashing on PC? Sort the Crash by What It Looks Like First (2026)</title><link>https://techfuelhq.com/articles/games-keep-crashing-pc-2026/</link><pubDate>Sat, 11 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/games-keep-crashing-pc-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-07-11 · ~9 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence what gets recommended - see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;p>Search &amp;ldquo;games keep crashing pc&amp;rdquo; and you get the same twenty-item checklist over and over: update drivers, verify files, disable XMP, check temps, run SFC. It&amp;rsquo;s not wrong - but handing you all twenty at once, in no order, is why people &amp;ldquo;try everything&amp;rdquo; and still crash. The list ignores the one thing that actually narrows it down: &lt;strong>what the crash looks like&lt;/strong>.&lt;/p>
&lt;p>A game that quietly closes to the desktop, a blue screen with an error code, and a whole PC that hard-locks or reboots mid-game are three &lt;em>different failures&lt;/em> with three &lt;em>different&lt;/em> culprits. Sort your crash into the right one first and you can skip three-quarters of that checklist. Here&amp;rsquo;s the fork, then how to read the actual crash instead of guessing at it.&lt;/p>
&lt;h2 id="step-1-what-does-the-crash-actually-look-like">Step 1: what does the crash actually look like?&lt;/h2>
&lt;p>Before you change one setting, put your crash in a row. This is the fork nobody leads with, and it&amp;rsquo;s the whole game:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">What happens&lt;/th>
&lt;th scope="col">What it almost always means&lt;/th>
&lt;th scope="col">Where to aim&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>One game&lt;/strong> closes to desktop, no blue screen, PC stays fine&lt;/td>
&lt;td>Game files, GPU driver, or an overlay&lt;/td>
&lt;td>Game-level fixes below&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Every game&lt;/strong> crashes to desktop after a few minutes&lt;/td>
&lt;td>Driver, memory/XMP, or heat&lt;/td>
&lt;td>System-level fixes below&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Blue screen (BSOD)&lt;/strong> with a stop code&lt;/td>
&lt;td>Driver or hardware - read the code&lt;/td>
&lt;td>Read the crash, then system fixes&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Whole PC &lt;strong>hard-locks&lt;/strong> (frozen, must hold power button)&lt;/td>
&lt;td>Heat, RAM, or power delivery&lt;/td>
&lt;td>&lt;a href="https://techfuelhq.com/articles/computer-keeps-freezing-2026/">Computer keeps freezing&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Whole PC &lt;strong>reboots&lt;/strong> instantly, no warning&lt;/td>
&lt;td>Power supply or thermal shutdown&lt;/td>
&lt;td>&lt;a href="https://techfuelhq.com/articles/pc-keeps-restarting-2026/">PC keeps restarting&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Screen goes &lt;strong>black, then game recovers&lt;/strong> or drops you out&lt;/td>
&lt;td>GPU driver timeout (TDR)&lt;/td>
&lt;td>&lt;a href="https://techfuelhq.com/articles/gpu-driver-crash-fix-2026/">GPU driver crash fix&lt;/a>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The two most useful splits inside that table: &lt;strong>one game versus every game&lt;/strong>, and &lt;strong>crash-to-desktop versus the whole machine going down&lt;/strong>. If it&amp;rsquo;s one game closing to desktop, your hardware is almost certainly fine and you&amp;rsquo;re wasting time in the BIOS. If it&amp;rsquo;s every game plus blue screens or a dead machine, the problem is system-wide - memory, heat, or power - and no amount of reinstalling one game will fix it.&lt;/p>
&lt;h2 id="step-2-read-the-crash---dont-guess-at-it">Step 2: read the crash - don&amp;rsquo;t guess at it&lt;/h2>
&lt;p>Windows writes down every crash. Almost nobody looks, which is how the twenty-item checklist survives. Two free, built-in tools turn a guess into a lead.&lt;/p>
&lt;p>&lt;strong>Reliability Monitor&lt;/strong> is the friendly one. Press Start, type &lt;strong>Reliability History&lt;/strong>, and open it. You get a calendar with a red X on every crash. Click the day, and each failure shows a plain-language line plus a &lt;strong>View technical details&lt;/strong> link. It&amp;rsquo;s the fastest way to see whether your crashes cluster right after a Windows update, a driver install, or a new program - which often &lt;em>is&lt;/em> the answer.&lt;/p>
&lt;p>&lt;strong>Event Viewer&lt;/strong> is the precise one. Press Start, type &lt;strong>Event Viewer&lt;/strong>, then open &lt;strong>Windows Logs then Application&lt;/strong>, and find the red &lt;strong>Application Error&lt;/strong> entry (Event ID 1000) stamped at your crash time. Two fields matter:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Faulting Application Name&lt;/strong> - which &lt;code>.exe&lt;/code> actually died. If it&amp;rsquo;s the game, the crash is in the game or its renderer. If it&amp;rsquo;s an &lt;em>overlay&lt;/em> or helper app, you just found your culprit.&lt;/li>
&lt;li>&lt;strong>Faulting Module Name&lt;/strong> - the specific file that broke. A graphics DLL like &lt;code>nvwgf2umx.dll&lt;/code> (NVIDIA), &lt;code>atidxx64.dll&lt;/code> (AMD), or &lt;code>d3d12.dll&lt;/code> points at the GPU driver or DirectX. A third-party module - RGB software, a capture tool, antivirus - points at &lt;em>that&lt;/em> program.&lt;/li>
&lt;/ul>
&lt;p>One more clue: the &lt;strong>Exception Code&lt;/strong>. &lt;code>0xc0000005&lt;/code> is an access violation, and when games throw it repeatedly it usually means &lt;strong>bad memory or an unstable overclock&lt;/strong> - which tells you to go straight to the XMP test below. (Event ID 1001 next to 1000 is just Windows&amp;rsquo; crash-reporting entry for the same event.)&lt;/p>
&lt;p>If the game keeps its own crash logs - many do, in the game&amp;rsquo;s folder or &lt;code>Documents&lt;/code> - read those too; they often name the exact subsystem that failed.&lt;/p>
&lt;h2 id="the-game-level-fixes-one-game-or-crash-to-desktop">The game-level fixes (one game, or crash-to-desktop)&lt;/h2>
&lt;p>If a single game closes to desktop, or every game crashes &lt;em>to desktop&lt;/em> without a blue screen, work this list. These are free and none of them touch your hardware:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Update the GPU driver - properly.&lt;/strong> Get it from NVIDIA, AMD, or Intel directly, not Windows Update (which often ships an older build). If crashes persist, do a &lt;strong>clean install&lt;/strong>: wipe the current driver with &lt;a href="https://www.wagnardsoft.com/" rel="noopener">Display Driver Uninstaller (DDU)&lt;/a> in Safe Mode, then install the latest fresh. Corrupt or half-updated drivers are the single most common cause of crash-to-desktop.&lt;/li>
&lt;li>&lt;strong>Verify the game&amp;rsquo;s files.&lt;/strong> On Steam: right-click the game then Properties then Installed Files then &lt;strong>Verify integrity of game files&lt;/strong> (other launchers have a &amp;ldquo;repair&amp;rdquo; button). This re-downloads anything corrupt - the top cause of &lt;em>one&lt;/em> game crashing while the rest are fine.&lt;/li>
&lt;li>&lt;strong>Kill the overlays.&lt;/strong> Discord, the NVIDIA App/GeForce Experience, AMD Adrenalin, Steam overlay, Xbox Game Bar, and &lt;strong>MSI Afterburner / RivaTuner (RTSS)&lt;/strong> all inject code into the game&amp;rsquo;s render pipeline. Under DirectX 12 especially, a single overlay can corrupt the command queue the game sends to the GPU and crash it - even if that overlay works fine in other games. Turn them &lt;strong>all&lt;/strong> off, confirm the crash is gone, then re-enable one at a time to find the offender.&lt;/li>
&lt;li>&lt;strong>Delete the shader cache and update the game.&lt;/strong> A bad patch or a stale shader cache causes crashes that a driver update alone won&amp;rsquo;t fix. Clear the cache (NVIDIA Control Panel or the game&amp;rsquo;s own option) and make sure the game is current.&lt;/li>
&lt;li>&lt;strong>Check anti-cheat and compatibility.&lt;/strong> Some anti-cheat systems clash with overlays, virtual machines, or Windows&amp;rsquo; Core Isolation. For older games, try running as administrator or in a compatibility mode.&lt;/li>
&lt;/ul>
&lt;h2 id="the-system-level-fixes-every-game-bsod-or-the-whole-pc-goes-down">The system-level fixes (every game, BSOD, or the whole PC goes down)&lt;/h2>
&lt;p>If &lt;em>every&lt;/em> game crashes, you get blue screens, or the machine hard-locks or reboots, the problem is your hardware or its settings. Run these in order - cheapest and highest-hit first:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Disable XMP / EXPO and test.&lt;/strong> This is the highest-hit fix on the system side. Your RAM&amp;rsquo;s XMP (Intel) or EXPO (AMD) profile is a factory overclock; it can pass everyday use and fail under a game&amp;rsquo;s memory load. In the BIOS, set memory to default/Auto (JEDEC) speed and test. Crashes stop? Your kit couldn&amp;rsquo;t hold that overclock - re-enable XMP one speed tier lower, or nudge DRAM voltage up slightly.&lt;/li>
&lt;li>&lt;strong>Test the RAM itself.&lt;/strong> If it still crashes at default speed, run &lt;strong>MemTest86&lt;/strong> from a USB stick for several passes (or Windows Memory Diagnostic). Any error means a bad module - reseat the sticks, try one at a time, and RMA if a stick fails.&lt;/li>
&lt;li>&lt;strong>Rule out heat.&lt;/strong> A CPU or GPU hitting its thermal limit shuts down to protect itself, which reads as a mid-game crash or hard-lock. Watch temperatures with &lt;strong>HWiNFO&lt;/strong> or &lt;strong>HWMonitor&lt;/strong> during play; if the CPU or GPU is pinned at 90C+ when it dies, that&amp;rsquo;s your answer - see &lt;a href="https://techfuelhq.com/articles/cpu-overheating-2026/">CPU overheating&lt;/a> and &lt;a href="https://techfuelhq.com/articles/gpu-overheating-2026/">GPU overheating&lt;/a>.&lt;/li>
&lt;li>&lt;strong>Suspect the power supply.&lt;/strong> An aging or undersized PSU sags under the millisecond power spikes a modern GPU pulls when a game ramps up, dropping the whole system - a hard reboot with no blue screen is the classic signature. Our &lt;a href="https://techfuelhq.com/articles/psu-failure-symptoms-2026/">PSU failure symptoms&lt;/a> guide covers how to confirm it and why the &amp;ldquo;paperclip test&amp;rdquo; won&amp;rsquo;t.&lt;/li>
&lt;li>&lt;strong>Remove every overclock and undervolt.&lt;/strong> GPU core/memory overclocks and CPU undervolts that seemed stable in a benchmark routinely crash under real game loads. Set everything back to stock and test before you blame a part - and if the blue screen you keep getting is &lt;a href="https://techfuelhq.com/articles/clock-watchdog-timeout-2026/">CLOCK_WATCHDOG_TIMEOUT&lt;/a>, that revert is not just a diagnostic step, it is the fix.&lt;/li>
&lt;/ol>
&lt;h2 id="the-quick-win-order">The quick-win order&lt;/h2>
&lt;p>If you&amp;rsquo;d rather have a sequence than a diagnosis, this catches most crashes fast:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Read the crash&lt;/strong> in Reliability Monitor / Event Viewer - note the faulting module and whether it&amp;rsquo;s one game or all.&lt;/li>
&lt;li>&lt;strong>One game only?&lt;/strong> Verify its files, update the GPU driver, disable overlays. Stop here - it&amp;rsquo;s not your hardware.&lt;/li>
&lt;li>&lt;strong>Every game or BSODs?&lt;/strong> Disable XMP/EXPO and test. This alone fixes a large share of &amp;ldquo;random&amp;rdquo; crashes.&lt;/li>
&lt;li>&lt;strong>Still crashing?&lt;/strong> Watch temps and test RAM with MemTest86.&lt;/li>
&lt;li>&lt;strong>Hard reboots with no blue screen?&lt;/strong> Look hard at the &lt;a href="https://techfuelhq.com/articles/psu-failure-symptoms-2026/">power supply&lt;/a>.&lt;/li>
&lt;/ol>
&lt;p>Most crashes end in the first three steps. The people who &amp;ldquo;tried everything&amp;rdquo; almost always skipped step 1 - they never read the crash, so they were changing settings blind. Sixty seconds in Event Viewer usually tells you which half of this guide you actually needed.&lt;/p>
&lt;p>If your game isn&amp;rsquo;t crashing but &lt;em>stuttering&lt;/em> - running but hitching, with uneven frame times rather than a clean shut-down - that&amp;rsquo;s a different problem; start with &lt;a href="https://techfuelhq.com/articles/pc-stuttering-in-games-2026/">why your PC stutters in games&lt;/a>.&lt;/p></description></item><item><title>Hard Drive Beeping and Not Spinning? Power Problem vs Dead Motor (2026)</title><link>https://techfuelhq.com/articles/hard-drive-beeping-2026/</link><pubDate>Sat, 11 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/hard-drive-beeping-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-07-11 · ~8 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence what gets recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;p>Search &amp;ldquo;hard drive beeping&amp;rdquo; and almost every result says the same thing: your drive is dead, unplug it, and call a recovery lab right now. Look at &lt;em>who&amp;rsquo;s&lt;/em> saying it — the pages ranking for this are overwhelmingly data-recovery companies, and &amp;ldquo;every beep is fatal, send it to us&amp;rdquo; is their business model, not the whole truth. Here&amp;rsquo;s what they bury: &lt;strong>a beep only tells you one thing — the platters aren&amp;rsquo;t spinning up — and there are two very different reasons for that.&lt;/strong> On an external drive it&amp;rsquo;s frequently just &lt;strong>starved for power&lt;/strong>, which is often a free fix. On an internal drive it&amp;rsquo;s usually a &lt;strong>seized motor or stuck heads&lt;/strong>, which genuinely is mechanical failure. Same sound, opposite responses. This guide gives you the fork that tells them apart, then exactly what to do for each.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>The one rule first:&lt;/strong> if this drive holds anything you can&amp;rsquo;t lose and it &lt;em>does&lt;/em> still mount even briefly, &lt;strong>start copying the important files now, before you finish reading.&lt;/strong> A beeping drive&amp;rsquo;s window can be short, and a backup helps you whether the beep turns out to be a cheap power fix or a dead motor.&lt;/p>&lt;/blockquote>
&lt;h2 id="what-a-beep-actually-means">What a beep actually means&lt;/h2>
&lt;p>A hard drive is a sealed stack of platters spun by a spindle motor to several thousand RPM, with read/write heads floating microns above the surface. A healthy modern drive is nearly silent. A &lt;strong>beep&lt;/strong> — a repeated electronic-sounding tone, sometimes a chirp or squeak — is the sound of the &lt;strong>spindle motor trying to spin the platters and failing.&lt;/strong> The motor draws power, strains against whatever is stopping it, and you hear that struggle. Data-recovery labs and Seagate&amp;rsquo;s own support notes agree on the two root causes:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>It&amp;rsquo;s not getting enough power to spin.&lt;/strong> Common on external and USB-powered drives — the motor needs a certain current to reach speed, and if the port, cable, or adapter can&amp;rsquo;t deliver it, the drive browns out and beeps. &lt;strong>This is the fixable one.&lt;/strong>&lt;/li>
&lt;li>&lt;strong>The mechanism is physically stuck.&lt;/strong> The heads have bonded to the platter surface (a state called &lt;strong>stiction&lt;/strong>, often after a drop or a power loss mid-write), or the spindle bearing has &lt;strong>seized&lt;/strong>. The motor can&amp;rsquo;t overcome it, so it strains and beeps. &lt;strong>This one needs a lab.&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>Two quick sanity checks before you go further. &lt;strong>Is it actually the drive, or your motherboard?&lt;/strong> A series of beeps &lt;em>at startup from the PC speaker&lt;/em> is a POST error code (RAM, GPU, etc.), not the drive — that&amp;rsquo;s a different problem entirely. And &lt;strong>SSDs don&amp;rsquo;t beep.&lt;/strong> They have no motor and no moving parts, so if a drive you think is an SSD is &amp;ldquo;beeping,&amp;rdquo; the sound is coming from something else in the case.&lt;/p>
&lt;h2 id="the-20-second-triage-which-beep-do-you-have">The 20-second triage: which beep do you have?&lt;/h2>
&lt;p>Answer three questions and you&amp;rsquo;ll know which section to read.&lt;/p>
&lt;ol>
&lt;li>&lt;strong>External/USB or internal?&lt;/strong> Is this a portable or desktop external drive on a USB cable (or its own wall adapter), or a bare drive inside your PC on SATA and power cables? &lt;em>External is far more likely to be a power problem.&lt;/em>&lt;/li>
&lt;li>&lt;strong>Does it try to spin at all?&lt;/strong> Put a finger on it (gently): do you feel it attempt to spin up and then stall, or is it dead-still and silent apart from the beep? &lt;em>A motor that tries and browns out points to power; a completely dead, resistant feel points to a seized bearing or stuck heads.&lt;/em>&lt;/li>
&lt;li>&lt;strong>What happened right before?&lt;/strong> Did you drop it, knock it, or lose power mid-copy — or did it just start beeping on its own during normal use? &lt;em>A drop or power-loss-mid-write strongly suggests stuck heads (mechanical); &amp;ldquo;it just started&amp;rdquo; leaves both branches open.&lt;/em>&lt;/li>
&lt;/ol>
&lt;p>Match your answers:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>External/USB drive&lt;/strong> → try the &lt;strong>power fixes&lt;/strong> in Step 1 first. They&amp;rsquo;re free and safe.&lt;/li>
&lt;li>&lt;strong>Internal drive, or external that still beeps on good power&lt;/strong> → treat it as a &lt;strong>mechanical failure&lt;/strong> (Steps 2–4).&lt;/li>
&lt;/ul>
&lt;h2 id="step-1-the-power-fork--the-free-fix-externalusb-drives">Step 1: The power fork — the free fix (external/USB drives)&lt;/h2>
&lt;p>This is the outcome the recovery-lab pages don&amp;rsquo;t want to lead with, and it&amp;rsquo;s real. On r/datarecovery, one of the most useful replies on beeping-drive threads comes from a tech who&amp;rsquo;s seen dozens: &lt;em>&amp;ldquo;Quite a few of them just had bad or overloaded power bricks. Others had failed USB converter boards… transplanting them into generic enclosures fixed others.&amp;rdquo;&lt;/em> An external drive that beeps is very often a drive that simply can&amp;rsquo;t pull enough current to spin. Try these in order, cheapest first — none of them risk the drive:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Plug directly into a rear motherboard USB port.&lt;/strong> Not a front-panel port, not an unpowered hub, not a monitor or keyboard passthrough. Rear ports wired straight to the board deliver the cleanest, strongest power.&lt;/li>
&lt;li>&lt;strong>Swap the USB cable.&lt;/strong> A thin, long, or damaged cable drops voltage before it reaches the motor. Use the shortest good-quality cable you have.&lt;/li>
&lt;li>&lt;strong>Combine two ports with a Y-cable.&lt;/strong> Many 2.5-inch portable drives ship with a &lt;strong>USB Y-cable&lt;/strong> — a split cable with &lt;em>two&lt;/em> USB-A ends. A single port is often limited to 500mA; plugging both ends of a Y-cable into two ports pools them for roughly 1000mA, which is frequently the difference between a beep and a clean spin-up. A &lt;strong>powered USB hub&lt;/strong> does the same job.&lt;/li>
&lt;li>&lt;strong>Use the right adapter for a 3.5-inch drive.&lt;/strong> Desktop externals have their own AC power brick — make sure it&amp;rsquo;s the correct one, plugged into the wall (not a browning-out power strip), and try a known-good replacement brick if you have one.&lt;/li>
&lt;li>&lt;strong>Do the enclosure test.&lt;/strong> If good power still won&amp;rsquo;t wake it, the failure may be the &lt;strong>USB-to-SATA bridge board inside the enclosure&lt;/strong>, not the drive. Carefully open the external case, remove the bare drive, and connect it &lt;strong>directly to a PC&amp;rsquo;s SATA and power connectors&lt;/strong> (or a known-good USB-to-SATA adapter). If the bare drive spins up and shows up, the enclosure electronics were the whole problem and your data is fine.&lt;/li>
&lt;/ul>
&lt;p>If more power — or bypassing the enclosure — gets the drive spinning and mounting, &lt;strong>you&amp;rsquo;re done&lt;/strong>; back up your files immediately and consider retiring that drive or enclosure. If it &lt;em>still&lt;/em> beeps and won&amp;rsquo;t spin on every port, cable, adapter, and a direct SATA connection, the drive itself is mechanical, and the next steps apply.&lt;/p>
&lt;h2 id="step-2-the-mechanical-fork--a-seized-motor-or-stuck-heads">Step 2: The mechanical fork — a seized motor or stuck heads&lt;/h2>
&lt;p>When power is ruled out, a beeping drive that won&amp;rsquo;t spin is telling you the mechanism is stuck. Two failures produce this:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Head stiction.&lt;/strong> The read/write heads are supposed to park off the platters when powered down, but if the drive lost power mid-operation or took a knock, a head can settle onto and bond to the platter surface. On the next power-up the motor tries to spin, the stuck head acts as a brake, and the motor strains and beeps instead of turning.&lt;/li>
&lt;li>&lt;strong>A seized spindle bearing.&lt;/strong> The bearing the platters spin on can jam or wear out of alignment, so the motor simply can&amp;rsquo;t rotate the stack. Same result: strain, beep, no spin.&lt;/li>
&lt;/ul>
&lt;p>Both are &lt;strong>physical&lt;/strong> problems inside a sealed assembly. That single fact governs everything from here: there is no cable, no driver, and no software that un-sticks a head or frees a seized bearing. Attempts to &amp;ldquo;force&amp;rdquo; it only risk the platters, where your data actually lives.&lt;/p>
&lt;h2 id="step-3-if-its-mechanical--do-this-right-now-and-what-not-to-do">Step 3: If it&amp;rsquo;s mechanical — do this right now (and what NOT to do)&lt;/h2>
&lt;p>The order of operations matters more than any single trick.&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Stop power-cycling it.&lt;/strong> If it beeps and won&amp;rsquo;t spin on known-good power, every additional attempt risks dragging a stuck head across the platters. Resist the urge to keep trying &amp;ldquo;just once more.&amp;rdquo;&lt;/li>
&lt;li>&lt;strong>Decide how much the data is worth — now, before doing anything else.&lt;/strong> If the files are backed up or replaceable, you&amp;rsquo;re done: recycle the drive and replace it. If they&amp;rsquo;re irreplaceable, don&amp;rsquo;t experiment; the more the drive runs, the worse a recovery gets.&lt;/li>
&lt;li>&lt;strong>If the data is critical, go to a professional recovery lab.&lt;/strong> Opening a drive to free stuck heads or replace a motor requires a Class 100 / ISO 5 cleanroom — a speck of household dust is larger than the head-to-platter gap and will wreck the surface.&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>What NOT to do&lt;/strong> — every one of these is common online advice, and every one makes a genuinely stuck drive worse:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Don&amp;rsquo;t put it in the freezer.&lt;/strong> On any modern drive this condenses moisture onto the platters and causes a head crash on spin-up. It can turn a routine lab repair into an unrecoverable one.&lt;/li>
&lt;li>&lt;strong>Don&amp;rsquo;t keep power-cycling &amp;ldquo;to see if it catches.&amp;rdquo;&lt;/strong> Each attempt is another chance to score the platters.&lt;/li>
&lt;li>&lt;strong>Don&amp;rsquo;t run repair software or CHKDSK.&lt;/strong> Those fix logical/file-system errors; they can&amp;rsquo;t move a seized motor, and forcing reads hammers stuck heads against the surface.&lt;/li>
&lt;li>&lt;strong>Don&amp;rsquo;t open the drive yourself.&lt;/strong> Platters exposed to room air and dust are usually finished. Leave the case sealed for the cleanroom.&lt;/li>
&lt;/ul>
&lt;h2 id="step-4-recovery-or-replace">Step 4: Recovery, or replace?&lt;/h2>
&lt;p>Once you&amp;rsquo;ve decided the data&amp;rsquo;s fate, the choice is simple:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Irreplaceable data, no backup, drive is genuinely stuck&lt;/strong> → a professional &lt;a href="https://www.ontrack.com/en-us" rel="noopener">data recovery service&lt;/a> is the only path. It isn&amp;rsquo;t cheap — motor or head work typically runs several hundred to over a thousand dollars — so it&amp;rsquo;s worth it only for files you truly can&amp;rsquo;t lose. One tip from people who&amp;rsquo;ve been through it: the big, heavily-marketed recovery brands often charge two-to-four times what smaller, equally-capable cleanroom labs do. Get a couple of quotes before you commit; the flashiest name isn&amp;rsquo;t automatically the best value.&lt;/li>
&lt;li>&lt;strong>Data was backed up, or you can live without it&lt;/strong> → spend nothing on recovery. Recycle the drive responsibly and replace it.&lt;/li>
&lt;/ul>
&lt;p>For the replacement, a beeping drive is a good argument for leaving spinning disks behind wherever you can. A &lt;a href="https://www.amazon.com/s?k=internal&amp;#43;ssd&amp;amp;tag=techfuelhq-20" rel="nofollow sponsored noopener">solid-state drive&lt;/a> has no motor and no heads, so it can&amp;rsquo;t seize, stick, or beep — and our &lt;a href="https://techfuelhq.com/articles/best-nvme-ssd-homelab-2026/">best NVMe SSDs for a homelab&lt;/a> covers reliable picks. Keep spinning drives only where their capacity-per-dollar still wins — bulk and cold storage — and never as the single copy of anything you care about.&lt;/p>
&lt;h2 id="the-bottom-line">The bottom line&lt;/h2>
&lt;p>A beeping hard drive means one specific thing: the platters aren&amp;rsquo;t spinning up. Before you accept the &amp;ldquo;it&amp;rsquo;s dead, send it in&amp;rdquo; verdict the search results push, ask the two questions that actually matter — &lt;strong>is it external or internal, and does it spin on good power?&lt;/strong> An external drive that beeps is very often just starved for power: rear port, better cable, a Y-cable or the right adapter, or pulling the bare drive out of a dead enclosure, and it comes right back to life. Only an internal drive — or an external that still won&amp;rsquo;t spin on known-good power — is the genuine mechanical failure, and there the move isn&amp;rsquo;t the freezer or repair software; it&amp;rsquo;s to stop power-cycling it and decide whether the data justifies a cleanroom lab. If the sound is a rhythmic &lt;em>click&lt;/em> rather than a beep, that&amp;rsquo;s a related but distinct diagnosis — our &lt;a href="https://techfuelhq.com/articles/hard-drive-clicking-2026/">hard drive clicking triage&lt;/a> covers it. And if the drive is silent but simply &lt;a href="https://techfuelhq.com/articles/external-hard-drive-not-showing-up-2026/">not showing up&lt;/a>, that&amp;rsquo;s a more hopeful problem with its own ladder. Match the fix to the cause, and most of the time your data — and sometimes the drive — wasn&amp;rsquo;t as doomed as the results made it sound.&lt;/p></description></item><item><title>Hard Drive Clicking? How to Tell Normal Noise From the Click of Death (2026)</title><link>https://techfuelhq.com/articles/hard-drive-clicking-2026/</link><pubDate>Sat, 11 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/hard-drive-clicking-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-07-11 · ~8 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence what gets recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;p>Search &amp;ldquo;hard drive clicking&amp;rdquo; and every result tells you the same thing: it&amp;rsquo;s the &amp;ldquo;click of death,&amp;rdquo; your drive is dying, stop everything and call a recovery lab. That advice isn&amp;rsquo;t wrong — but notice who&amp;rsquo;s giving it. The pages ranking for this are mostly data-recovery companies, and they have a commercial reason to make every click sound fatal. The truth is more useful: &lt;strong>there are three different clicks, and they call for opposite responses.&lt;/strong> One is harmless. One is a free fix. Only the third is the drive actually dying — and if that&amp;rsquo;s the one you have, the recovery-lab pages still bury the single thing you should do &lt;em>right now&lt;/em>.&lt;/p>
&lt;p>This guide gives you the 30-second triage to tell which click you have, then exactly what to do for each. The good news, echoed by the top-voted reply on nearly every r/computers and r/techsupport thread about this: &lt;em>&amp;ldquo;People always immediately say it&amp;rsquo;s dying whenever a hard drive makes a sound, but sometimes it&amp;rsquo;s actually normal.&amp;rdquo;&lt;/em>&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>First, the one rule that applies to all three:&lt;/strong> if this drive holds anything you can&amp;rsquo;t lose and you have a second working drive or cloud space, &lt;strong>start backing up the important files now, before you finish reading.&lt;/strong> Whether the click turns out to be harmless or fatal, you&amp;rsquo;re better off with a backup either way — and if it &lt;em>is&lt;/em> fatal, the window can close in minutes.&lt;/p>&lt;/blockquote>
&lt;h2 id="step-1-the-30-second-triage--which-click-do-you-have">Step 1: The 30-second triage — which click do you have?&lt;/h2>
&lt;p>Before any fix, answer three questions. They pin your click to one of three causes and tell you which section to read.&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Does the drive still work?&lt;/strong> Can you open files, and does the system see the drive in File Explorer or BIOS? &lt;em>Working = far more likely normal or power-related. Not detected or crawling = the dangerous one.&lt;/em>&lt;/li>
&lt;li>&lt;strong>What&amp;rsquo;s the pattern?&lt;/strong> An &lt;strong>occasional&lt;/strong> soft click during activity, then silence, is very different from a &lt;strong>steady, rhythmic&lt;/strong> click-click-click every second or so that doesn&amp;rsquo;t stop. &lt;em>Occasional = usually normal. Rhythmic and persistent = classic click of death.&lt;/em>&lt;/li>
&lt;li>&lt;strong>Internal or external/USB?&lt;/strong> Is this a drive inside your PC on a SATA/power cable, or an external/USB-powered drive? &lt;em>External drives that click and drop out are very often a power problem, not a failure.&lt;/em>&lt;/li>
&lt;/ol>
&lt;p>Now match your answers:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Works fine + occasional click + any type&lt;/strong> → probably &lt;strong>normal&lt;/strong> (Step 2).&lt;/li>
&lt;li>&lt;strong>External/USB + clicks and disconnects&lt;/strong> → probably &lt;strong>power&lt;/strong> (Step 3).&lt;/li>
&lt;li>&lt;strong>Rhythmic click + not detected or very slow&lt;/strong> → treat as the &lt;strong>click of death&lt;/strong> (Steps 4–6).&lt;/li>
&lt;li>&lt;strong>Not detected but &lt;em>silent&lt;/em> (no click at all)&lt;/strong> → this isn&amp;rsquo;t a clicking problem — it&amp;rsquo;s a detection one, and the fix is different. Walk the &lt;a href="https://techfuelhq.com/articles/external-hard-drive-not-showing-up-2026/">external hard drive not showing up&lt;/a> ladder instead.&lt;/li>
&lt;li>&lt;strong>A repeated &lt;em>beep&lt;/em> rather than a click, and the drive isn&amp;rsquo;t spinning&lt;/strong> → that&amp;rsquo;s a different sound with its own fork (a power problem or a seized motor). See &lt;a href="https://techfuelhq.com/articles/hard-drive-beeping-2026/">hard drive beeping&lt;/a> instead.&lt;/li>
&lt;/ul>
&lt;p>Almost every clicking-drive panic is one of these three, and people routinely apply death-panic responses to a drive that was only parking its heads — or worse, keep power-cycling a genuinely failing drive and finish it off.&lt;/p>
&lt;h2 id="step-2-normal-clicking--the-drive-is-fine">Step 2: Normal clicking — the drive is fine&lt;/h2>
&lt;p>A hard drive has moving parts, and moving parts make sound. The most common &amp;ldquo;is my drive dying?&amp;rdquo; click is simply the drive &lt;strong>parking or repositioning its read/write heads&lt;/strong>. Power-saving drives are the usual suspects: features like Western Digital&amp;rsquo;s IntelliPark park the heads after just a few seconds of idle, and some drives do this aggressively — you&amp;rsquo;ll hear a brief whir and a soft click every so often. That&amp;rsquo;s the drive working as designed, not failing.&lt;/p>
&lt;p>How to know it&amp;rsquo;s the harmless kind:&lt;/p>
&lt;ul>
&lt;li>The click is &lt;strong>occasional and relatively quiet&lt;/strong>, often during or just after disk activity, not a nonstop rhythm.&lt;/li>
&lt;li>The drive &lt;strong>still works normally&lt;/strong> — files open, copy speeds are normal, nothing freezes.&lt;/li>
&lt;li>It&amp;rsquo;s been doing it for a while &lt;strong>without getting worse&lt;/strong> or losing data.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>What to do:&lt;/strong> confirm with data, don&amp;rsquo;t guess. Download the free &lt;a href="https://crystalmark.info/en/software/crystaldiskinfo/" rel="noopener">CrystalDiskInfo&lt;/a> (or HDD Sentinel) and check the drive&amp;rsquo;s SMART health. If it reads &lt;strong>&amp;ldquo;Good&amp;rdquo;&lt;/strong> with no reallocated or pending sectors, relax — and take the click as a nudge to make sure your backups are current, because every drive dies eventually. If SMART reads &lt;strong>&amp;ldquo;Caution&amp;rdquo;&lt;/strong> or shows rising bad-sector counts, jump to Step 5; the click is early wear, not just parking.&lt;/p>
&lt;h2 id="step-3-the-power-starved-click--often-a-free-fix">Step 3: The power-starved click — often a free fix&lt;/h2>
&lt;p>This one catches people constantly, and it&amp;rsquo;s the happiest outcome: an &lt;strong>external or USB-powered hard drive&lt;/strong> that clicks and disconnects usually isn&amp;rsquo;t broken — it&amp;rsquo;s &lt;strong>not getting enough power&lt;/strong> to spin up. The motor tries to start, browns out, and retries, which sounds exactly like clicking. Seagate and Ontrack both list undervoltage as a top cause of external-drive clicking, and forum threads on this are full of &amp;ldquo;I changed the USB port and it just started working.&amp;rdquo;&lt;/p>
&lt;p>Try these in order, cheapest first:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Plug directly into a rear motherboard USB port&lt;/strong>, not a front-panel port, an unpowered hub, or a monitor/keyboard passthrough. Rear ports off the board give the cleanest power.&lt;/li>
&lt;li>&lt;strong>Swap the USB cable.&lt;/strong> A thin, long, or damaged cable drops voltage. Use the shortest good-quality cable you have.&lt;/li>
&lt;li>&lt;strong>Give it more power.&lt;/strong> Use the drive&amp;rsquo;s &lt;strong>USB Y-cable&lt;/strong> (the split cable with two USB-A ends — both plug in) or a &lt;strong>powered USB hub&lt;/strong>. A 3.5-inch external with its own AC adapter should be on that adapter, plugged into the wall, not a power strip that&amp;rsquo;s browning out.&lt;/li>
&lt;li>&lt;strong>Try a different computer.&lt;/strong> If it behaves on another machine, your original port or cable was the problem.&lt;/li>
&lt;/ul>
&lt;p>If more power makes the clicking stop and the drive mount reliably, you&amp;rsquo;re done — the drive was fine all along. If it still clicks rhythmically and won&amp;rsquo;t mount on any port or machine, treat it as the click of death below.&lt;/p>
&lt;h2 id="step-4-the-real-click-of-death--what-it-actually-is">Step 4: The real click of death — what it actually is&lt;/h2>
&lt;p>The genuine article is unmistakable once you know it: a &lt;strong>loud, steady, rhythmic click&lt;/strong> — often described as click…click…click every second or so, sometimes with a whir-and-reset between clicks — usually paired with the drive &lt;strong>no longer being detected&lt;/strong>, mounting and then dropping, or reading painfully slowly.&lt;/p>
&lt;p>Mechanically, this is the read/write heads failing to do their job. Every platter has servo tracks that tell the heads where they are; if the heads are damaged (commonly from a drop or impact) or can&amp;rsquo;t read the drive&amp;rsquo;s firmware zone, the arm sweeps to find its position, fails, resets, and tries again — over and over. That repeated sweep-and-reset &lt;em>is&lt;/em> the clicking. It means the failure is &lt;strong>physical&lt;/strong>, and that single fact determines everything about what you should and shouldn&amp;rsquo;t do next.&lt;/p>
&lt;h2 id="step-5-if-it-might-be-dying--do-this-right-now">Step 5: If it might be dying — do this right now&lt;/h2>
&lt;p>If your triage points to failure — rhythmic click, drive dropping out, SMART in Caution — the order of operations matters more than any single fix.&lt;/p>
&lt;ol>
&lt;li>&lt;strong>If the drive is still readable at all, image or copy it immediately.&lt;/strong> Don&amp;rsquo;t cherry-pick files slowly; grab the most important data first, then attempt a full copy. Every minute a failing drive runs is borrowed time. If it&amp;rsquo;s an internal drive dropping out under load or heat, copy while it&amp;rsquo;s cold and visible.&lt;/li>
&lt;li>&lt;strong>Check SMART only if the drive is stable enough to stay powered.&lt;/strong> CrystalDiskInfo&amp;rsquo;s Reallocated Sector Count, Pending Sector Count, and health rating tell you how far gone it is. But don&amp;rsquo;t keep a rhythmically-clicking, undetected drive spinning just to run diagnostics — reading the data matters more.&lt;/li>
&lt;li>&lt;strong>Once you have what you can, power it down.&lt;/strong> A drive that&amp;rsquo;s clicking and undetected has nothing more to give you at home, and continued spinning risks scoring the platters.&lt;/li>
&lt;/ol>
&lt;p>The reason this ordering is non-negotiable: on a head-failed drive, &lt;strong>the data is still on the platters&lt;/strong> right up until the heads physically damage them. Your job is to get bits off before that happens, not to &amp;ldquo;repair&amp;rdquo; the drive.&lt;/p>
&lt;h2 id="step-6-what-not-to-do-this-is-where-people-destroy-their-data">Step 6: What NOT to do (this is where people destroy their data)&lt;/h2>
&lt;p>Every one of these is common advice somewhere online, and every one makes a genuinely failing drive worse:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Don&amp;rsquo;t put it in the freezer.&lt;/strong> This myth won&amp;rsquo;t die, but on any drive made in the last ~20 years it&amp;rsquo;s actively harmful. Modern drives aren&amp;rsquo;t airtight — a breather filter means humid air is already inside — so cooling condenses water across the heads and platters, and spin-up causes a head crash. Recovery labs say the freezer can turn a simple firmware repair into a $1,000+ head swap. Skip it.&lt;/li>
&lt;li>&lt;strong>Don&amp;rsquo;t keep power-cycling it &amp;ldquo;to see if it catches.&amp;rdquo;&lt;/strong> Each restart of a head-crashed drive is another chance for the heads to gouge the platters. Repeated power cycling is one of the fastest ways to convert recoverable data into unrecoverable data.&lt;/li>
&lt;li>&lt;strong>Don&amp;rsquo;t run repair software or CHKDSK on a mechanically clicking drive.&lt;/strong> Software can&amp;rsquo;t fix a physical head failure, and forcing reads hammers the failing heads against the surface. Repair tools are for logical/file-system problems, not a clicking drive.&lt;/li>
&lt;li>&lt;strong>Don&amp;rsquo;t open the drive.&lt;/strong> Platters need a cleanroom; a speck of household dust larger than the head-to-platter gap will wreck them. Opening it at your desk guarantees the recovery lab&amp;rsquo;s job gets harder or impossible.&lt;/li>
&lt;/ul>
&lt;h2 id="step-7-recover-or-replace">Step 7: Recover, or replace?&lt;/h2>
&lt;p>Once you&amp;rsquo;ve saved what you can (or confirmed it&amp;rsquo;s gone), it&amp;rsquo;s a simple decision:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Data you must have, no backup, drive is dead&lt;/strong> → a professional &lt;a href="https://www.ontrack.com/en-us" rel="noopener">data recovery service&lt;/a> is the only path once the heads have failed. It&amp;rsquo;s not cheap (often several hundred to over a thousand dollars), so it&amp;rsquo;s worth it only for genuinely irreplaceable files.&lt;/li>
&lt;li>&lt;strong>Data was backed up, or you can live without it&lt;/strong> → don&amp;rsquo;t spend a cent on recovery. Recycle the drive responsibly and replace it.&lt;/li>
&lt;/ul>
&lt;p>For the replacement, this is the moment to consider leaving spinning drives behind for anything you touch daily. A &lt;a href="https://www.amazon.com/s?k=internal&amp;#43;ssd&amp;amp;tag=techfuelhq-20" rel="nofollow sponsored noopener">solid-state drive&lt;/a> has no heads and no platters, so it can&amp;rsquo;t click and can&amp;rsquo;t suffer this failure mode — and our &lt;a href="https://techfuelhq.com/articles/best-nvme-ssd-homelab-2026/">best NVMe SSDs for a homelab&lt;/a> covers reliable picks. If you&amp;rsquo;re pricing drives right now, note that storage costs have moved a lot this year — our &lt;a href="https://techfuelhq.com/articles/ram-ssd-price-crisis-2026/">RAM and SSD price crisis breakdown&lt;/a> explains what&amp;rsquo;s driving it. Keep a spinning drive only where it makes sense — bulk cold storage and backups — and never as the single copy of anything you care about.&lt;/p>
&lt;h2 id="the-bottom-line">The bottom line&lt;/h2>
&lt;p>A clicking hard drive is not automatically a dead one. Run the 30-second triage first: &lt;strong>does it still work, is the click occasional or a steady rhythm, and is it internal or external?&lt;/strong> An occasional soft click on a working drive is normal head parking — verify with CrystalDiskInfo and move on. An external drive that clicks and drops out is usually starved for power — better cable, rear port, powered hub, and it comes back to life. Only a &lt;strong>loud, rhythmic click on a drive that&amp;rsquo;s no longer detected&lt;/strong> is the true click of death — and if that&amp;rsquo;s you, the move isn&amp;rsquo;t the freezer or repair software, it&amp;rsquo;s to copy every file you can &lt;em>right now&lt;/em>, then power down and decide between a recovery lab and a fresh drive. Find your click, act on that click, and most of the time your data — and often the drive — was never as doomed as the search results made it sound.&lt;/p></description></item><item><title>How Often Should You Replace Thermal Paste? Stop Using a Calendar (2026)</title><link>https://techfuelhq.com/articles/how-often-to-replace-thermal-paste-2026/</link><pubDate>Sat, 11 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/how-often-to-replace-thermal-paste-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-07-11 · ~9 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence what gets recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;p>Search &amp;ldquo;how often to replace thermal paste&amp;rdquo; and the top results openly contradict each other. A well-ranked guide tells you &lt;strong>every 2 to 3 years.&lt;/strong> Corsair&amp;rsquo;s own page says paste &amp;ldquo;will typically last many, many years and the vast majority of users should never have to worry about it.&amp;rdquo; A veteran on the Linus Tech Tips forum swears by &lt;strong>at least once a year.&lt;/strong> On r/buildapc, the single most-upvoted answer to this exact question is four words: &lt;strong>&amp;ldquo;When your temps give you trouble.&amp;rdquo;&lt;/strong>&lt;/p>
&lt;p>They&amp;rsquo;re not wrong — they&amp;rsquo;re answering slightly different questions and pretending it&amp;rsquo;s one answer. The useful version of this question isn&amp;rsquo;t &amp;ldquo;what&amp;rsquo;s the magic interval.&amp;rdquo; It&amp;rsquo;s &lt;strong>&amp;ldquo;what actually tells me my paste needs replacing&amp;rdquo;&lt;/strong> — and the answer is a temperature, not a date.&lt;/p>
&lt;h2 id="the-honest-answer-repaste-on-a-number-not-a-schedule">The honest answer: repaste on a number, not a schedule&lt;/h2>
&lt;p>Here&amp;rsquo;s the thing the calendar-based advice skips. Thermal paste doesn&amp;rsquo;t degrade on a fixed timer like milk. It degrades based on &lt;strong>how hot it runs and how many heat cycles it goes through&lt;/strong> — which is why a lightly-used office PC and a gaming laptop that throttles every night age their paste at completely different rates. A date can&amp;rsquo;t capture that. A temperature can.&lt;/p>
&lt;p>So the real trigger is a &lt;strong>rise in your temperatures over time on the same machine.&lt;/strong> If your CPU used to idle at 35 °C and sit at 65 °C in games, and now it idles at 45 °C and hits 85 °C on the same workload in the same room, something in the cooling path has degraded — and aging paste is one of the usual suspects. If those numbers haven&amp;rsquo;t moved in three years, your paste is fine no matter what the calendar says.&lt;/p>
&lt;p>This is why the r/buildapc hive-mind lands on &amp;ldquo;if it ain&amp;rsquo;t broke, don&amp;rsquo;t fix it,&amp;rdquo; and why it&amp;rsquo;s genuinely good advice rather than laziness. Repasting isn&amp;rsquo;t free maintenance — it carries a small risk (more on that below), so doing it on a schedule when nothing&amp;rsquo;s wrong is accepting downside for no measured upside.&lt;/p>
&lt;p>&lt;strong>The one habit that makes all of this easy:&lt;/strong> know your baseline. Install &lt;a href="https://www.hwinfo.com/" rel="noopener">HWiNFO&lt;/a> (free) once, note your normal idle and load temperatures for the CPU and GPU when the machine is new or freshly cleaned, and you&amp;rsquo;ll have something to compare against later. Not sure what &amp;ldquo;normal&amp;rdquo; even is? Our &lt;a href="https://techfuelhq.com/articles/safe-cpu-temp-2026/">safe CPU temperature guide&lt;/a> lays out the real ranges. Without a baseline, you&amp;rsquo;re guessing; with one, &amp;ldquo;is it time to repaste?&amp;rdquo; becomes a two-minute check instead of a debate.&lt;/p>
&lt;h2 id="why-the-intervals-disagree-it-depends-on-four-things">Why the intervals disagree: it depends on four things&lt;/h2>
&lt;p>The &amp;ldquo;2-3 years&amp;rdquo; versus &amp;ldquo;many years&amp;rdquo; gap isn&amp;rsquo;t people being careless. It&amp;rsquo;s real variation driven by four factors. Find yourself in this table and you&amp;rsquo;ll understand why your situation might call for a repaste at year two or year eight:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Factor&lt;/th>
&lt;th scope="col">Repaste sooner&lt;/th>
&lt;th scope="col">Repaste later (or never)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Paste quality&lt;/strong>&lt;/td>
&lt;td>Cheap or factory pre-applied paste; some can harden in 1-2 years&lt;/td>
&lt;td>Quality aftermarket paste (Arctic MX-4/MX-6, Thermal Grizzly); often 5+ years&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Heat &amp;amp; load&lt;/strong>&lt;/td>
&lt;td>Gaming hard daily, overclocked, hot room, small case&lt;/td>
&lt;td>Light use, cool room, good airflow, modest clocks&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Form factor&lt;/strong>&lt;/td>
&lt;td>Laptops and consoles — tiny coolers, very high temps&lt;/td>
&lt;td>Roomy desktop with a big air or liquid cooler&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Component&lt;/strong>&lt;/td>
&lt;td>GPUs (pump-out prone), especially RTX 30/40-series&lt;/td>
&lt;td>Desktop CPUs under a well-mounted cooler&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The pattern is clear: &lt;strong>heat and paste quality dominate.&lt;/strong> A builder running premium paste in a cool, well-ventilated desktop can genuinely go the entire life of the PC without touching it — that&amp;rsquo;s the Corsair &amp;ldquo;never worry&amp;rdquo; camp, and for that person it&amp;rsquo;s correct. Someone with a factory-pasted prebuilt that games hard in a warm room is the &amp;ldquo;2-3 years&amp;rdquo; camp, and that&amp;rsquo;s correct too. Both answers are right for the person giving them; neither is universal.&lt;/p>
&lt;p>One real-world example from the community that captures it perfectly: a builder reported the factory paste on a Gigabyte Windforce GPU turning to &amp;ldquo;solid cement&amp;rdquo; inside 12 months, while another has run the same aftermarket paste on a desktop CPU for &lt;strong>nine years with no temperature increase at all.&lt;/strong> Same question, two honest answers, driven entirely by paste quality and heat.&lt;/p>
&lt;h2 id="signs-its-actually-time-the-checklist-that-beats-a-date">Signs it&amp;rsquo;s actually time (the checklist that beats a date)&lt;/h2>
&lt;p>Rather than counting years, watch for these. Any one of them is a reason to investigate; the paste is the suspect only after you&amp;rsquo;ve ruled out the cheaper causes:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Temperatures crept up&lt;/strong> on the same workload compared to your baseline — the headline signal.&lt;/li>
&lt;li>&lt;strong>Fans are louder than they used to be&lt;/strong> at idle or under light load (the cooling system compensating for worse heat transfer).&lt;/li>
&lt;li>&lt;strong>The chip is throttling&lt;/strong> — clock speeds dropping under sustained load, or stutters and slowdowns during gaming. If your whole system locks up instead, that&amp;rsquo;s worth separating out; see &lt;a href="https://techfuelhq.com/articles/computer-keeps-freezing-2026/">why a PC keeps freezing&lt;/a>.&lt;/li>
&lt;li>&lt;strong>Thermal shutdowns&lt;/strong> — the machine cutting off under heavy load to protect itself.&lt;/li>
&lt;/ul>
&lt;p>Crucial caveat: &lt;strong>all of these can be caused by dust or a failing fan long before they&amp;rsquo;re caused by paste.&lt;/strong> A heatsink choked with dust raises temperatures far more often than aged paste does, and it&amp;rsquo;s a five-minute fix instead of a teardown. Blow out the dust with &lt;a href="https://www.amazon.com/s?k=compressed&amp;#43;air&amp;#43;duster&amp;amp;tag=techfuelhq-20" rel="nofollow sponsored noopener">compressed air&lt;/a> and confirm every fan actually spins (&lt;a href="https://techfuelhq.com/articles/cpu-fan-not-spinning-2026/">a stopped CPU fan&lt;/a> will spike temps overnight) &lt;em>before&lt;/em> you conclude it&amp;rsquo;s the paste. Repaste is the answer when temps are high, dust is ruled out, and the fans are working — not the first thing you reach for.&lt;/p>
&lt;h2 id="the-gpu-exception-pump-out-is-real">The GPU exception: pump-out is real&lt;/h2>
&lt;p>Graphics cards deserve their own note, because they age differently from desktop CPUs. GPUs are prone to &lt;strong>pump-out&lt;/strong> — repeated heating and cooling slowly squeezes paste out from the center of the die, where it&amp;rsquo;s needed most. It&amp;rsquo;s common enough that RTX 30- and 40-series cards are known for it after roughly &lt;strong>18-24 months&lt;/strong> of hard use.&lt;/p>
&lt;p>The giveaway isn&amp;rsquo;t the core temperature; it&amp;rsquo;s the &lt;strong>hotspot-to-core delta.&lt;/strong> If the gap between your GPU&amp;rsquo;s hotspot (junction) and core temperature has widened over time — past about 20 °C on NVIDIA or 30 °C on AMD — the thermal interface has degraded, and a repaste often closes it by 5-15 °C. We walk through that exact measurement in the &lt;a href="https://techfuelhq.com/articles/gpu-overheating-2026/">GPU overheating guide&lt;/a>, and it&amp;rsquo;s the cleanest example of &amp;ldquo;measure, don&amp;rsquo;t guess&amp;rdquo; there is. The same logic applies to a hot CPU — confirm it&amp;rsquo;s &lt;a href="https://techfuelhq.com/articles/cpu-overheating-2026/">genuinely overheating&lt;/a> and rule out dust before you tear the cooler off.&lt;/p>
&lt;p>One firm rule: &lt;strong>if the card is still under warranty, don&amp;rsquo;t open it.&lt;/strong> Removing the shroud usually voids coverage, and a card that&amp;rsquo;s overheating under warranty should be an RMA, not a DIY repaste.&lt;/p>
&lt;h2 id="when-you-have-no-choice-after-removing-the-cooler">When you have no choice: after removing the cooler&lt;/h2>
&lt;p>There&amp;rsquo;s one scenario where &amp;ldquo;how often&amp;rdquo; doesn&amp;rsquo;t apply at all — &lt;strong>any time you take the cooler off, you repaste, full stop.&lt;/strong> Lifting the heatsink breaks the thin, evenly-spread layer that was doing the work; pressing it back down onto disturbed paste leaves gaps and air pockets that make contact worse than before. So if you&amp;rsquo;re swapping a cooler, reseating a CPU, or opening a GPU for cleaning, factor a fresh application in every time, regardless of how old the existing paste is.&lt;/p>
&lt;h2 id="how-much-to-use-since-youll-be-at-it-anyway">How much to use (since you&amp;rsquo;ll be at it anyway)&lt;/h2>
&lt;p>Over-application is the most common mistake, and it&amp;rsquo;s counterproductive — too much paste acts as an insulator and can ooze onto the socket. For most desktop CPUs, a &lt;strong>pea-sized dot or a small dab in the center&lt;/strong> is right; the cooler&amp;rsquo;s mounting pressure spreads it into a thin, even layer as you tighten it down. You don&amp;rsquo;t manually smear it (that traps air). Larger chips like Threadripper or a big GPU die want a bit more, sometimes a thin line or an X, but the principle holds: &lt;strong>a little, placed center, let pressure do the spreading.&lt;/strong> A single &lt;a href="https://www.amazon.com/s?k=thermal&amp;#43;paste&amp;#43;cpu&amp;amp;tag=techfuelhq-20" rel="nofollow sponsored noopener">good tube of paste&lt;/a> will last you many applications, so there&amp;rsquo;s no reason to be generous with any one of them.&lt;/p>
&lt;h2 id="the-quick-version">The quick version&lt;/h2>
&lt;ol>
&lt;li>&lt;strong>Ignore the calendar.&lt;/strong> Paste ages by heat and cycles, not by date, so &amp;ldquo;every X years&amp;rdquo; is a bad rule. A cool, lightly-used desktop with quality paste can go the life of the PC; a hot gaming laptop wants it every 2-4 years.&lt;/li>
&lt;li>&lt;strong>Repaste on a temperature.&lt;/strong> The real trigger is your idle and load temps creeping up 5-10 °C versus your machine&amp;rsquo;s own baseline — after you&amp;rsquo;ve ruled out dust and a failing fan, which cause the same symptoms far more often.&lt;/li>
&lt;li>&lt;strong>GPUs are the exception.&lt;/strong> Pump-out is real on RTX 30/40-series after ~18-24 months; watch the hotspot-to-core delta widening, not the years.&lt;/li>
&lt;li>&lt;strong>Don&amp;rsquo;t repaste for no reason.&lt;/strong> Pulling a cooler carries a small risk (lifting the CPU, ripping pads, voiding warranty). If temps are fine, leave a working thermal interface alone.&lt;/li>
&lt;li>&lt;strong>When you do open it, repaste every time&lt;/strong> — and use a pea-sized amount, center of the die, let mounting pressure spread it.&lt;/li>
&lt;/ol>
&lt;p>The builders who say &amp;ldquo;never&amp;rdquo; and the ones who say &amp;ldquo;every two years&amp;rdquo; are both telling the truth about their own machines. Learn your baseline temperatures, watch for them to rise, and you&amp;rsquo;ll replace your paste exactly when it needs it — which is the only schedule that was ever going to be right.&lt;/p></description></item><item><title>Low GPU Usage in Games? How to Tell a Real Bottleneck From a Fake One (2026)</title><link>https://techfuelhq.com/articles/low-gpu-usage-2026/</link><pubDate>Sat, 11 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/low-gpu-usage-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-07-11 · ~9 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence what gets recommended - see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;p>Search &amp;ldquo;low GPU usage&amp;rdquo; and the SERP splits down the middle. Half the results say the same three words - &lt;em>it&amp;rsquo;s a CPU bottleneck&lt;/em> - and the other half are frustrated threads titled &amp;ldquo;&lt;strong>Low GPU usage (NOT A CPU BOTTLENECK)&lt;/strong>&amp;rdquo; from people who checked and found their CPU wasn&amp;rsquo;t maxed either. Both camps are right, because &lt;strong>low GPU usage has two completely different causes&lt;/strong>, and telling them apart takes one reading almost nobody explains: whether a &lt;em>single&lt;/em> CPU thread is pegged while the rest coast.&lt;/p>
&lt;p>Get that reading right and you&amp;rsquo;ll know in thirty seconds whether you have a real bottleneck (and roughly what to do about it) or one of the fake ones - an FPS cap, a power setting, or a laptop quietly running the game on its integrated graphics - that get misdiagnosed as bottlenecks every day.&lt;/p>
&lt;h2 id="first-is-low-gpu-usage-even-a-problem">First: is low GPU usage even a problem?&lt;/h2>
&lt;p>Before you fix anything, rule out the case where nothing is wrong. &lt;strong>A GPU that sits below 100 percent is only a problem if your frame rate is also lower than it should be.&lt;/strong> Usage naturally drops in menus, on loading screens, in lightweight or older games, and - importantly - &lt;strong>any time you&amp;rsquo;ve capped your frame rate below what the card can produce.&lt;/strong> If you cap to 60 FPS and the card could do 140, it will coast at 45 to 60 percent usage and hold a perfect 60. That&amp;rsquo;s the card working &lt;em>correctly&lt;/em>, not a fault.&lt;/p>
&lt;p>And while we&amp;rsquo;re here: &lt;strong>100 percent GPU usage is the goal, not a warning.&lt;/strong> A pinned GPU means the graphics card is the thing setting your frame rate and nothing else is holding it back - exactly what you want. It doesn&amp;rsquo;t wear the card out; GPUs are built to run at full load for hours, and their own temperature and power limits protect them. The only asterisk is thermal throttling: if 99 percent usage comes with temperatures hitting the card&amp;rsquo;s limit and clocks sagging, that&amp;rsquo;s a cooling problem, not a usage one (our &lt;a href="https://techfuelhq.com/articles/cpu-overheating-2026/">CPU overheating&lt;/a> guide has the same logic for the processor side).&lt;/p>
&lt;p>So the real symptom worth chasing is narrow: &lt;strong>GPU usage well under 90 percent &lt;em>and&lt;/em> a frame rate below what your hardware should deliver.&lt;/strong> That&amp;rsquo;s the rest of this guide.&lt;/p>
&lt;h2 id="the-reading-everyone-gets-wrong-total-cpu-lies">The reading everyone gets wrong: total CPU% lies&lt;/h2>
&lt;p>Here&amp;rsquo;s the mistake that sends people down the wrong path. They open Task Manager, see the CPU at 35 percent, conclude &amp;ldquo;not a CPU bottleneck,&amp;rdquo; and start blaming the GPU, the drivers, or the game.&lt;/p>
&lt;p>&lt;strong>The single system-wide CPU number is misleading for gaming.&lt;/strong> Modern processors have 8, 12, 16 cores - but most games lean hard on one or two main threads (a render thread, a main game-logic thread) and barely touch the rest. When that one thread hits 100 percent, it &lt;em>caps your frame rate&lt;/em> no matter how idle the other cores are. On a 12-thread CPU, one fully-maxed thread shows up as roughly &lt;strong>8 percent system-wide&lt;/strong>. So a game can be completely CPU-limited while Task Manager&amp;rsquo;s headline number reads 30 or 40 percent.&lt;/p>
&lt;p>&lt;strong>Always look at per-core load, not the rolled-up percentage.&lt;/strong> In Task Manager, open the Performance tab, click CPU, then right-click the graph and choose &amp;ldquo;Change graph to → Logical processors&amp;rdquo; - now you see every thread. If one is slammed against the ceiling while the others loaf, that&amp;rsquo;s your bottleneck, full stop. (MSI Afterburner and HWiNFO can show per-core load as an in-game overlay if you&amp;rsquo;d rather watch it live.)&lt;/p>
&lt;p>One more measurement trap: &lt;strong>Task Manager&amp;rsquo;s GPU percentage itself is unreliable for games.&lt;/strong> It defaults to showing whichever GPU &amp;ldquo;engine&amp;rdquo; it feels like, and can display a low number while the 3D engine is actually busy. Trust &lt;strong>MSI Afterburner / RivaTuner&lt;/strong>, &lt;strong>GPU-Z&lt;/strong>, or your GPU vendor&amp;rsquo;s overlay for real GPU load, not the Task Manager tile.&lt;/p>
&lt;h2 id="the-fork-one-core-pegged-or-everything-coasting">The fork: one core pegged, or everything coasting?&lt;/h2>
&lt;p>This is the whole diagnosis. Watch &lt;strong>per-core CPU load and true GPU load together&lt;/strong> during a minute of the actual game, and you land in one of these rows:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">What you see&lt;/th>
&lt;th scope="col">What it means&lt;/th>
&lt;th scope="col">Where to go&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>GPU under 90%, &lt;strong>one CPU thread near 100%&lt;/strong>&lt;/td>
&lt;td>&lt;strong>Real CPU bottleneck&lt;/strong>&lt;/td>
&lt;td>The CPU-limit fixes below&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GPU low, &lt;strong>all CPU cores also low&lt;/strong>, and you&amp;rsquo;re &lt;strong>at an FPS cap / refresh rate&lt;/strong>&lt;/td>
&lt;td>Not a problem - the cap is doing its job&lt;/td>
&lt;td>Nothing to fix (or raise the cap)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GPU low, &lt;strong>all cores low&lt;/strong>, &lt;strong>no cap&lt;/strong> but FPS still bad&lt;/td>
&lt;td>Hidden limiter, power throttle, or wrong GPU&lt;/td>
&lt;td>The &amp;ldquo;fake bottleneck&amp;rdquo; fixes below&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GPU low on a &lt;strong>laptop&lt;/strong>, dedicated card barely moving&lt;/td>
&lt;td>Game is on the &lt;strong>integrated GPU&lt;/strong>&lt;/td>
&lt;td>Force the dedicated GPU&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GPU &lt;strong>pinned at 99%&lt;/strong> but FPS low&lt;/td>
&lt;td>You&amp;rsquo;re GPU-limited (normal) or throttling&lt;/td>
&lt;td>Lower settings, or check temps&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The single most useful clue is whether &lt;strong>any one CPU thread is maxed&lt;/strong>. If yes, it&amp;rsquo;s a genuine CPU limit. If nothing is working hard, stop looking for a bottleneck - something is capping or starving the game &lt;em>before&lt;/em> either part gets busy.&lt;/p>
&lt;h2 id="when-its-a-real-cpu-bottleneck-one-thread-pegged">When it&amp;rsquo;s a real CPU bottleneck (one thread pegged)&lt;/h2>
&lt;p>If a single core is slammed while the GPU coasts, the graphics card is idling because the CPU can&amp;rsquo;t feed it frames fast enough. This is normal in &lt;strong>simulation, strategy, and busy open-world games&lt;/strong>, and at &lt;strong>lower resolutions&lt;/strong> (1080p leans on the CPU far more than 4K). What actually helps:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Enable XMP (Intel) / EXPO (AMD) in the BIOS.&lt;/strong> The most common free win by far - memory left at its slow JEDEC default starves the CPU&amp;rsquo;s frame-feeding, and flipping the profile on often lifts 1% lows immediately.&lt;/li>
&lt;li>&lt;strong>Close background CPU load&lt;/strong> - browser tabs, Discord, capture/overlay tools, aggressive antivirus.&lt;/li>
&lt;li>&lt;strong>Make sure the CPU isn&amp;rsquo;t thermal-throttling.&lt;/strong> A hot CPU that drops clocks reads as exactly this symptom; see &lt;a href="https://techfuelhq.com/articles/cpu-overheating-2026/">CPU overheating&lt;/a> to rule it out.&lt;/li>
&lt;li>&lt;strong>Raise resolution or settings if you want the GPU busier.&lt;/strong> Counter-intuitive but real: pushing more graphics work shifts the limiter back onto the GPU. It won&amp;rsquo;t raise your FPS, but it puts the card you paid for to work.&lt;/li>
&lt;/ul>
&lt;p>What &lt;em>won&amp;rsquo;t&lt;/em> help: lowering resolution or graphics settings. If dropping from High to Low gains you almost nothing, that&amp;rsquo;s the confirmation you&amp;rsquo;re CPU-bound - the GPU had headroom to spare. The only true fix for a hard CPU limit is a faster CPU (single-thread performance matters most for games).&lt;/p>
&lt;h2 id="the-fake-bottlenecks-nothing-is-working-hard">The fake bottlenecks (nothing is working hard)&lt;/h2>
&lt;p>If &lt;strong>both&lt;/strong> the GPU and every CPU core are coasting and your FPS is still bad, you&amp;rsquo;re not bottlenecked - something is holding the whole system back. Work through these:&lt;/p>
&lt;p>&lt;strong>A frame-rate limit you forgot about.&lt;/strong> An in-game FPS cap, &lt;strong>V-Sync&lt;/strong> locking you to your refresh rate, a &amp;ldquo;Max Frame Rate&amp;rdquo; set in the NVIDIA/AMD control panel, or an RTSS/launcher cap will all make the GPU coast on purpose. Turn every cap off to test; if usage jumps and FPS climbs, a limiter was the &amp;ldquo;problem&amp;rdquo; all along.&lt;/p>
&lt;p>&lt;strong>Power throttling.&lt;/strong> Set the &lt;strong>Windows power mode to Best Performance&lt;/strong> (Settings → System → Power). In the NVIDIA Control Panel under Manage 3D Settings, set &lt;strong>Power Management Mode to &amp;ldquo;Prefer maximum performance&amp;rdquo;&lt;/strong> so the card doesn&amp;rsquo;t sit at low clocks (AMD&amp;rsquo;s equivalent is in Radeon Software). On a &lt;strong>laptop, keep it plugged in&lt;/strong> - on battery, and in &amp;ldquo;quiet&amp;rdquo;/&amp;ldquo;battery boost&amp;rdquo; modes, the hardware is deliberately capped.&lt;/p>
&lt;p>&lt;strong>Running on the wrong GPU (laptops especially).&lt;/strong> This is a top cause of a good GPU showing almost no usage: the game is silently running on the Intel/AMD &lt;strong>integrated graphics&lt;/strong>. Fix it in three places - (1) Windows Settings → System → Display → &lt;strong>Graphics&lt;/strong>, add the game&amp;rsquo;s .exe and set it to &lt;strong>High Performance&lt;/strong>; (2) NVIDIA Control Panel → Manage 3D Settings → preferred processor = &lt;strong>High-performance NVIDIA processor&lt;/strong>; (3) power mode on Best Performance and plugged in. If it still won&amp;rsquo;t switch, check the BIOS/UEFI for a graphics/MUX setting and update the GPU driver.&lt;/p>
&lt;p>&lt;strong>A background thread stealing time or DPC latency.&lt;/strong> Less common when &lt;em>everything&lt;/em> reads low, but a misbehaving network/audio/chipset driver can stall the pipeline; &lt;strong>LatencyMon&lt;/strong> (free) points at the culprit.&lt;/p>
&lt;p>&lt;strong>VRAM overflow or a crippled PCIe link.&lt;/strong> If the card runs out of video memory it swaps textures over PCIe and usage gets erratic - drop texture quality and check dedicated VRAM against the card&amp;rsquo;s limit (our &lt;a href="https://techfuelhq.com/articles/how-much-vram-do-you-need-2026/">how much VRAM you need&lt;/a> guide has the real numbers). And on desktops, a GPU seated in the wrong slot or on a bad riser can drop to PCIe x1 and choke - GPU-Z&amp;rsquo;s Bus Interface reading (run its render test) tells you the active link width.&lt;/p>
&lt;h2 id="the-quick-win-order">The quick-win order&lt;/h2>
&lt;p>If you want a sequence instead of a diagnosis, run these free steps and re-check per-core CPU and true GPU load after each:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Confirm you&amp;rsquo;re not just at an FPS cap&lt;/strong> - turn off every V-Sync/FPS limit to test.&lt;/li>
&lt;li>&lt;strong>Read per-core CPU load&lt;/strong> (Task Manager → Logical processors). One pegged thread = CPU-limited; stop here.&lt;/li>
&lt;li>&lt;strong>Set Windows power mode to Best Performance&lt;/strong>; NVIDIA Power Management to Prefer maximum performance; laptop plugged in.&lt;/li>
&lt;li>&lt;strong>On a laptop, force the dedicated GPU&lt;/strong> for the game (Windows Graphics settings + control panel).&lt;/li>
&lt;li>&lt;strong>Enable XMP/EXPO&lt;/strong> in the BIOS and close background apps.&lt;/li>
&lt;/ol>
&lt;p>Most &amp;ldquo;low GPU usage&amp;rdquo; ends somewhere in the first four steps. The people who &amp;ldquo;tried everything&amp;rdquo; almost always skipped step 2 - they read one system-wide CPU percentage, saw 35 percent, and never looked at the maxed core underneath it.&lt;/p>
&lt;p>If your frame rate is low but &lt;em>uneven&lt;/em> - hitching and micro-stutter rather than a steady low number - that&amp;rsquo;s a different problem with its own diagnosis; start with &lt;a href="https://techfuelhq.com/articles/pc-stuttering-in-games-2026/">why your PC stutters in games&lt;/a>, which separates frame-pacing stutter from a genuinely weak GPU.&lt;/p></description></item><item><title>SSD Not Showing Up in BIOS or Windows? Find the Layer It Disappears At (2026)</title><link>https://techfuelhq.com/articles/ssd-not-showing-up-2026/</link><pubDate>Sat, 11 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/ssd-not-showing-up-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-07-11 · ~8 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence what gets recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;p>Here is the single question every &amp;ldquo;SSD not showing up&amp;rdquo; guide skips, and it&amp;rsquo;s the one that actually decides your fix: &lt;strong>where does the drive disappear?&lt;/strong> A brand-new M.2 that never appears in BIOS is a completely different problem — with a completely different fix — from a drive that BIOS sees fine but Windows won&amp;rsquo;t show. Most articles jam every possible cause into one long checklist and let you flail through all of it. You don&amp;rsquo;t need the whole list. You need to find the &lt;em>lowest layer&lt;/em> your drive fails to appear at, because that one observation pins the cause to hardware, firmware, or software — and rules out most of the checklist before you touch anything.&lt;/p>
&lt;p>The good news up front, echoed across the r/buildapc and Tom&amp;rsquo;s Hardware threads on this exact problem: an SSD that won&amp;rsquo;t show up is &lt;strong>usually not dead.&lt;/strong> Far more often it&amp;rsquo;s a loose M.2 screw, a keying or lane-sharing quirk in a specific slot, a BIOS storage mode, or a drive that&amp;rsquo;s detected but simply not initialized yet. This guide walks the detection ladder from the bottom up so you stop at the rung where your drive actually goes missing.&lt;/p>
&lt;h2 id="step-1-find-the-layer--the-detection-ladder">Step 1: Find the layer — the detection ladder&lt;/h2>
&lt;p>Before any fix, run this three-rung check. Where the drive first fails to appear tells you which section below to read and lets you ignore the rest.&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Is it in the BIOS/UEFI at all?&lt;/strong> Restart, enter BIOS (usually Delete or F2 at boot), and look at the storage or boot device list. If the drive isn&amp;rsquo;t there, you&amp;rsquo;re at the &lt;strong>hardware and firmware layer&lt;/strong> — Steps 2 and 3. This is where the M.2 traps live.&lt;/li>
&lt;li>&lt;strong>In BIOS, but not in Windows?&lt;/strong> If BIOS lists the drive but it&amp;rsquo;s absent from File Explorer, the hardware is fine — the drive is detected. You&amp;rsquo;re at the &lt;strong>Windows disk layer&lt;/strong> — Step 4. This is the easiest fix and the least scary, so don&amp;rsquo;t panic if you land here.&lt;/li>
&lt;li>&lt;strong>In Disk Management, but as &amp;ldquo;Unallocated,&amp;rdquo; &amp;ldquo;Not Initialized,&amp;rdquo; or &amp;ldquo;RAW&amp;rdquo;?&lt;/strong> The drive is present and talking; it just has no usable partition or letter yet. Still Step 4 — with one important data-safety caveat.&lt;/li>
&lt;/ol>
&lt;p>Almost every &amp;ldquo;my SSD isn&amp;rsquo;t showing up&amp;rdquo; post is really one of these three, and people waste hours applying rung-1 hardware fixes to a rung-3 software problem. Find your rung first.&lt;/p>
&lt;h2 id="step-2-not-in-bios--the-physical-and-connection-checks">Step 2: Not in BIOS — the physical and connection checks&lt;/h2>
&lt;p>If the drive is absent from BIOS entirely, start at the physical layer. Power off at the PSU switch and mind static.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>M.2 mounting screw and seat.&lt;/strong> An M.2 stick sits at a slight upward angle when it isn&amp;rsquo;t screwed down, and that angle is often enough to break contact. Remove it, check the slot for dust, re-insert at about a 30-degree angle, press it flat, and secure the standoff screw snugly. A loose or missing screw is one of the most common reasons a freshly installed M.2 never appears.&lt;/li>
&lt;li>&lt;strong>SATA cables (2.5-inch and 3.5-inch drives).&lt;/strong> Reseat both the data cable and the power cable at the drive and the board. Then — this is the step people skip — &lt;strong>swap the SATA data cable&lt;/strong> for a known-good one. Cheap or partly-seated SATA cables are a notorious hidden culprit; Seagate&amp;rsquo;s own support note calls a damaged or loose data cable the first thing to check.&lt;/li>
&lt;li>&lt;strong>Power connector (SATA drives).&lt;/strong> Make sure the drive is actually getting power from the PSU. Try a different power lead from the supply; a dead modular cable or a daisy-chained connector can leave one drive unpowered.&lt;/li>
&lt;li>&lt;strong>Test the slot, not just the drive.&lt;/strong> If you have a second M.2 slot or a spare SATA port, move the drive there. If it appears in a different slot, you&amp;rsquo;ve localized the fault to the original slot — often a lane-sharing or keying issue, covered next.&lt;/li>
&lt;/ul>
&lt;p>If a reseat and a cable swap bring the drive back, you&amp;rsquo;re done. If it&amp;rsquo;s still missing from BIOS, the cause is usually one of the M.2 configuration traps.&lt;/p>
&lt;h2 id="step-3-the-m2-traps-most-guides-bury">Step 3: The M.2 traps most guides bury&lt;/h2>
&lt;p>This is where the differential diagnosis earns its keep, because these four causes look identical to a dead drive and none of them is one.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>NVMe vs SATA keying — the drive fits but never registers.&lt;/strong> M.2 comes in two electrical flavors that share a physical connector. A &lt;strong>SATA&lt;/strong> M.2 drive will slide into an &lt;strong>NVMe-only&lt;/strong> slot and seat perfectly — and never be detected — and an &lt;strong>NVMe&lt;/strong> drive won&amp;rsquo;t function in a &lt;strong>SATA-only&lt;/strong> slot. The notch shape (B-key, M-key, B+M) does &lt;em>not&lt;/em> tell you what the slot is electrically wired for; a slot can be SATA-only even with an M-key cutout. The authority is your motherboard manual&amp;rsquo;s M.2 specification, not the drive fitting. If a new M.2 fits snugly but is invisible, confirm the drive&amp;rsquo;s protocol matches what that specific slot supports.&lt;/li>
&lt;li>&lt;strong>PCIe lane-sharing — installing the M.2 killed a SATA port (or vice versa).&lt;/strong> Consumer chipsets don&amp;rsquo;t have enough PCIe lanes to run every slot and port simultaneously. So on many boards a given M.2 slot borrows its four lanes from specific SATA ports or from a second M.2 slot — and populating one disables the other. If your SATA SSD vanished right after you added an M.2 drive, that&amp;rsquo;s this. If your M.2 is dead in one slot, it may be sharing lanes with a SATA port you have populated. The manual&amp;rsquo;s storage block diagram lists exactly which combination disables what. Move the affected drive to a non-shared port.&lt;/li>
&lt;li>&lt;strong>VMD / RAID storage mode (Intel and ASUS boards).&lt;/strong> If the board&amp;rsquo;s SATA/storage mode is set to Intel VMD or RAID, an NVMe drive can be hidden behind that abstraction layer. Switching to &lt;strong>AHCI&lt;/strong> exposes it. Read the VMD caution in the FAQ first — if Windows was installed under VMD, flipping this can make your boot drive unbootable.&lt;/li>
&lt;li>&lt;strong>CSM / UEFI mode and BIOS defaults.&lt;/strong> A mode mismatch can hide a drive from the boot list even when the board sees it. The fast reset that clears most of these at once: enter BIOS, &lt;strong>load Optimized Defaults&lt;/strong>, set boot mode to UEFI, then re-check. If the board is older and the SSD is new and large, a &lt;strong>BIOS/UEFI firmware update&lt;/strong> from the board maker&amp;rsquo;s support page is sometimes what&amp;rsquo;s needed for the board to recognize the newer drive.&lt;/li>
&lt;/ul>
&lt;p>Work these in order — keying, lanes, storage mode, defaults/firmware — and the great majority of &amp;ldquo;not in BIOS&amp;rdquo; drives come back without a single part swap.&lt;/p>
&lt;h2 id="step-4-in-bios-but-not-in-windows--the-disk-layer">Step 4: In BIOS but not in Windows — the disk layer&lt;/h2>
&lt;p>If BIOS lists the drive but Windows doesn&amp;rsquo;t show it, relax: the hard part is over. The drive is detected. It&amp;rsquo;s just not presented to you yet. Open &lt;strong>Disk Management&lt;/strong> (right-click the Start button, choose Disk Management) and find the drive in the lower pane.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&amp;ldquo;Not Initialized.&amp;rdquo;&lt;/strong> A brand-new drive arrives with no partition table. Right-click it, initialize as &lt;strong>GPT&lt;/strong> (the modern standard), then right-click the unallocated space, choose &lt;strong>New Simple Volume&lt;/strong>, and assign a drive letter and file system. It&amp;rsquo;ll appear in File Explorer immediately.&lt;/li>
&lt;li>&lt;strong>Healthy volume, no drive letter.&lt;/strong> Right-click the volume, choose &lt;strong>Change Drive Letter and Paths&lt;/strong>, and add a letter. Sometimes Windows just didn&amp;rsquo;t assign one.&lt;/li>
&lt;li>&lt;strong>&amp;ldquo;RAW&amp;rdquo; or unexpectedly &amp;ldquo;Unallocated&amp;rdquo; on a drive that had data.&lt;/strong> Stop. This is the one place the standard advice becomes dangerous. Initializing or formatting a drive that &lt;em>held data&lt;/em> erases it. If this SSD was working and now reads as RAW or uninitialized, treat it as data recovery, not setup — don&amp;rsquo;t click initialize. Only initialize a drive you know is blank.&lt;/li>
&lt;/ul>
&lt;p>The takeaway: a drive that reaches BIOS is a hardware success. Everything from here is a few clicks in Disk Management — unless the drive had data and now looks empty, in which case protecting that data comes before anything else.&lt;/p>
&lt;h2 id="step-5-is-the-drive-actually-dead-the-one-test-that-settles-it">Step 5: Is the drive actually dead? The one test that settles it&lt;/h2>
&lt;p>If you&amp;rsquo;ve reseated, swapped cables, checked keying and lanes, and loaded BIOS defaults, and the drive is &lt;em>still&lt;/em> invisible in BIOS in every slot, run the isolation test before you spend money. Put the SSD in an &lt;strong>external USB enclosure or adapter&lt;/strong>, or connect it to &lt;strong>a different computer&lt;/strong>.&lt;/p>
&lt;p>&lt;em>(One note if you landed here about a spinning hard drive rather than an SSD: an SSD has no moving parts and is silent, so it can&amp;rsquo;t click. If your drive is a mechanical hard drive making a clicking or grinding noise, that points to physical head failure, not a detection quirk — see &lt;a href="https://techfuelhq.com/articles/hard-drive-clicking-2026/">hard drive clicking&lt;/a> for that triage.)&lt;/em>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Appears elsewhere&lt;/strong> → the drive is alive. The fault is in your original system — a slot, a port, a cable, or a BIOS setting. Go back and work Steps 2 and 3 harder, and suspect the motherboard&amp;rsquo;s storage if a known-good slot won&amp;rsquo;t see a known-good drive. A dead M.2 slot or SATA controller is a board-level fault: see &lt;a href="https://techfuelhq.com/articles/motherboard-failure-symptoms-2026/">motherboard failure symptoms&lt;/a>.&lt;/li>
&lt;li>&lt;strong>Appears nowhere&lt;/strong> → the SSD itself has failed. If it&amp;rsquo;s under warranty, RMA it. If it held data you need, a recovery service is the only path once the controller is gone. Then replace it — a current &lt;a href="https://www.amazon.com/s?k=nvme&amp;#43;ssd&amp;amp;tag=techfuelhq-20" rel="nofollow sponsored noopener">NVMe SSD&lt;/a> is inexpensive, and our &lt;a href="https://techfuelhq.com/articles/best-nvme-ssd-homelab-2026/">best NVMe SSDs for a homelab&lt;/a> covers reliable picks.&lt;/li>
&lt;/ul>
&lt;p>This cross-check is the same logic that separates a bad slot from a bad card in a &lt;a href="https://techfuelhq.com/articles/graphics-card-not-detected-2026/">graphics card not detected&lt;/a> situation: move the part to a known-good environment and let &lt;em>where it works&lt;/em> tell you what&amp;rsquo;s broken. It takes ten minutes and it&amp;rsquo;s the difference between a $0 fix and buying a drive you didn&amp;rsquo;t need.&lt;/p>
&lt;h2 id="the-bottom-line">The bottom line&lt;/h2>
&lt;p>An SSD that won&amp;rsquo;t show up is rarely a dead SSD, and you don&amp;rsquo;t need the giant checklist — you need to find the layer it disappears at. If it&amp;rsquo;s absent from &lt;strong>BIOS&lt;/strong>, you&amp;rsquo;re at the hardware layer: reseat the M.2 screw or swap the SATA cable, then check the traps that masquerade as failure — NVMe-vs-SATA keying for the slot, PCIe lane-sharing that disables ports, VMD/RAID mode hiding an NVMe drive, and a BIOS defaults reset. If BIOS sees it but &lt;strong>Windows&lt;/strong> doesn&amp;rsquo;t, it&amp;rsquo;s a five-click job in Disk Management — initialize a blank drive, assign a letter — with the one hard rule that you never initialize a drive that still holds data. And if it&amp;rsquo;s invisible everywhere, in every slot and machine, only then is the drive itself the answer. Find the rung, fix the rung, and most of the time the drive was never broken at all.&lt;/p></description></item><item><title>Coil Whine: Is It Normal, and Where Is It Coming From? (2026)</title><link>https://techfuelhq.com/articles/coil-whine-2026/</link><pubDate>Fri, 10 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/coil-whine-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-07-10 · ~8 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence what gets recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;p>You fire up a game, the frame counter shoots past 300 in the menu, and your PC starts &lt;em>singing&lt;/em> — a high-pitched electronic zing that rises and falls with the action on screen. Search the noise and the internet splits into the same two camps every time: &lt;em>that&amp;rsquo;s coil whine, it&amp;rsquo;s totally normal, ignore it&lt;/em> — or &lt;em>return that card immediately.&lt;/em> Both answers skip the two questions that actually matter, and that&amp;rsquo;s why people either RMA a perfectly good card or spend weeks ignoring a genuine warning sign.&lt;/p>
&lt;p>The two questions worth answering, in order, are: &lt;strong>is it even coil whine?&lt;/strong> and &lt;strong>where is it coming from?&lt;/strong> Get those right and everything else — whether to worry, whether to swap it, how to quiet it down — falls out cleanly. Here&amp;rsquo;s the diagnostic the &amp;ldquo;it&amp;rsquo;s normal, move on&amp;rdquo; articles skip.&lt;/p>
&lt;p>Before the steps, the single most useful reframe — because the whole internet argument is really about &lt;em>this&lt;/em> one axis. Almost the entire range of &amp;ldquo;my PC is making a noise&amp;rdquo; is harmless. A thin sliver at the far end isn&amp;rsquo;t. Here&amp;rsquo;s where the sounds actually fall:&lt;/p>
&lt;!-- ========== SIGNATURE VISUAL A: THE COIL-WHINE SEVERITY SPECTRUM ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0f0a1e;border:1px solid rgba(255,255,255,0.07);border-radius:10px;padding:26px 22px 20px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
&lt;div style="margin-bottom:20px;">
&lt;div style="font-size:19px;font-weight:700;color:#e8e8f0;letter-spacing:-0.3px;">The &amp;ldquo;should I worry?&amp;rdquo; spectrum&lt;/div>
&lt;div style="font-size:12.5px;color:#a89ab5;margin-top:5px;line-height:1.5;">Nearly the whole range is a nuisance, not a fault. Only the far-right sliver is a real warning &amp;mdash; and that part isn't coil whine at all. Find your noise on the bar, then read its card.&lt;/div>
&lt;/div>
&lt;!-- gradient spectrum bar -->
&lt;div style="height:22px;border-radius:6px;background:linear-gradient(90deg,#5dca7a 0%,#9ad84a 34%,#e8b04a 66%,#e0653a 84%,#e05050 100%);">&lt;/div>
&lt;div style="display:flex;justify-content:space-between;margin-top:7px;font-family:ui-monospace,monospace;font-size:10px;letter-spacing:1px;">
&lt;span style="color:#5dca7a;font-weight:700;">HARMLESS &amp;middot; ~95% OF CASES&lt;/span>
&lt;span style="color:#e05050;font-weight:700;">DANGER&lt;/span>
&lt;/div>
&lt;!-- zone cards -->
&lt;div style="display:flex;gap:8px;flex-wrap:wrap;margin-top:16px;">
&lt;div style="flex:1 1 150px;min-width:0;background:rgba(93,202,122,0.07);border:1px solid rgba(93,202,122,0.3);border-top:3px solid #5dca7a;border-radius:7px;padding:12px;">
&lt;div style="font-size:12px;font-weight:700;color:#7ee0a0;">STEADY ZING&lt;/div>
&lt;div style="font-size:10px;color:#6aae82;letter-spacing:0.5px;margin-top:2px;">HARMLESS &amp;middot; DEFAULT&lt;/div>
&lt;div style="font-size:11.5px;color:#c4d8cc;margin-top:8px;line-height:1.5;">Rises with your frame rate, always been there. Won't hurt a thing. Ignore it &amp;mdash; or cap FPS to quiet it.&lt;/div>
&lt;/div>
&lt;div style="flex:1 1 150px;min-width:0;background:rgba(154,216,74,0.06);border:1px solid rgba(154,216,74,0.3);border-top:3px solid #9ad84a;border-radius:7px;padding:12px;">
&lt;div style="font-size:12px;font-weight:700;color:#b6e86a;">LOUD &amp;amp; ANNOYING&lt;/div>
&lt;div style="font-size:10px;color:#93b85a;letter-spacing:0.5px;margin-top:2px;">STILL HARMLESS&lt;/div>
&lt;div style="font-size:11.5px;color:#d2d8c4;margin-top:8px;line-height:1.5;">Bugs you, but still tracks FPS. Cap frame rate, undervolt &amp;mdash; or swap units inside the return window.&lt;/div>
&lt;/div>
&lt;div style="flex:1 1 150px;min-width:0;background:rgba(232,176,74,0.07);border:1px solid rgba(232,176,74,0.35);border-top:3px solid #e8b04a;border-radius:7px;padding:12px;">
&lt;div style="font-size:12px;font-weight:700;color:#f0c56a;">NEW PSU BUZZ + CRASHES&lt;/div>
&lt;div style="font-size:10px;color:#c99a4a;letter-spacing:0.5px;margin-top:2px;">WATCH THIS ONE&lt;/div>
&lt;div style="font-size:11.5px;color:#d8ccb4;margin-top:8px;line-height:1.5;">A &lt;em>new&lt;/em>, worsening buzz with random shutdowns can be a dying PSU, not benign whine. Test the power supply.&lt;/div>
&lt;/div>
&lt;div style="flex:1 1 150px;min-width:0;background:rgba(224,80,80,0.08);border:1px solid rgba(224,80,80,0.4);border-top:3px solid #e05050;border-radius:7px;padding:12px;">
&lt;div style="font-size:12px;font-weight:700;color:#f07a7a;">CRACKLE / POP / BURNING&lt;/div>
&lt;div style="font-size:10px;color:#c95a5a;letter-spacing:0.5px;margin-top:2px;">NOT COIL WHINE &amp;middot; STOP&lt;/div>
&lt;div style="font-size:11.5px;color:#e0c4c4;margin-top:8px;line-height:1.5;">This is arcing, not whine. Power off and unplug the PC &lt;strong style="color:#f5d0d0;">now&lt;/strong>. Don't power back on to &amp;ldquo;check.&amp;rdquo;&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:18px;padding-top:12px;border-top:1px solid rgba(255,255,255,0.06);font-size:10.5px;color:#6a5a7e;display:flex;justify-content:space-between;gap:10px;">
&lt;span>If the pitch tracks your frame counter, you're on the green end &amp;mdash; decide on noise, not hardware. Only a crackle-pop or a crash-paired buzz earns real worry.&lt;/span>
&lt;span>techfuelhq.com&lt;/span>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="step-1-is-it-actually-coil-whine">Step 1: Is it actually coil whine?&lt;/h2>
&lt;p>Coil whine has a signature, and it&amp;rsquo;s not the sound — it&amp;rsquo;s the &lt;em>behavior&lt;/em>. The noise itself is a high-pitched buzzing, squealing, chirping, or zinging; sharp and electronic rather than mechanical. But lots of PC noises are high-pitched. What sets coil whine apart is that &lt;strong>it changes with electrical load, not with temperature or fan speed.&lt;/strong>&lt;/p>
&lt;p>Run this quick sort before you assume anything:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">What you hear&lt;/th>
&lt;th scope="col">What it tracks&lt;/th>
&lt;th scope="col">Likely source&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>High-pitched zing/buzz, pitch &lt;strong>changes with frame rate&lt;/strong> (spikes in menus, shifts when you alt-tab)&lt;/td>
&lt;td>Electrical load&lt;/td>
&lt;td>&lt;strong>Coil whine&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Whoosh or hum that rises smoothly with load&lt;/td>
&lt;td>Fan RPM / temperature&lt;/td>
&lt;td>A cooling fan&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Grinding, rattling, or clicking&lt;/td>
&lt;td>Worn bearing&lt;/td>
&lt;td>A failing fan — &lt;a href="https://techfuelhq.com/articles/gpu-fans-not-spinning-2026/">see the fan-bearing test&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Gurgling or bubbling&lt;/td>
&lt;td>Coolant/air in the loop&lt;/td>
&lt;td>AIO pump&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Sharp crackle or pop&lt;/strong>, maybe a burning smell&lt;/td>
&lt;td>Arcing — &lt;strong>danger&lt;/strong>&lt;/td>
&lt;td>Power off and unplug now&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The single most reliable tell: &lt;strong>does the pitch change when the frame rate changes?&lt;/strong> Open a game menu (frame rates there are often absurdly high — hundreds or thousands of fps with nothing to render), then load into the game. If the whine spikes in the menu and settles in-game, or shifts when you alt-tab and scroll, it&amp;rsquo;s coil whine. If instead the noise climbs with temperature and fan speed, you&amp;rsquo;re chasing a fan, not a coil — and a grinding one is a worn bearing you &lt;em>should&lt;/em> deal with.&lt;/p>
&lt;p>That last row matters most. Coil whine is harmless, but a crackle-pop with a burning smell is arcing electricity, and that&amp;rsquo;s the one PC noise you never wait out.&lt;/p>
&lt;h2 id="step-2-where-is-it-coming-from--gpu-psu-or-motherboard">Step 2: Where is it coming from — GPU, PSU, or motherboard?&lt;/h2>
&lt;p>In a desktop, coil whine nearly always comes from one of three places, in this order of likelihood: &lt;strong>the GPU, then the PSU, then the motherboard&amp;rsquo;s VRM.&lt;/strong> Knowing which one changes what you do about it — and which component you&amp;rsquo;d swap.&lt;/p>
&lt;p>&lt;strong>Use load type to narrow it down:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>GPU&lt;/strong> — tracks &lt;em>frame rate and GPU load&lt;/em>. It&amp;rsquo;s loudest in high-fps scenes, menus, and loading screens. This is by far the most common source, especially on modern high-wattage cards.&lt;/li>
&lt;li>&lt;strong>PSU&lt;/strong> — tracks &lt;em>total system power draw&lt;/em>. It tends to show up under heavy combined CPU-and-GPU load, or at particular power states, rather than following your frame counter specifically.&lt;/li>
&lt;li>&lt;strong>Motherboard VRM&lt;/strong> — rarest, comes from &lt;em>around the CPU socket&lt;/em>, and follows &lt;em>CPU&lt;/em> load and voltage transitions.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>The fastest GPU test:&lt;/strong> set your monitor to 60 Hz and turn on V-Sync, or cap your FPS in the driver. If the whine drops or vanishes, it&amp;rsquo;s frame-rate-driven and the GPU is your culprit. That one test resolves the majority of cases — and it looks like this:&lt;/p>
&lt;!-- ========== SIGNATURE VISUAL B: THE ONE TEST (BEFORE / AFTER) ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0f0a1e;border:1px solid rgba(255,255,255,0.07);border-radius:10px;padding:26px 22px 20px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
&lt;div style="margin-bottom:18px;">
&lt;div style="font-size:19px;font-weight:700;color:#e8e8f0;letter-spacing:-0.3px;">The one test that settles it&lt;/div>
&lt;div style="font-size:12.5px;color:#a89ab5;margin-top:5px;line-height:1.5;">Same card, two states. Cap the frame rate and listen. If the zing follows the FPS down, it's the GPU &amp;mdash; and it's the harmless kind.&lt;/div>
&lt;/div>
&lt;div style="display:flex;gap:10px;align-items:stretch;flex-wrap:wrap;">
&lt;!-- BEFORE -->
&lt;div style="flex:1 1 200px;min-width:0;background:rgba(224,101,58,0.06);border:1px solid rgba(224,101,58,0.32);border-radius:8px;padding:15px;">
&lt;div style="font-size:10.5px;letter-spacing:1.5px;color:#e8905a;font-weight:700;">BEFORE &amp;middot; UNCAPPED&lt;/div>
&lt;div style="margin-top:10px;font-family:ui-monospace,monospace;font-size:24px;font-weight:800;color:#f0a070;">900 &lt;span style="font-size:13px;font-weight:600;color:#b98860;">fps&lt;/span>&lt;/div>
&lt;div style="margin-top:4px;font-size:11px;color:#c99a80;">in a menu with nothing to render&lt;/div>
&lt;div style="margin-top:12px;font-family:ui-monospace,monospace;font-size:13px;color:#f0a070;letter-spacing:1px;">))) ZZZINNNG )))&lt;/div>
&lt;div style="margin-top:10px;font-size:11.5px;color:#d8bcac;line-height:1.5;">The card thrashes its power delivery for frames you'll never see. Loudest whine.&lt;/div>
&lt;/div>
&lt;!-- action -->
&lt;div style="flex:0 0 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:4px;min-width:96px;">
&lt;div style="font-size:10px;letter-spacing:1px;color:#8a7a9e;text-align:center;">SET 60&amp;nbsp;Hz&lt;br>+ V-SYNC&lt;/div>
&lt;div style="color:#9ad84a;font-size:22px;font-weight:700;">&amp;rarr;&lt;/div>
&lt;/div>
&lt;!-- AFTER -->
&lt;div style="flex:1 1 200px;min-width:0;background:rgba(93,202,122,0.07);border:1px solid rgba(93,202,122,0.36);border-radius:8px;padding:15px;">
&lt;div style="font-size:10.5px;letter-spacing:1.5px;color:#6ed898;font-weight:700;">AFTER &amp;middot; CAPPED&lt;/div>
&lt;div style="margin-top:10px;font-family:ui-monospace,monospace;font-size:24px;font-weight:800;color:#7ee0a0;">60 &lt;span style="font-size:13px;font-weight:600;color:#7aae8a;">fps&lt;/span>&lt;/div>
&lt;div style="margin-top:4px;font-size:11px;color:#8ec9a0;">matched to your refresh rate&lt;/div>
&lt;div style="margin-top:12px;font-family:ui-monospace,monospace;font-size:13px;color:#7ee0a0;letter-spacing:1px;">&amp;middot; &amp;middot; &amp;middot; quiet &amp;middot; &amp;middot; &amp;middot;&lt;/div>
&lt;div style="margin-top:10px;font-size:11.5px;color:#c4d8cc;line-height:1.5;">Whine drops or vanishes &amp;rarr; &lt;strong style="color:#e8f8ee;">it's the GPU&lt;/strong>, frame-rate-driven, harmless.&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:16px;padding-top:12px;border-top:1px solid rgba(255,255,255,0.06);font-size:10.5px;color:#6a5a7e;display:flex;justify-content:space-between;gap:10px;">
&lt;span>If the noise &lt;em>ignores&lt;/em> the cap and tracks total power draw instead, it's not frame-rate-driven &amp;mdash; look at the PSU.&lt;/span>
&lt;span>techfuelhq.com&lt;/span>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>&lt;strong>To localize it physically,&lt;/strong> roll a sheet of A4 paper into a tube (or use a paper-towel roll), hold one end to your ear, and point the other at each component in turn — GPU, then PSU, then the VRM area above the CPU socket. The tube blocks surrounding noise and helps you home in. &lt;strong>One big caveat:&lt;/strong> the coils sit on a circuit board, and the board acts like a speaker cone — so the whine resonates through the whole case and can genuinely sound like it&amp;rsquo;s coming from the wrong place. Don&amp;rsquo;t fully trust your ears; confirm with the load-type behavior above.&lt;/p>
&lt;p>&lt;strong>When you truly can&amp;rsquo;t tell,&lt;/strong> the definitive method is swapping. Start with the GPU (easiest and most likely) — drop in another card and see if the noise goes with it. If it persists, try a different PSU. The motherboard is the last and hardest swap, so it&amp;rsquo;s a diagnosis of exclusion: if the whine survives both a GPU and PSU swap, the board&amp;rsquo;s VRM is what&amp;rsquo;s singing.&lt;/p>
&lt;p>&lt;strong>On a laptop, the rules bend a little.&lt;/strong> You can&amp;rsquo;t swap the GPU or PSU, so localization matters less — but laptops have one tell desktops don&amp;rsquo;t: &lt;strong>the whine often changes when you plug or unplug the charger.&lt;/strong> Because the charging circuit and the discharge-from-battery path deliver power differently, a laptop can whine only on AC, only on battery, or shift pitch between the two. If yours does that, it&amp;rsquo;s classic coil whine from the power delivery, not a fault. The fixes are the same load-smoothing ones — cap the frame rate first, then undervolt with your vendor&amp;rsquo;s utility (or a global FPS limit) — and since you can&amp;rsquo;t swap parts, the retailer return window is your main lever if it&amp;rsquo;s truly intolerable.&lt;/p>
&lt;h2 id="step-3-is-it-normal-or-the-one-warning-sign">Step 3: Is it normal, or the one warning sign?&lt;/h2>
&lt;p>Here&amp;rsquo;s the reassuring part, and it&amp;rsquo;s well established: &lt;strong>coil whine does not damage your hardware.&lt;/strong> It doesn&amp;rsquo;t hurt performance, it doesn&amp;rsquo;t shorten the component&amp;rsquo;s lifespan, and it isn&amp;rsquo;t a symptom of anything failing. It&amp;rsquo;s a physical quirk of how inductors behave under fluctuating current — annoying, harmless, and extremely common on powerful modern GPUs. If you&amp;rsquo;ve confirmed steady GPU coil whine that&amp;rsquo;s always been there and tracks your frame rate, you can genuinely stop worrying about the &lt;em>hardware&lt;/em> and decide purely on how much the &lt;em>noise&lt;/em> bothers you.&lt;/p>
&lt;p>The exceptions are specific and worth memorizing:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>New or worsening PSU buzz &lt;em>paired with crashes.&lt;/em>&lt;/strong> Occasional light coil whine from a power supply is normal, but a buzz that&amp;rsquo;s &lt;em>new&lt;/em>, getting &lt;em>louder&lt;/em>, and accompanied by random shutdowns, BSODs, or instability under load can be a power supply on its way out — not benign coil whine. That combination is worth taking seriously: &lt;a href="https://techfuelhq.com/articles/psu-failure-symptoms-2026/">the signs of a failing PSU&lt;/a> walk through how to confirm it&amp;rsquo;s the power supply and not a dying GPU or bad RAM.&lt;/li>
&lt;li>&lt;strong>A sharp crackle, pop, or sizzle — especially with a burning or electrical smell.&lt;/strong> This is &lt;em>not&lt;/em> coil whine. It&amp;rsquo;s arcing or a component letting go. Shut the PC off and unplug it from the wall immediately; don&amp;rsquo;t power it back on to &amp;ldquo;check.&amp;rdquo;&lt;/li>
&lt;/ul>
&lt;p>Everything else — the steady zing that rises with your frame counter — is the harmless kind. The question becomes how to quiet it, not whether to panic.&lt;/p>
&lt;h2 id="step-4-how-to-actually-reduce-it-and-what-to-never-do">Step 4: How to actually reduce it (and what to never do)&lt;/h2>
&lt;p>The fixes that genuinely work all do the same thing: reduce or smooth the electrical load hitting the coils. In rough order of effort-to-payoff:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Cap your frame rate.&lt;/strong> This is the big one. Uncapped frame rates — 900 fps in a menu, 400 in an old game — are the most common trigger, because the card is thrashing its power delivery to render frames you&amp;rsquo;ll never see. Turn on &lt;strong>V-Sync&lt;/strong>, enable &lt;strong>G-Sync/FreeSync&lt;/strong>, or set an FPS limit in the &lt;a href="https://www.nvidia.com/download/index.aspx" rel="noopener">NVIDIA&lt;/a> or &lt;a href="https://www.amd.com/en/support" rel="noopener">AMD&lt;/a> driver to match your monitor. Many people&amp;rsquo;s whine disappears entirely right here.&lt;/li>
&lt;li>&lt;strong>Undervolt the GPU.&lt;/strong> In &lt;a href="https://www.msi.com/Landing/afterburner/graphics-cards" rel="noopener">MSI Afterburner&lt;/a> (works on any brand), flatten the voltage/frequency curve so the card holds its clocks at a lower voltage. Less voltage means less current through the inductors and often less whine — and it lowers temperatures with little or no performance loss as a bonus. It&amp;rsquo;s the same trick that helps with &lt;a href="https://techfuelhq.com/articles/gpu-overheating-2026/">GPU overheating&lt;/a>, so it&amp;rsquo;s worth learning either way.&lt;/li>
&lt;li>&lt;strong>Consider the power supply.&lt;/strong> A cheap or aging PSU with sloppy voltage regulation can feed &amp;ldquo;dirty&amp;rdquo; power that makes whine worse across the whole system. A quality unit with tight regulation can help — though this is a bigger spend, so try the free fixes first.&lt;/li>
&lt;li>&lt;strong>Mechanical damping, carefully.&lt;/strong> Moving the PC further from your ears, closing a mesh case panel, or standing the tower on a soft surface can mask the sound. Some enthusiasts very carefully add non-conductive damping — but this is fiddly and easy to get wrong.&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>What to never do:&lt;/strong> do not apply superglue, hot glue, or nail polish directly to the coils. It&amp;rsquo;s a widely repeated bad tip — those adhesives wick under surrounding components, trap heat against parts designed to shed it, make any future repair impossible, and void the warranty; and anything actually conductive risks a dead short on top of that. BIOS clock tweaks by themselves also won&amp;rsquo;t touch coil whine — it&amp;rsquo;s a hardware characteristic, not a software setting (undervolting works because it changes power draw, not because it&amp;rsquo;s a &amp;ldquo;setting&amp;rdquo;).&lt;/p>
&lt;h2 id="the-rma-reality">The RMA reality&lt;/h2>
&lt;p>Almost every manufacturer treats coil whine as a normal characteristic, not a defect — so a &lt;strong>warranty RMA for coil whine alone usually gets rejected.&lt;/strong> Your real lever is the &lt;strong>retailer&amp;rsquo;s return window.&lt;/strong> Because whine varies from unit to unit even within the same exact model, swapping a whiny card for another copy inside a no-questions-asked return period (Amazon, Best Buy, Micro Center) is a legitimate gamble — the next one may be dead silent. Outside that window, a warranty claim generally only lands if the whine comes bundled with a real fault like crashing or &lt;a href="https://techfuelhq.com/articles/gpu-overheating-2026/">artifacting&lt;/a>. If you&amp;rsquo;re on a brand-new part and the whine is mild, it&amp;rsquo;s also reasonable to just live with it for a few weeks first — sometimes it settles down on its own.&lt;/p>
&lt;h2 id="the-quick-version">The quick version&lt;/h2>
&lt;ol>
&lt;li>&lt;strong>Confirm it&amp;rsquo;s coil whine, not a fan or arcing.&lt;/strong> Coil whine&amp;rsquo;s pitch changes with &lt;em>frame rate&lt;/em>; fan noise tracks &lt;em>temperature and RPM&lt;/em> (grinding = worn bearing); a crackle-pop with a burning smell is &lt;em>arcing — power off now.&lt;/em>&lt;/li>
&lt;li>&lt;strong>Find the source by load type.&lt;/strong> Follows FPS → GPU (set 60 Hz + V-Sync to confirm). Follows total power draw → PSU. Around the CPU socket, follows CPU load → motherboard VRM. Use a paper tube to localize, but remember the case resonates.&lt;/li>
&lt;li>&lt;strong>Decide if it matters.&lt;/strong> Steady GPU whine that tracks frame rate is harmless — it won&amp;rsquo;t damage anything. New PSU buzz &lt;em>with crashes&lt;/em> is a different story: check for &lt;a href="https://techfuelhq.com/articles/psu-failure-symptoms-2026/">PSU failure&lt;/a>.&lt;/li>
&lt;li>&lt;strong>Reduce it the right way.&lt;/strong> Cap FPS (V-Sync/G-Sync/FreeSync), undervolt in Afterburner, quality PSU. Never glue the coils. RMA rarely works for whine alone — use the retailer&amp;rsquo;s return window and roll the dice on another unit.&lt;/li>
&lt;/ol>
&lt;p>Sort &lt;em>is it coil whine&lt;/em> and &lt;em>where from&lt;/em> before you do anything, and you&amp;rsquo;ll stop returning cards that were fine — and stop tuning out a power supply that was actually trying to warn you.&lt;/p></description></item><item><title>CPU Fan Not Spinning? Boot vs 'CPU Fan Error' Splits the Fix (2026)</title><link>https://techfuelhq.com/articles/cpu-fan-not-spinning-2026/</link><pubDate>Fri, 10 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/cpu-fan-not-spinning-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-07-10 · ~8 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence what gets recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;p>A still CPU fan sets off two opposite reactions: &lt;em>the fan&amp;rsquo;s dead, my CPU is about to fry&lt;/em> — or &lt;em>relax, that&amp;rsquo;s just a silent fan profile, it&amp;rsquo;s fine.&lt;/em> Both happen, and picking the wrong one is expensive either way. Panic and you replace a perfectly good cooler; shrug it off on a genuinely dead fan and the CPU cooks itself in minutes.&lt;/p>
&lt;p>&amp;ldquo;CPU fan not spinning&amp;rdquo; is really three different problems wearing the same description, and almost every guide skips the one question that tells them apart. Answer it first and the rest of the fix falls out.&lt;/p>
&lt;h2 id="step-1-does-the-pc-boot-or-stop-on-a-cpu-fan-error">Step 1: Does the PC boot, or stop on a &amp;ldquo;CPU Fan Error&amp;rdquo;?&lt;/h2>
&lt;p>Before you open the case, notice &lt;strong>how far the PC gets&lt;/strong>. This single observation splits the whole problem into three lanes:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>It halts at a &amp;ldquo;CPU Fan Error&amp;rdquo; / &amp;ldquo;CPU Fan Speed Error — press F1&amp;rdquo;&lt;/strong> and won&amp;rsquo;t continue. This is the most common real trigger, and it&amp;rsquo;s almost never a dead motor. The motherboard is running a safety check and refusing to boot — jump to Step 2.&lt;/li>
&lt;li>&lt;strong>It boots all the way into Windows but the fan sits still.&lt;/strong> Now it&amp;rsquo;s either a normal fan-stop profile or a fan that&amp;rsquo;s quietly died. Step 3 and Step 4 sort those.&lt;/li>
&lt;li>&lt;strong>The fan only starts when you nudge it&lt;/strong> with a finger (or a cable tie at boot). That&amp;rsquo;s a bearing on its way out — Step 4.&lt;/li>
&lt;/ul>
&lt;p>Notice what &lt;em>isn&amp;rsquo;t&lt;/em> here: if the fan is off &lt;strong>and you get no picture at all&lt;/strong>, that&amp;rsquo;s usually not a fan problem — the system isn&amp;rsquo;t POSTing, and the cause is more often power or a seating issue. That case has its own walk-through in &lt;a href="https://techfuelhq.com/articles/pc-turns-on-but-no-display-2026/">PC turns on but no display&lt;/a>.&lt;/p>
&lt;h2 id="step-2-the-cpu-fan-error--what-it-actually-checks">Step 2: The &amp;ldquo;CPU Fan Error&amp;rdquo; — what it actually checks&lt;/h2>
&lt;p>Here&amp;rsquo;s the part the checklists get wrong: the motherboard &lt;strong>isn&amp;rsquo;t checking whether your fan spins.&lt;/strong> It&amp;rsquo;s checking for an &lt;em>RPM signal&lt;/em> on the header labeled &lt;code>CPU_FAN&lt;/code>, and if it reads zero at boot it stops and throws the error. That safety feature exists so nobody powers on a CPU with no cooling attached. But it fires on several setups where the cooling is working perfectly:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>The fan is on the wrong header.&lt;/strong> CPU cooler fans must go on &lt;code>CPU_FAN&lt;/code>, not &lt;code>SYS_FAN&lt;/code> / &lt;code>CHA_FAN&lt;/code> (case-fan headers). The board sees &lt;code>CPU_FAN&lt;/code> empty and panics even though your fan is spinning happily on a case header.&lt;/li>
&lt;li>&lt;strong>A very quiet fan spins below the alarm threshold.&lt;/strong> Low-noise fans (Noctua, be quiet!, and similar) can idle under ~300 RPM — below the minimum the board watches for — so it reports &amp;ldquo;no fan&amp;rdquo; despite the blades turning.&lt;/li>
&lt;li>&lt;strong>An AIO pump is plugged into &lt;code>CPU_FAN&lt;/code>&lt;/strong> and reports 0 RPM by design (more on that in Step 3).&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Fix, in order:&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>Power down and confirm the CPU cooler&amp;rsquo;s fan cable is seated on the &lt;code>CPU_FAN&lt;/code> header specifically, pushed in until it clicks.&lt;/li>
&lt;li>Reboot into BIOS/UEFI and open the fan section (ASUS Q-Fan Configuration, MSI Hardware Monitor, Gigabyte Smart Fan). Read the live CPU fan RPM. If it shows a real number, the fan is fine and the alarm threshold is just set too high.&lt;/li>
&lt;li>Lower the &lt;strong>&amp;ldquo;CPU Fan Speed Low Limit&amp;rdquo;&lt;/strong> to around &lt;strong>200 RPM&lt;/strong>, or — if and only if you&amp;rsquo;ve &lt;em>physically confirmed the fan or pump is running&lt;/em> — set &lt;code>CPU_FAN&lt;/code> monitoring to &lt;strong>&amp;ldquo;Ignore.&amp;rdquo;&lt;/strong>&lt;/li>
&lt;/ol>
&lt;p>That last step carries a real warning: &lt;strong>never set it to Ignore to make an error go away on a cooler you haven&amp;rsquo;t verified.&lt;/strong> The alarm is the only thing standing between a genuinely dead fan and a thermal-shutdown loop. Silence it only once you&amp;rsquo;ve seen the fan turn or the pump move coolant.&lt;/p>
&lt;h2 id="step-3-the-aio-trap--pump-header-vs-fan-header">Step 3: The AIO trap — pump header vs fan header&lt;/h2>
&lt;p>Liquid coolers cause more false &amp;ldquo;dead fan&amp;rdquo; scares than anything else, because an AIO has &lt;strong>two&lt;/strong> things to plug in and they don&amp;rsquo;t behave the same.&lt;/p>
&lt;ul>
&lt;li>The &lt;strong>pump&lt;/strong> should go on the &lt;code>AIO_PUMP&lt;/code> (or &lt;code>W_PUMP&lt;/code>) header, which runs it at full, constant power so coolant always flows.&lt;/li>
&lt;li>The &lt;strong>radiator fans&lt;/strong> go on &lt;code>CPU_FAN&lt;/code> (and &lt;code>CPU_OPT&lt;/code> for the second fan).&lt;/li>
&lt;/ul>
&lt;p>Two things follow from that. First, if your board &lt;em>has&lt;/em> an &lt;code>AIO_PUMP&lt;/code> header and the pump is on it, then &lt;code>CPU_FAN&lt;/code> is driving the radiator fans — and if those fans are on a quiet &amp;ldquo;fan stop&amp;rdquo; curve, &lt;strong>they legitimately sit still at idle&lt;/strong> and only spin up when the coolant warms. That&amp;rsquo;s a working AIO, not a broken one. Second, if you plugged the &lt;strong>pump&lt;/strong> into &lt;code>CPU_FAN&lt;/code> (common on boards with no dedicated pump header — and perfectly valid), the pump can report &lt;strong>0 RPM&lt;/strong> or wildly inconsistent values even while it&amp;rsquo;s pumping fine, which trips the same CPU Fan Error from Step 2.&lt;/p>
&lt;p>The tell for a healthy-but-quiet AIO: the tubes and radiator warm up under load, and the fans engage as the temperature climbs. If the pump is on &lt;code>CPU_FAN&lt;/code> and you&amp;rsquo;re chasing a phantom error, move the pump to &lt;code>AIO_PUMP&lt;/code> (if the board has one) and put the radiator fans on &lt;code>CPU_FAN&lt;/code> so the board watches an actual fan. A dead pump is the real emergency here — feel for coolant movement or a faint pump vibration, because a stopped pump overheats the CPU in seconds no matter what the fans do. When idle silence turns into a genuine thermal problem, work through &lt;a href="https://techfuelhq.com/articles/cpu-overheating-2026/">CPU overheating&lt;/a> next.&lt;/p>
&lt;h2 id="step-4-is-the-fan-actually-dead-three-checks">Step 4: Is the fan actually dead? Three checks&lt;/h2>
&lt;p>If the PC boots and a normal always-on &lt;strong>air cooler&lt;/strong> fan is sitting still — or a fan only turns when nudged — treat it as a hardware fault and confirm it:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Spin it by hand&lt;/strong> (PC fully off). Gently flick the blades. A healthy fan coasts freely for a moment; a failing one is &lt;strong>stiff, grinds, or won&amp;rsquo;t turn&lt;/strong> — that stiff-to-the-finger feel is the single most reliable sign the bearing is gone. This is exactly the diagnostic Tom&amp;rsquo;s Hardware regulars point to first.&lt;/li>
&lt;li>&lt;strong>Move the header.&lt;/strong> Plug the fan into a different fan header, or plug a known-good fan into &lt;code>CPU_FAN&lt;/code>. If a good fan spins on that header and the suspect fan stays dead everywhere, the fan is the problem, not the board.&lt;/li>
&lt;li>&lt;strong>Read the RPM in BIOS.&lt;/strong> A fan that&amp;rsquo;s stiff by hand &lt;em>and&lt;/em> reads 0 RPM on a header that drives other fans fine is confirmed dead.&lt;/li>
&lt;/ol>
&lt;p>Air coolers are the clear case: they don&amp;rsquo;t have a zero-RPM idle mode, so a still air-cooler fan is a real fault, full stop. Fan-stop profiles only apply to some AIO radiator fans and a few case setups. If you&amp;rsquo;re diagnosing the &lt;em>graphics card&amp;rsquo;s&lt;/em> fans instead of the CPU cooler&amp;rsquo;s, that&amp;rsquo;s a different animal with its own idle behavior — see &lt;a href="https://techfuelhq.com/articles/gpu-fans-not-spinning-2026/">GPU fans not spinning&lt;/a>.&lt;/p>
&lt;h2 id="step-5-if-its-dead-replace-it--dont-run-it">Step 5: If it&amp;rsquo;s dead, replace it — don&amp;rsquo;t run it&lt;/h2>
&lt;p>A CPU with no working cooler fan is not something to limp along on. Unlike a GPU, which can idle safely with its fans off, a CPU heat-soaks almost instantly under load, throttles hard, and slams into thermal shutdown to save itself — and repeated overheating shortens its life. If the fan is confirmed dead, stop demanding work of the PC until it&amp;rsquo;s fixed.&lt;/p>
&lt;p>Your options depend on the cooler. If it&amp;rsquo;s a standard tower cooler with a common 120 mm or 92 mm fan, you can usually just replace the &lt;strong>fan&lt;/strong> (a &lt;a href="https://www.amazon.com/s?k=120mm&amp;#43;pwm&amp;#43;cpu&amp;#43;cooler&amp;#43;fan&amp;amp;tag=techfuelhq-20" rel="nofollow sponsored noopener">120 mm PWM cooling fan&lt;/a> is inexpensive and clips onto the existing heatsink). If the whole cooler is old, weak, or it&amp;rsquo;s a failed AIO pump, replace the &lt;a href="https://www.amazon.com/s?k=cpu&amp;#43;air&amp;#43;cooler&amp;amp;tag=techfuelhq-20" rel="nofollow sponsored noopener">CPU cooler&lt;/a> outright — an air tower with an always-on fan is the simplest, most reliable fix and removes the pump as a future failure point. Either way, re-seat with fresh thermal paste and confirm the new fan reads a real RPM in BIOS before you trust it.&lt;/p>
&lt;p>If the CPU had already been running hot before the fan quit, don&amp;rsquo;t assume shutting it down undid the damage — read &lt;a href="https://techfuelhq.com/articles/cpu-overheating-2026/">CPU overheating&lt;/a> to confirm temps are back in a safe range, and if the machine had started power-cycling under the heat, &lt;a href="https://techfuelhq.com/articles/pc-keeps-restarting-2026/">PC keeps restarting&lt;/a> covers the thermal-shutdown loop.&lt;/p>
&lt;h2 id="the-bottom-line">The bottom line&lt;/h2>
&lt;p>The fastest way to fix a still CPU fan is to stop treating &amp;ldquo;not spinning&amp;rdquo; as one problem. &lt;strong>How far the PC boots&lt;/strong> tells you which of three it is: a &amp;ldquo;CPU Fan Error&amp;rdquo; halt is almost always a header or RPM-threshold issue, not a dead motor; a fan that idles on an AIO&amp;rsquo;s quiet profile is usually a working cooler; and only a stiff, silent fan on an always-on air cooler is the genuine hardware failure. Sort that first, confirm with the spin-by-hand and BIOS-RPM checks, and you&amp;rsquo;ll either clear a phantom error in two minutes or replace a $12 fan instead of a $200 CPU.&lt;/p></description></item><item><title>GPU Artifacts? Sort Software vs Dying VRAM Before You RMA (2026)</title><link>https://techfuelhq.com/articles/gpu-artifacts-2026/</link><pubDate>Fri, 10 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/gpu-artifacts-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-07-10 · ~11 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence what gets recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;p>The screen fills with colored lines, snow, or textures stretching into garbage, and the top of every search result says the same two things: &lt;em>it&amp;rsquo;s dying, RMA it&lt;/em> — or &lt;em>just reinstall your drivers&lt;/em>. Both are sometimes right. But &amp;ldquo;GPU artifacting&amp;rdquo; is really a handful of very different problems wearing one ugly symptom, and if you reach for the wrong one you&amp;rsquo;ll either bin a card that a five-minute fix would have saved, or keep reinstalling drivers on a card that&amp;rsquo;s physically failing.&lt;/p>
&lt;p>Two questions sort almost the entire thing before you touch a setting: &lt;strong>does the glitch show up in a screenshot, and does it stop when you back off the clocks?&lt;/strong> Answer those and you&amp;rsquo;ve already thrown out most of the advice on the internet.&lt;/p>
&lt;p>But first, the question people actually type into the search bar: &lt;em>what am I even looking at?&lt;/em> Artifacts come in a handful of recognizable shapes, and the shape tells you which lane to start in — the cable, the driver, the heat, a rendering setting, or the silicon itself. Here&amp;rsquo;s the field guide.&lt;/p>
&lt;!-- ========== SIGNATURE VISUAL A: ARTIFACT-TYPE SPECIMEN GALLERY ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0a0f14;border:1px solid rgba(255,255,255,0.07);border-radius:10px;padding:26px 22px 20px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
&lt;div style="margin-bottom:6px;">
&lt;div style="font-size:19px;font-weight:700;color:#eef3f9;letter-spacing:-0.3px;">What kind of artifact are you seeing?&lt;/div>
&lt;div style="font-size:12.5px;color:#93a3b6;margin-top:5px;line-height:1.5;">Seven shapes, and the colored tag on each says which lane to start in. The look &lt;em>narrows&lt;/em> it; the two tests &amp;mdash; does it capture, does backing off the clocks stop it &amp;mdash; tell you for sure.&lt;/div>
&lt;/div>
&lt;div style="display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin-top:16px;">
&lt;div style="min-width:0;">
&lt;div style="position:relative;height:84px;border-radius:6px;overflow:hidden;background:linear-gradient(160deg,#1a2440 0%,#0f1830 55%,#243040 100%);">
&lt;div style="position:absolute;inset:0;background:repeating-linear-gradient(90deg,transparent 0 9px,#ff2e6e 9px 11px,transparent 11px 21px,#19e6c0 21px 22px,transparent 22px 33px,#ffd23b 33px 35px,transparent 35px 50px);mix-blend-mode:screen;opacity:.9;">&lt;/div>
&lt;div style="position:absolute;left:0;right:0;top:46%;height:6px;background:linear-gradient(90deg,#ff2e6e,#19e6c0);opacity:.5;transform:translateX(6px);">&lt;/div>
&lt;/div>
&lt;div style="font-size:12px;font-weight:700;color:#e8edf5;margin-top:8px;">Colored lines &amp;amp; streaks&lt;/div>
&lt;div style="font-size:10.5px;color:#9fb0c4;line-height:1.45;margin-top:2px;">Bright bars darting across the screen.&lt;/div>
&lt;div style="display:inline-block;margin-top:6px;font-family:ui-monospace,monospace;font-size:9px;letter-spacing:0.4px;font-weight:700;color:#6bb6ff;border:1px solid rgba(107,182,255,0.4);border-radius:4px;padding:2px 6px;">START: DISPLAY PATH&lt;/div>
&lt;/div>
&lt;div style="min-width:0;">
&lt;div style="position:relative;height:84px;border-radius:6px;overflow:hidden;background:linear-gradient(160deg,#1a2440 0%,#0f1830 55%,#243040 100%);">
&lt;div style="position:absolute;inset:0;background-image:radial-gradient(#fff 0.6px,transparent 1.1px),radial-gradient(#ff5c8a 0.6px,transparent 1.1px),radial-gradient(#5cff9d 0.6px,transparent 1.1px),radial-gradient(#5cc4ff 0.6px,transparent 1.1px);background-size:5px 5px,7px 7px,6px 9px,8px 6px;background-position:0 0,2px 3px,4px 1px,1px 4px;opacity:.9;">&lt;/div>
&lt;/div>
&lt;div style="font-size:12px;font-weight:700;color:#e8edf5;margin-top:8px;">Snow &amp;amp; colored dots&lt;/div>
&lt;div style="font-size:10.5px;color:#9fb0c4;line-height:1.45;margin-top:2px;">Scattered speckle, like TV static.&lt;/div>
&lt;div style="display:inline-block;margin-top:6px;font-family:ui-monospace,monospace;font-size:9px;letter-spacing:0.4px;font-weight:700;color:#f07a7a;border:1px solid rgba(240,122,122,0.4);border-radius:4px;padding:2px 6px;">START: HARDWARE&lt;/div>
&lt;/div>
&lt;div style="min-width:0;">
&lt;div style="position:relative;height:84px;border-radius:6px;overflow:hidden;background:linear-gradient(160deg,#1a2440 0%,#0f1830 55%,#243040 100%);">
&lt;div style="position:absolute;inset:0;background:linear-gradient(90deg,#e5503a 0 34%,#3a7fe5 34% 67%,#8b3ae5 67% 100%);opacity:.8;">&lt;/div>
&lt;div style="position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent 0 12px,rgba(0,0,0,.4) 12px 13px),repeating-linear-gradient(90deg,transparent 0 12px,rgba(0,0,0,.4) 12px 13px);">&lt;/div>
&lt;div style="position:absolute;left:26px;top:12px;width:24px;height:24px;background:#2fe58b;opacity:.85;">&lt;/div>
&lt;div style="position:absolute;left:64px;top:48px;width:12px;height:12px;background:#e5d23a;opacity:.85;">&lt;/div>
&lt;/div>
&lt;div style="font-size:12px;font-weight:700;color:#e8edf5;margin-top:8px;">Blocky pixelation&lt;/div>
&lt;div style="font-size:10.5px;color:#9fb0c4;line-height:1.45;margin-top:2px;">Mismatched corrupted chunks.&lt;/div>
&lt;div style="display:inline-block;margin-top:6px;font-family:ui-monospace,monospace;font-size:9px;letter-spacing:0.4px;font-weight:700;color:#f07a7a;border:1px solid rgba(240,122,122,0.4);border-radius:4px;padding:2px 6px;">START: HARDWARE&lt;/div>
&lt;/div>
&lt;div style="min-width:0;">
&lt;div style="position:relative;height:84px;border-radius:6px;overflow:hidden;background:linear-gradient(160deg,#1a2440 0%,#0f1830 55%,#243040 100%);">
&lt;div style="position:absolute;inset:-20%;background:repeating-linear-gradient(115deg,#2b3a5c 0 7px,#7a4b6b 7px 14px,#4b7a6b 14px 20px,#7a6b4b 20px 28px);filter:blur(0.5px);transform:skewX(-14deg) scale(1.25);">&lt;/div>
&lt;/div>
&lt;div style="font-size:12px;font-weight:700;color:#e8edf5;margin-top:8px;">Garbled textures&lt;/div>
&lt;div style="font-size:10.5px;color:#9fb0c4;line-height:1.45;margin-top:2px;">Stretched, smeared surfaces.&lt;/div>
&lt;div style="display:inline-block;margin-top:6px;font-family:ui-monospace,monospace;font-size:9px;letter-spacing:0.4px;font-weight:700;color:#7ee0a0;border:1px solid rgba(126,224,160,0.4);border-radius:4px;padding:2px 6px;">START: SOFTWARE&lt;/div>
&lt;/div>
&lt;div style="min-width:0;">
&lt;div style="position:relative;height:84px;border-radius:6px;overflow:hidden;background:linear-gradient(160deg,#1a2440 0%,#0f1830 55%,#243040 100%);">
&lt;div style="position:absolute;left:16%;top:34%;width:34px;height:34px;background:#38e0b0;clip-path:polygon(0 100%,50% 0,100% 100%);transform:rotate(16deg);opacity:.92;">&lt;/div>
&lt;div style="position:absolute;left:48%;top:18%;width:26px;height:42px;background:#ff5cc0;clip-path:polygon(0 0,100% 55%,20% 100%);transform:rotate(-10deg);opacity:.9;">&lt;/div>
&lt;div style="position:absolute;left:66%;top:50%;width:30px;height:22px;background:#5cc4ff;clip-path:polygon(0 50%,100% 0,80% 100%);opacity:.9;">&lt;/div>
&lt;/div>
&lt;div style="font-size:12px;font-weight:700;color:#e8edf5;margin-top:8px;">Misshapen polygons&lt;/div>
&lt;div style="font-size:10.5px;color:#9fb0c4;line-height:1.45;margin-top:2px;">Triangles shooting off geometry.&lt;/div>
&lt;div style="display:inline-block;margin-top:6px;font-family:ui-monospace,monospace;font-size:9px;letter-spacing:0.4px;font-weight:700;color:#f07a7a;border:1px solid rgba(240,122,122,0.4);border-radius:4px;padding:2px 6px;">START: HARDWARE&lt;/div>
&lt;/div>
&lt;div style="min-width:0;">
&lt;div style="position:relative;height:84px;border-radius:6px;overflow:hidden;background:linear-gradient(160deg,#1a2440 0%,#0f1830 55%,#243040 100%);">
&lt;div style="position:absolute;inset:0;background:linear-gradient(90deg,rgba(255,0,160,.55),rgba(0,255,120,.4));mix-blend-mode:hard-light;">&lt;/div>
&lt;div style="position:absolute;inset:0;background:linear-gradient(0deg,rgba(0,120,255,.35),transparent);">&lt;/div>
&lt;/div>
&lt;div style="font-size:12px;font-weight:700;color:#e8edf5;margin-top:8px;">Color-shift tint&lt;/div>
&lt;div style="font-size:10.5px;color:#9fb0c4;line-height:1.45;margin-top:2px;">Whole screen the wrong hue.&lt;/div>
&lt;div style="display:inline-block;margin-top:6px;font-family:ui-monospace,monospace;font-size:9px;letter-spacing:0.4px;font-weight:700;color:#6bb6ff;border:1px solid rgba(107,182,255,0.4);border-radius:4px;padding:2px 6px;">START: DISPLAY PATH&lt;/div>
&lt;/div>
&lt;div style="min-width:0;">
&lt;div style="position:relative;height:84px;border-radius:6px;overflow:hidden;background:linear-gradient(160deg,#1a2440 0%,#0f1830 55%,#243040 100%);">
&lt;div style="position:absolute;top:12px;left:20px;right:20px;height:4px;background:linear-gradient(90deg,transparent,#8fd0ff);opacity:.5;">&lt;/div>
&lt;div style="position:absolute;top:40px;left:26px;width:22px;height:22px;border-radius:50%;background:#ffd23b;opacity:.22;">&lt;/div>
&lt;div style="position:absolute;top:40px;left:44px;width:22px;height:22px;border-radius:50%;background:#ffd23b;opacity:.5;">&lt;/div>
&lt;div style="position:absolute;top:40px;left:62px;width:22px;height:22px;border-radius:50%;background:#ffe98c;">&lt;/div>
&lt;/div>
&lt;div style="font-size:12px;font-weight:700;color:#e8edf5;margin-top:8px;">Ghosting / afterimages&lt;/div>
&lt;div style="font-size:10.5px;color:#9fb0c4;line-height:1.45;margin-top:2px;">Trails behind moving objects.&lt;/div>
&lt;div style="display:inline-block;margin-top:6px;font-family:ui-monospace,monospace;font-size:9px;letter-spacing:0.4px;font-weight:700;color:#b98cff;border:1px solid rgba(185,140,255,0.4);border-radius:4px;padding:2px 6px;">NOT A FAULT&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;gap:12px;margin-top:16px;padding-top:14px;border-top:1px solid rgba(255,255,255,0.07);font-family:ui-monospace,monospace;font-size:9.5px;font-weight:700;letter-spacing:0.3px;">
&lt;span style="color:#7ee0a0;">&amp;#9632; SOFTWARE = free fix&lt;/span>
&lt;span style="color:#b98cff;">&amp;#9632; RENDER FEATURE = not a fault&lt;/span>
&lt;span style="color:#6bb6ff;">&amp;#9632; DISPLAY PATH = cable / monitor&lt;/span>
&lt;span style="color:#f07a7a;">&amp;#9632; HARDWARE = the card itself&lt;/span>
&lt;/div>
&lt;div style="margin-top:12px;padding-top:12px;border-top:1px solid rgba(255,255,255,0.06);font-size:10.5px;color:#5f7080;display:flex;justify-content:space-between;gap:10px;">
&lt;span>&amp;ldquo;Start&amp;rdquo; is where the odds point, not a verdict &amp;mdash; heat can trigger any of these, but only under load. If the glitch vanishes when the card idles and cools, it&amp;rsquo;s thermal, not the look.&lt;/span>
&lt;span>techfuelhq.com&lt;/span>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="step-1-the-60-second-test--is-it-even-the-gpu">Step 1: The 60-second test — is it even the GPU?&lt;/h2>
&lt;p>Artifacts you see on the monitor can be born in two completely different places: on the &lt;strong>render side&lt;/strong> (the GPU rendered a broken frame) or on the &lt;strong>display path&lt;/strong> (the GPU rendered a fine frame and it got corrupted on the way to the panel). One test splits them.&lt;/p>
&lt;p>&lt;strong>Take a screenshot while the artifacts are on screen&lt;/strong> — or better, record a couple of minutes with &lt;a href="https://obsproject.com/" rel="noopener">OBS Studio&lt;/a> — then open the file on your phone or another PC. Screen capture grabs the frame &lt;em>before&lt;/em> it leaves the graphics card:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">What the capture shows&lt;/th>
&lt;th scope="col">Where the problem lives&lt;/th>
&lt;th scope="col">Where to go&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Artifacts appear in the screenshot/recording, same as on screen&lt;/td>
&lt;td>&lt;strong>Render side&lt;/strong> — GPU, VRAM, driver, or game&lt;/td>
&lt;td>Steps 2–5&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Capture is clean; only the monitor looks glitchy&lt;/td>
&lt;td>&lt;strong>Display path&lt;/strong> — cable, port/adapter, refresh rate, or monitor&lt;/td>
&lt;td>Step 6&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>A clean capture with a glitchy screen is a &lt;em>good&lt;/em> result — it usually means a bad DisplayPort/HDMI cable, a flaky adapter, an over-aggressive refresh rate, or a failing monitor, none of which require a new graphics card. If the glitch is specifically &lt;strong>lines&lt;/strong> rather than sparkles or blocks, our guide on &lt;a href="https://techfuelhq.com/articles/lines-on-monitor-screen-2026/">lines on a monitor — cable, GPU, or dying panel&lt;/a> has the one-button OSD test that isolates the display side in under a minute. (Some VRAM faults won&amp;rsquo;t always capture, so a clean shot isn&amp;rsquo;t an absolute guarantee — but a captured artifact almost always means the card.)&lt;/p>
&lt;p>Then note &lt;strong>where&lt;/strong> the artifacts appear, because that narrows it further:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Only in one game&lt;/strong> → most likely that game&amp;rsquo;s engine or a corrupted &lt;strong>shader cache&lt;/strong>, not your hardware.&lt;/li>
&lt;li>&lt;strong>In every game, but the desktop is clean&lt;/strong> → driver, heat, overclock, or VRAM under load.&lt;/li>
&lt;li>&lt;strong>At the Windows desktop, or even in the BIOS/UEFI screen&lt;/strong> → this is the serious one. Desktop-level artifacting that isn&amp;rsquo;t tied to a 3D load points hard at failing hardware.&lt;/li>
&lt;/ul>
&lt;h2 id="the-2026-curveball-ghosting-and-afterimages-that-arent-a-dying-card">The 2026 curveball: ghosting and afterimages that aren&amp;rsquo;t a dying card&lt;/h2>
&lt;p>Before you walk the hardware ladder, rule out the &amp;ldquo;artifact&amp;rdquo; that panics the most people in 2026 and almost never means a failing card: &lt;strong>ghosting&lt;/strong> — faint trailing &lt;em>afterimages&lt;/em> or smears behind moving objects, lights, and highlights. This is usually not your GPU at all. It&amp;rsquo;s a side effect of how modern games render, and it&amp;rsquo;s the single most common &amp;ldquo;is my card cooked?&amp;rdquo; false alarm on r/pcmasterrace and r/nvidia right now.&lt;/p>
&lt;p>Three rendering features blend information across frames, and that blending is exactly what you see trailing:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>DLSS / FSR upscaling.&lt;/strong> The game renders at a lower resolution and reconstructs the rest; ghosting gets &lt;em>worse&lt;/em> the more aggressive the preset (Performance trails more than Quality) and at lower output resolutions.&lt;/li>
&lt;li>&lt;strong>Frame Generation.&lt;/strong> Inserted frames can smear on fast motion and around the HUD — the more frames it&amp;rsquo;s generating, the more visible.&lt;/li>
&lt;li>&lt;strong>TAA (temporal anti-aliasing).&lt;/strong> It blends and jitters frames to smooth jagged edges, and that blend smears during fast movement. It leans on frame data, so it looks worse at 1080p than at 1440p and up.&lt;/li>
&lt;/ul>
&lt;p>The tell is dead simple, and it follows the same Step-1 logic: &lt;strong>the trailing appears only in games with these features on, and vanishes the moment you switch to DLAA or native resolution, raise the DLSS preset, or turn Frame Generation off.&lt;/strong> If your game supports it, DLAA gives you NVIDIA&amp;rsquo;s anti-aliasing without the upscaling and usually kills the ghosting outright.&lt;/p>
&lt;p>One lookalike is &lt;em>not&lt;/em> render-side: &lt;strong>monitor overdrive set too high&lt;/strong> also trails. The screenshot test separates them — render-side ghosting shows up in a screen recording, but overdrive ghosting does &lt;strong>not&lt;/strong> (it happens on the panel, after the frame has already left the card), so it only appears when you point a phone camera at the screen. Drop the monitor&amp;rsquo;s overdrive / response-time setting a notch and it&amp;rsquo;s gone. Either way, none of this is a dying GPU: real VRAM or die failure looks like the lines, blocks, snow, and broken geometry in the gallery above, not soft motion trails.&lt;/p>
&lt;h2 id="step-2-rule-out-software-first--its-free">Step 2: Rule out software first — it&amp;rsquo;s free&lt;/h2>
&lt;p>Before you spend a cent, clear the causes that cost nothing. In order:&lt;/p>
&lt;p>&lt;strong>Reset any overclock.&lt;/strong> If you&amp;rsquo;ve touched core clock, memory clock, or voltage in MSI Afterburner or your card&amp;rsquo;s software, set everything back to default (or hit the reset button). An unstable overclock is one of the most common artifact sources, and it&amp;rsquo;s invisible until you undo it. If the artifacts vanish at stock, that was your answer.&lt;/p>
&lt;p>&lt;strong>Do a clean driver reinstall with DDU.&lt;/strong> A corrupted or half-installed driver produces artifacts that look exactly like hardware failure. Download the latest driver from &lt;a href="https://www.nvidia.com/download/index.aspx" rel="noopener">NVIDIA&lt;/a>, &lt;a href="https://www.amd.com/en/support" rel="noopener">AMD&lt;/a>, or Intel first, then run &lt;a href="https://www.wagnardsoft.com/" rel="noopener">Display Driver Uninstaller (DDU)&lt;/a> in Windows Safe Mode to wipe the old driver completely, reboot, and install clean. This single step resolves a large share of &amp;ldquo;sudden&amp;rdquo; artifacting.&lt;/p>
&lt;p>&lt;strong>Clear the shader cache&lt;/strong> if it&amp;rsquo;s one specific game. Delete the game&amp;rsquo;s shader cache (Steam: right-click the game → Properties → Installed Files, or clear the driver&amp;rsquo;s cache in the NVIDIA/AMD control panel). A broken cache renders corrupted geometry in one title while everything else is fine.&lt;/p>
&lt;p>If artifacts survive all three, the odds swing toward hardware — but there are still two free things to check before you write the card off.&lt;/p>
&lt;h2 id="step-3-check-the-temperature">Step 3: Check the temperature&lt;/h2>
&lt;p>Install &lt;a href="https://www.hwinfo.com/" rel="noopener">HWiNFO&lt;/a> and watch the GPU temperatures (and the separate &lt;strong>memory junction / VRAM temp&lt;/strong> on cards that report it) while the artifacts appear. If the card is running hot and the glitches show up &lt;strong>under load but vanish when it idles and cools&lt;/strong>, you&amp;rsquo;re looking at thermal-driven artifacting, not dead silicon. Not sure whether your card is actually running hot or just showing normal load temps? Check core vs hotspot first — see &lt;a href="https://techfuelhq.com/articles/gpu-overheating-2026/">Is Your GPU Really Overheating?&lt;/a>&lt;/p>
&lt;p>The fixes are physical and cheap: blow the dust out of the heatsink and fans with a can of &lt;a href="https://www.amazon.com/s?k=compressed&amp;#43;air&amp;#43;duster&amp;amp;tag=techfuelhq-20" rel="nofollow sponsored noopener">compressed air&lt;/a>, confirm every fan actually spins (if one is dead or none spin under load, see &lt;a href="https://techfuelhq.com/articles/gpu-fans-not-spinning-2026/">GPU Fans Not Spinning&lt;/a>), and improve case airflow. On an older card whose thermal paste has dried out, a &lt;a href="https://www.amazon.com/s?k=thermal&amp;#43;paste&amp;amp;tag=techfuelhq-20" rel="nofollow sponsored noopener">thermal paste&lt;/a> repaste (and fresh thermal pads on the VRAM/VRM) can drop temperatures 10–20 °C and stop heat-triggered artifacts entirely.&lt;/p>
&lt;h2 id="step-4-test-the-vram-and-confirm-hardware">Step 4: Test the VRAM and confirm hardware&lt;/h2>
&lt;p>If it&amp;rsquo;s cool, at stock, freshly re-drivered, and still artifacting, it&amp;rsquo;s time to prove whether the memory or core is failing. There are two tools:&lt;/p>
&lt;p>&lt;strong>The underclock test.&lt;/strong> In MSI Afterburner, lower the &lt;strong>memory clock by 100–300 MHz&lt;/strong> (and, if needed, the &lt;strong>core by about 50 MHz&lt;/strong>), apply, and retest. If the artifacts stop at the reduced clock, the hardware can no longer hold its rated speed — that&amp;rsquo;s degrading VRAM or an unstable die. A modest undervolt/underclock can genuinely keep a fading card usable for months by cutting heat and electrical stress, but understand what it means: the card is on a downward path.&lt;/p>
&lt;p>&lt;strong>A stress test.&lt;/strong> Run &lt;a href="https://www.ocbase.com/" rel="noopener">OCCT&lt;/a> (it has a dedicated VRAM test) or FurMark for a short session and watch closely. &lt;strong>Stop immediately&lt;/strong> if temperatures spike fast, the screen goes black, the PC crashes, or the artifacting &lt;em>intensifies&lt;/em> instead of settling — those are all signs of real instability, and there&amp;rsquo;s no benefit to cooking a failing card.&lt;/p>
&lt;p>Two patterns confirm a hardware fault rather than a setting: artifacts that &lt;strong>reproduce across multiple games&lt;/strong>, and artifacts that follow the card across &lt;strong>different monitors and cables&lt;/strong>. When corruption shows up everywhere with no software trigger and survives a clean driver reinstall, the usual culprits are failing VRAM, a destabilizing GPU die, damaged board components (ceramic caps, memory-power circuitry), or a power-delivery fault on the card.&lt;/p>
&lt;h2 id="step-5-the-physical-causes-people-skip">Step 5: The physical causes people skip&lt;/h2>
&lt;p>Before you accept &amp;ldquo;dead,&amp;rdquo; check the mechanical stuff that repair techs see constantly — none of it shows up in software:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Power-connector trouble.&lt;/strong> A PCIe or &lt;strong>12VHPWR / 12V-2×6 connector that isn&amp;rsquo;t fully seated&lt;/strong>, or one running through thin-gauge daisy-chained PSU wiring, can overheat and feed the card dirty or insufficient power — which shows up as artifacts and instability under load. Unplug and firmly re-seat every power cable at both ends, and look (and smell) for any browning or melting on the connector. A weak or aging power supply can also mimic a dying GPU.&lt;/li>
&lt;li>&lt;strong>Card sag and board flex.&lt;/strong> Heavy modern multi-slot cards slowly bend under their own weight, and that flex stresses the solder joints under the GPU and memory chips over years. A cheap &lt;a href="https://www.amazon.com/s?k=gpu&amp;#43;support&amp;#43;bracket&amp;amp;tag=techfuelhq-20" rel="nofollow sponsored noopener">GPU support bracket&lt;/a> removes that stress and is worth fitting on any large card as prevention.&lt;/li>
&lt;li>&lt;strong>Cracked solder joints (BGA).&lt;/strong> The &amp;ldquo;dying&amp;rdquo; that people describe is often a &lt;strong>cold or cracked BGA solder joint&lt;/strong> under the die, caused by years of heat cycling — heavy load to idle, over and over. That&amp;rsquo;s what a repair specialist actually fixes.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>On a laptop, the playbook shrinks.&lt;/strong> You usually can&amp;rsquo;t reseat the GPU, repaste easily, or touch the core clock, and the dGPU is soldered to the board — so your real moves are the free ones (reset any overclock utility, clean-reinstall the driver, clear the shader cache, and blow the dust out of the vents) plus one hardware check: &lt;strong>plug in an external monitor.&lt;/strong> If the artifacts show on the external screen too, it&amp;rsquo;s the laptop&amp;rsquo;s GPU or its memory; if the external screen is clean, the built-in panel or its ribbon cable is the fault, not the graphics chip. A soldered mobile GPU that artifacts across displays after a clean driver reinstall is usually a warranty/RMA or board-repair case, not a home fix.&lt;/p>
&lt;h2 id="step-6-when-its-the-display-path-clean-capture">Step 6: When it&amp;rsquo;s the display path (clean capture)&lt;/h2>
&lt;p>If your Step-1 capture came back clean, the GPU is rendering fine — chase the connection instead. Swap the video cable for a known-good one (cheap cables and worn connectors are a top cause), try a &lt;strong>different port&lt;/strong> on the card and a different input on the monitor, drop the &lt;strong>refresh rate&lt;/strong> to a standard value in case the current mode is out of the panel&amp;rsquo;s stable range, and test a &lt;strong>second monitor&lt;/strong> entirely. If a different screen and cable are clean, the original monitor is the fault. This is a much happier outcome than a dead card — see &lt;a href="https://techfuelhq.com/articles/monitor-keeps-going-black-2026/">Monitor Keeps Going Black?&lt;/a> for the full display-side walk-through.&lt;/p>
&lt;h2 id="when-its-genuinely-dying--rma-or-repair">When it&amp;rsquo;s genuinely dying — RMA or repair&lt;/h2>
&lt;p>You&amp;rsquo;ve reset the clocks, reinstalled drivers clean, ruled out heat, re-seated power, and the card still throws artifacts at the desktop across multiple monitors. At that point it&amp;rsquo;s a hardware failure, and the path depends on warranty:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Under warranty → RMA it.&lt;/strong> That&amp;rsquo;s almost always the right call; the manufacturer replaces or repairs it and you&amp;rsquo;re not gambling on a fix.&lt;/li>
&lt;li>&lt;strong>Out of warranty → weigh repair vs replace.&lt;/strong> A GPU repair specialist can sometimes &lt;strong>reflow or reball&lt;/strong> the core/VRAM to fix a cracked joint, but component-level work often costs more than a mid-range card is worth. If you&amp;rsquo;re replacing, match a current &lt;a href="https://www.amazon.com/s?k=graphics&amp;#43;card&amp;amp;tag=techfuelhq-20" rel="nofollow sponsored noopener">graphics card&lt;/a> to your power supply and case, and if your testing implicated the PSU, fix that too — a failing power supply will happily kill the replacement card as well.&lt;/li>
&lt;/ul>
&lt;p>Before you spend anything, be sure: confirm the artifacts follow the card into a &lt;em>second PC&lt;/em>. A failing PSU or a bad cable can frame a perfectly good GPU, and the whole point of the tests above is to make sure you only retire a card that&amp;rsquo;s actually done.&lt;/p>
&lt;!-- ========== SIGNATURE VISUAL B: THE ELIMINATION FUNNEL (step-state teardown) ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0a0f14;border:1px solid rgba(255,255,255,0.07);border-radius:10px;padding:26px 22px 20px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
&lt;div style="margin-bottom:8px;">
&lt;div style="font-size:19px;font-weight:700;color:#eef3f9;letter-spacing:-0.3px;">The elimination funnel&lt;/div>
&lt;div style="font-size:12.5px;color:#93a3b6;margin-top:5px;line-height:1.5;">Assuming the glitch showed up in your screenshot (render-side). Each check you pass crosses suspects off until one is left. A clean screenshot instead? Skip straight to the display-path branch &amp;mdash; it&amp;rsquo;s the cable or monitor, not the card.&lt;/div>
&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;gap:6px;margin:14px 0 8px;">
&lt;span style="font-family:ui-monospace,monospace;font-size:9.5px;font-weight:700;color:#c4d0dc;background:rgba(255,255,255,0.05);border:1px solid rgba(255,255,255,0.12);border-radius:4px;padding:3px 7px;">Cable / Monitor&lt;/span>
&lt;span style="font-family:ui-monospace,monospace;font-size:9.5px;font-weight:700;color:#c4d0dc;background:rgba(255,255,255,0.05);border:1px solid rgba(255,255,255,0.12);border-radius:4px;padding:3px 7px;">Render feature&lt;/span>
&lt;span style="font-family:ui-monospace,monospace;font-size:9.5px;font-weight:700;color:#c4d0dc;background:rgba(255,255,255,0.05);border:1px solid rgba(255,255,255,0.12);border-radius:4px;padding:3px 7px;">Shader cache&lt;/span>
&lt;span style="font-family:ui-monospace,monospace;font-size:9.5px;font-weight:700;color:#c4d0dc;background:rgba(255,255,255,0.05);border:1px solid rgba(255,255,255,0.12);border-radius:4px;padding:3px 7px;">Overclock&lt;/span>
&lt;span style="font-family:ui-monospace,monospace;font-size:9.5px;font-weight:700;color:#c4d0dc;background:rgba(255,255,255,0.05);border:1px solid rgba(255,255,255,0.12);border-radius:4px;padding:3px 7px;">Driver&lt;/span>
&lt;span style="font-family:ui-monospace,monospace;font-size:9.5px;font-weight:700;color:#c4d0dc;background:rgba(255,255,255,0.05);border:1px solid rgba(255,255,255,0.12);border-radius:4px;padding:3px 7px;">Heat&lt;/span>
&lt;span style="font-family:ui-monospace,monospace;font-size:9.5px;font-weight:700;color:#c4d0dc;background:rgba(255,255,255,0.05);border:1px solid rgba(255,255,255,0.12);border-radius:4px;padding:3px 7px;">Power / Sag&lt;/span>
&lt;span style="font-family:ui-monospace,monospace;font-size:9.5px;font-weight:700;color:#c4d0dc;background:rgba(255,255,255,0.05);border:1px solid rgba(255,255,255,0.12);border-radius:4px;padding:3px 7px;">VRAM / die&lt;/span>
&lt;/div>
&lt;div style="display:flex;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid rgba(255,255,255,0.05);">
&lt;div style="flex:0 0 88px;">&lt;div style="height:11px;width:88%;margin:0 auto;border-radius:3px;background:#5dca7a;">&lt;/div>&lt;/div>
&lt;div style="flex:1 1 auto;min-width:0;font-size:11.5px;color:#d6dee8;line-height:1.4;">&lt;b style="color:#eef3f9;">Screenshot captures the glitch&lt;/b> &amp;mdash; it&amp;rsquo;s render-side, so it&amp;rsquo;s not the &lt;s style="color:#66788a;">Cable / Monitor&lt;/s>.&lt;/div>
&lt;div style="flex:0 0 auto;font-family:ui-monospace,monospace;font-size:10px;font-weight:700;color:#7ee0a0;border:1px solid rgba(126,224,160,0.4);border-radius:20px;padding:3px 9px;">7 left&lt;/div>
&lt;/div>
&lt;div style="display:flex;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid rgba(255,255,255,0.05);">
&lt;div style="flex:0 0 88px;">&lt;div style="height:11px;width:75%;margin:0 auto;border-radius:3px;background:#7cc86a;">&lt;/div>&lt;/div>
&lt;div style="flex:1 1 auto;min-width:0;font-size:11.5px;color:#d6dee8;line-height:1.4;">&lt;b style="color:#eef3f9;">Still there with DLSS / TAA / Frame-Gen off?&lt;/b> Yes &amp;mdash; rule out the &lt;s style="color:#66788a;">Render feature&lt;/s> (ghosting).&lt;/div>
&lt;div style="flex:0 0 auto;font-family:ui-monospace,monospace;font-size:10px;font-weight:700;color:#8fd06a;border:1px solid rgba(143,208,106,0.4);border-radius:20px;padding:3px 9px;">6 left&lt;/div>
&lt;/div>
&lt;div style="display:flex;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid rgba(255,255,255,0.05);">
&lt;div style="flex:0 0 88px;">&lt;div style="height:11px;width:62%;margin:0 auto;border-radius:3px;background:#9ad84a;">&lt;/div>&lt;/div>
&lt;div style="flex:1 1 auto;min-width:0;font-size:11.5px;color:#d6dee8;line-height:1.4;">&lt;b style="color:#eef3f9;">Happens across many games, not one?&lt;/b> Then it isn&amp;rsquo;t the &lt;s style="color:#66788a;">Shader cache&lt;/s> / a single-game bug.&lt;/div>
&lt;div style="flex:0 0 auto;font-family:ui-monospace,monospace;font-size:10px;font-weight:700;color:#b6e86a;border:1px solid rgba(182,232,106,0.4);border-radius:20px;padding:3px 9px;">5 left&lt;/div>
&lt;/div>
&lt;div style="display:flex;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid rgba(255,255,255,0.05);">
&lt;div style="flex:0 0 88px;">&lt;div style="height:11px;width:44%;margin:0 auto;border-radius:3px;background:#e8b04a;">&lt;/div>&lt;/div>
&lt;div style="flex:1 1 auto;min-width:0;font-size:11.5px;color:#d6dee8;line-height:1.4;">&lt;b style="color:#eef3f9;">Reset overclock + clean DDU driver&lt;/b> &amp;mdash; no change, so cross off &lt;s style="color:#66788a;">Overclock&lt;/s> and &lt;s style="color:#66788a;">Driver&lt;/s>.&lt;/div>
&lt;div style="flex:0 0 auto;font-family:ui-monospace,monospace;font-size:10px;font-weight:700;color:#f0c56a;border:1px solid rgba(240,197,106,0.4);border-radius:20px;padding:3px 9px;">3 left&lt;/div>
&lt;/div>
&lt;div style="display:flex;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid rgba(255,255,255,0.05);">
&lt;div style="flex:0 0 88px;">&lt;div style="height:11px;width:30%;margin:0 auto;border-radius:3px;background:#e89a4a;">&lt;/div>&lt;/div>
&lt;div style="flex:1 1 auto;min-width:0;font-size:11.5px;color:#d6dee8;line-height:1.4;">&lt;b style="color:#eef3f9;">Cool at idle in HWiNFO?&lt;/b> Temps fine &amp;mdash; it isn&amp;rsquo;t &lt;s style="color:#66788a;">Heat&lt;/s>.&lt;/div>
&lt;div style="flex:0 0 auto;font-family:ui-monospace,monospace;font-size:10px;font-weight:700;color:#eaa15a;border:1px solid rgba(234,161,90,0.4);border-radius:20px;padding:3px 9px;">2 left&lt;/div>
&lt;/div>
&lt;div style="display:flex;align-items:center;gap:12px;padding:9px 0;">
&lt;div style="flex:0 0 88px;">&lt;div style="height:11px;width:16%;margin:0 auto;border-radius:3px;background:#e05050;">&lt;/div>&lt;/div>
&lt;div style="flex:1 1 auto;min-width:0;font-size:11.5px;color:#d6dee8;line-height:1.4;">&lt;b style="color:#eef3f9;">Re-seat power, fit an anti-sag bracket&lt;/b> &amp;mdash; still glitching, so it isn&amp;rsquo;t &lt;s style="color:#66788a;">Power / Sag&lt;/s>.&lt;/div>
&lt;div style="flex:0 0 auto;font-family:ui-monospace,monospace;font-size:10px;font-weight:700;color:#f07a7a;border:1px solid rgba(240,122,122,0.4);border-radius:20px;padding:3px 9px;">1 left&lt;/div>
&lt;/div>
&lt;div style="margin-top:14px;background:rgba(224,80,80,0.09);border:1px solid rgba(224,80,80,0.4);border-left:3px solid #e05050;border-radius:7px;padding:12px 14px;">
&lt;div style="font-size:12px;font-weight:700;color:#f5a0a0;">LEFT STANDING &amp;middot; VRAM / GPU DIE&lt;/div>
&lt;div style="font-size:11.5px;color:#e0c4c4;margin-top:4px;line-height:1.5;">Confirm it with a &amp;minus;100&amp;ndash;300 MHz memory underclock &amp;mdash; if that stops the artifacts, the silicon can&amp;rsquo;t hold its rated speed. Then RMA (in warranty) or weigh a reflow / replacement, after proving the card is dead in a second PC.&lt;/div>
&lt;/div>
&lt;div style="margin-top:12px;padding-top:12px;border-top:1px solid rgba(255,255,255,0.06);font-size:10.5px;color:#5f7080;display:flex;justify-content:space-between;gap:10px;">
&lt;span>Work top-down: every free check you pass shrinks the list, so you only reach for a screwdriver &amp;mdash; or a credit card &amp;mdash; once the cheap causes are gone.&lt;/span>
&lt;span>techfuelhq.com&lt;/span>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="the-quick-version">The quick version&lt;/h2>
&lt;ol>
&lt;li>&lt;strong>Screenshot or record the artifacts.&lt;/strong> In the capture → it&amp;rsquo;s the card (Steps 2–5). Clean capture → it&amp;rsquo;s the cable/monitor (Step 6).&lt;/li>
&lt;li>&lt;strong>Trails or afterimages?&lt;/strong> If it only happens with DLSS/TAA/Frame-Gen on and stops when you switch to DLAA/native or turn Frame Gen off, it&amp;rsquo;s a rendering feature, not a dying card.&lt;/li>
&lt;li>&lt;strong>Where does it show?&lt;/strong> One game = shader cache; every game = driver/heat/OC/VRAM; desktop or BIOS = hardware.&lt;/li>
&lt;li>&lt;strong>Do the free software pass:&lt;/strong> reset the overclock, clean-reinstall the driver with DDU, clear the shader cache.&lt;/li>
&lt;li>&lt;strong>Check heat&lt;/strong> (HWiNFO) — dust, fans, and a repaste fix thermal artifacts.&lt;/li>
&lt;li>&lt;strong>Confirm hardware:&lt;/strong> a −100–300 MHz memory underclock that stops the artifacts means degrading silicon; OCCT/FurMark and cross-testing on other games, monitors, and cables confirm a real fault.&lt;/li>
&lt;li>&lt;strong>Then, and only then, RMA (in warranty) or weigh a reflow/replacement&lt;/strong> — after proving the card is dead in a second machine.&lt;/li>
&lt;/ol>
&lt;p>Find out whether it&amp;rsquo;s software, the display path, or dying hardware &lt;em>first&lt;/em>, and you stop reinstalling drivers on a card that never had a driver problem — and you stop throwing away cards a reset overclock would have fixed. For the driver side of this in depth, see &lt;a href="https://techfuelhq.com/articles/gpu-driver-crash-fix-2026/">Fix GPU Driver Crashes&lt;/a>; if the card isn&amp;rsquo;t showing up at all rather than glitching, that&amp;rsquo;s a different branch covered in &lt;a href="https://techfuelhq.com/articles/graphics-card-not-detected-2026/">Graphics Card Not Detected&lt;/a>.&lt;/p></description></item><item><title>GPU Fans Not Spinning? Check Idle vs Load Before You Panic (2026)</title><link>https://techfuelhq.com/articles/gpu-fans-not-spinning-2026/</link><pubDate>Fri, 10 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/gpu-fans-not-spinning-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-07-10 · ~8 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence what gets recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;p>You glance at your open case, the GPU fans are dead still, and the internet immediately splits into two camps: &lt;em>your card is failing, RMA it&lt;/em> — or &lt;em>it&amp;rsquo;s fine, that&amp;rsquo;s normal, ignore it.&lt;/em> Both are sometimes right, and that&amp;rsquo;s exactly the problem. &amp;ldquo;GPU fans not spinning&amp;rdquo; describes three completely different situations, and the fix — or the relief — depends entirely on which one you actually have.&lt;/p>
&lt;p>The good news is that for most people asking this question, &lt;strong>nothing is wrong&lt;/strong>. Modern graphics cards stop their fans on purpose. The trick is knowing how to tell that normal, healthy silence apart from a genuinely dead fan, and to spot the one case where fans-not-spinning isn&amp;rsquo;t a fan issue at all.&lt;/p>
&lt;h2 id="step-1-idle-or-under-load-this-one-check-sorts-everything">Step 1: Idle or under load? This one check sorts everything&lt;/h2>
&lt;p>Before you touch a screwdriver, answer a single question: &lt;strong>are the fans off because the card is cool, or off despite the card being hot?&lt;/strong>&lt;/p>
&lt;p>Since about 2016, nearly every mid-range and higher graphics card ships with a &lt;em>zero-RPM&lt;/em> idle feature. You&amp;rsquo;ll see it under a different brand name depending on who made your card:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Maker&lt;/th>
&lt;th scope="col">Feature name&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>MSI&lt;/td>
&lt;td>Zero Frozr&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ASUS&lt;/td>
&lt;td>0dB Fan&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Gigabyte&lt;/td>
&lt;td>Fan Stop&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>NVIDIA / AMD (reference)&lt;/td>
&lt;td>Idle Fan Stop / Zero RPM mode&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>They all do the same thing: below roughly &lt;strong>50-60 °C&lt;/strong>, the aluminum heatsink alone sheds enough heat that the fans aren&amp;rsquo;t needed, so the card shuts them off to run completely silent. A GPU sitting on the Windows desktop, browsing, or playing video is usually well under that threshold — so &lt;strong>fans-off at idle is the card working exactly as designed, not a failure.&lt;/strong>&lt;/p>
&lt;p>To confirm it in 60 seconds, install &lt;a href="https://www.hwinfo.com/" rel="noopener">HWiNFO&lt;/a> (free) and watch the GPU temperature, then load something demanding — a game, or a quick &lt;a href="https://geeks3d.com/furmark/" rel="noopener">FurMark&lt;/a> or &lt;a href="https://www.ocbase.com/" rel="noopener">OCCT&lt;/a> run:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Fans start once the temp crosses ~55-60 °C&lt;/strong> → everything is fine. You were looking at zero-RPM idle. You&amp;rsquo;re done.&lt;/li>
&lt;li>&lt;strong>Temp climbs past ~65-70 °C and the fans still haven&amp;rsquo;t moved&lt;/strong> → the auto curve isn&amp;rsquo;t triggering them. Now it&amp;rsquo;s a real fault — continue to Step 2.&lt;/li>
&lt;li>&lt;strong>No picture on screen at all, fans dead from the moment you power on&lt;/strong> → this usually &lt;em>isn&amp;rsquo;t&lt;/em> a fan problem. Jump to Step 4.&lt;/li>
&lt;/ul>
&lt;p>That fork is the whole game. Most searches for this end right here at the first bullet.&lt;/p>
&lt;h2 id="step-2-fans-stay-off-under-load--the-real-fixes-in-order">Step 2: Fans stay off under load — the real fixes, in order&lt;/h2>
&lt;p>If the card is genuinely hot and the fans refuse to spin, work these from easiest to hardest. Roughly this is also their hit-rate order.&lt;/p>
&lt;p>&lt;strong>1. Override the fan curve in software.&lt;/strong> Open &lt;a href="https://www.msi.com/Landing/afterburner/graphics-cards" rel="noopener">MSI Afterburner&lt;/a> (it works on any brand), enable manual fan control, and set a fixed 60-70% speed. If the fans jump to life on command, the hardware is fine and the problem was a stuck auto curve, a disabled setting, or a software conflict — set a sensible custom curve with a low floor and you&amp;rsquo;re done. If they &lt;em>don&amp;rsquo;t&lt;/em> respond to a direct manual command, the issue is physical; keep going.&lt;/p>
&lt;p>&lt;strong>2. Re-seat the fan power cable.&lt;/strong> On most cards the fan assembly connects to the PCB through a small internal header, and it can work loose — especially after shipping, a move, or a recent reinstall. Power down, pull the card, and check that little fan connector is fully clicked in. While the card is out, blow the dust out of the heatsink and fans with a can of &lt;a href="https://www.amazon.com/s?k=compressed&amp;#43;air&amp;#43;duster&amp;amp;tag=techfuelhq-20" rel="nofollow sponsored noopener">compressed air&lt;/a>; a packed heatsink can also trip thermal weirdness.&lt;/p>
&lt;p>&lt;strong>3. Re-seat the card and its PCIe power.&lt;/strong> Press the card firmly back into the x16 slot until the retention clip clicks, and unplug then firmly re-seat every PCIe power cable at both ends. A card that isn&amp;rsquo;t getting clean, sufficient power can behave erratically, fans included.&lt;/p>
&lt;p>&lt;strong>4. Clean-reinstall the driver.&lt;/strong> A corrupted driver or a bad VBIOS/software profile can leave the fan controller in a bad state. Download the latest driver from &lt;a href="https://www.nvidia.com/download/index.aspx" rel="noopener">NVIDIA&lt;/a> or &lt;a href="https://www.amd.com/en/support" rel="noopener">AMD&lt;/a>, run &lt;a href="https://www.wagnardsoft.com/" rel="noopener">Display Driver Uninstaller (DDU)&lt;/a> in Safe Mode to wipe the old one, reboot, and install clean. This is also the fix when the fans quit &lt;em>right after&lt;/em> a driver update reset your curve.&lt;/p>
&lt;p>If the fans still won&amp;rsquo;t move under load after all four, the fan or its motor is the problem — Step 3.&lt;/p>
&lt;h2 id="step-3-dead-or-dying-fan--how-to-be-sure-and-what-to-do">Step 3: Dead or dying fan — how to be sure, and what to do&lt;/h2>
&lt;p>A fan that&amp;rsquo;s mechanically failed gives itself away. With the PC &lt;strong>fully powered off&lt;/strong>, gently flick each fan blade with a finger:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Spins freely and coasts&lt;/strong> → the fan is healthy; your problem was one of the Step-2 causes.&lt;/li>
&lt;li>&lt;strong>Stiff, grinding, or won&amp;rsquo;t turn&lt;/strong> → the bearing is worn or seized. This is the textbook cause when &lt;em>one&lt;/em> of two or three fans is dead while the others spin — zero-RPM stops all of them together, so a single stationary fan is a hardware fault, not a setting.&lt;/li>
&lt;/ul>
&lt;p>A grinding, rattling, or clicking noise in the weeks before a fan stops is the classic worn-bearing warning. (Don&amp;rsquo;t confuse that &lt;em>mechanical&lt;/em> grind with a high-pitched electronic zing that changes with your frame rate — that&amp;rsquo;s &lt;a href="https://techfuelhq.com/articles/coil-whine-2026/">coil whine&lt;/a>, a harmless electrical noise, not a dying fan.) For an older card, a worn sleeve bearing that&amp;rsquo;s lost its lubricant can sometimes be revived with &lt;strong>one or two drops of light machine oil&lt;/strong> (sewing-machine oil is ideal) under the center sticker — &lt;strong>never WD-40&lt;/strong>, which is a solvent that will make it worse over time. That&amp;rsquo;s a stopgap, not a repair.&lt;/p>
&lt;p>The durable fix is a fresh fan. Replacement &lt;a href="https://www.amazon.com/s?k=gpu&amp;#43;replacement&amp;#43;fan&amp;amp;tag=techfuelhq-20" rel="nofollow sponsored noopener">GPU fan kits&lt;/a> for common cards are usually $10-25 and are a straightforward swap if you&amp;rsquo;re comfortable removing the shroud and matching the connector type and blade count. If the card is still under warranty, don&amp;rsquo;t open it — RMA it instead; opening the shroud can void coverage.&lt;/p>
&lt;h2 id="step-4-fans-off-and-no-display--this-isnt-a-fan-problem">Step 4: Fans off &lt;em>and&lt;/em> no display — this isn&amp;rsquo;t a fan problem&lt;/h2>
&lt;p>If the fans are dead from the second you hit the power button and you get &lt;strong>no picture at all&lt;/strong>, stop troubleshooting the fans. Spinning fans only ever prove a card is getting &lt;em>some&lt;/em> standby power; the reverse — dead fans with no display — almost always means the GPU isn&amp;rsquo;t initializing (POSTing) in the first place. The usual culprits are:&lt;/p>
&lt;ul>
&lt;li>A &lt;strong>PCIe power connector not fully seated&lt;/strong> — extremely common with the &lt;strong>12VHPWR / 16-pin plug&lt;/strong> on RTX 40- and 50-series cards, which needs to click all the way home.&lt;/li>
&lt;li>The &lt;strong>card not fully pressed into the slot.&lt;/strong>&lt;/li>
&lt;li>The &lt;strong>monitor plugged into the motherboard&lt;/strong> instead of the graphics card&amp;rsquo;s own ports.&lt;/li>
&lt;li>A &lt;strong>power supply that&amp;rsquo;s too weak or failing&lt;/strong> under load.&lt;/li>
&lt;/ul>
&lt;p>Re-seat the card until the clip clicks, re-seat every power cable firmly at both ends, and confirm the monitor cable is on the card, not the motherboard. Because this is a different branch entirely, it has its own full walk-through: &lt;a href="https://techfuelhq.com/articles/graphics-card-not-detected-2026/">Graphics Card Not Detected? Find Where It Disappears First&lt;/a>.&lt;/p>
&lt;h2 id="when-to-worry--and-when-not-to">When to worry — and when not to&lt;/h2>
&lt;p>Put simply: &lt;strong>fans-off is only an emergency when the card is hot.&lt;/strong> A GPU that idles silent and spins up under load is one of the best-behaved things in your PC. A GPU that bakes past 80 °C while its fans sit dead will throttle, then crash, then eventually protect itself with a thermal shutdown — and running it that way repeatedly shortens its life. If you&amp;rsquo;ve confirmed a genuinely dead fan, don&amp;rsquo;t game on the card until it&amp;rsquo;s fixed; low-load desktop use is fine while you wait on a replacement. (The &lt;em>CPU&lt;/em> cooler is the opposite case — it has no safe zero-RPM idle, so a still CPU fan is far more urgent: &lt;a href="https://techfuelhq.com/articles/cpu-fan-not-spinning-2026/">CPU fan not spinning&lt;/a> covers that one.)&lt;/p>
&lt;p>And if the fans turn out to be healthy but the card is &lt;em>still&lt;/em> misbehaving — glitches, crashes, black screens — the fan was a red herring and the real fault is elsewhere. &lt;a href="https://techfuelhq.com/articles/gpu-overheating-2026/">Overheating that survives working fans&lt;/a>, or visual corruption, points at a different problem: see &lt;a href="https://techfuelhq.com/articles/gpu-artifacts-2026/">GPU Artifacts? Sort Software vs Dying VRAM&lt;/a> and &lt;a href="https://techfuelhq.com/articles/gpu-driver-crash-fix-2026/">Fix GPU Driver Crashes&lt;/a>.&lt;/p>
&lt;h2 id="the-quick-version">The quick version&lt;/h2>
&lt;ol>
&lt;li>&lt;strong>Check idle vs load first.&lt;/strong> Watch the temp in HWiNFO and load a game or stress test. Fans start by ~55-60 °C = normal zero-RPM mode, nothing&amp;rsquo;s wrong.&lt;/li>
&lt;li>&lt;strong>Fans off while hot (65 °C+)?&lt;/strong> That&amp;rsquo;s a real fault. Force them in MSI Afterburner; if they respond, it was the curve/software. If not, re-seat the fan cable, re-seat the card + PCIe power, and clean-reinstall the driver with DDU.&lt;/li>
&lt;li>&lt;strong>Spin each fan by hand (PC off).&lt;/strong> Stiff or grinding = worn bearing; a single dead fan among spinning ones is hardware, not a setting. Light oil is a stopgap; a $10-25 replacement fan is the fix (RMA instead if in warranty).&lt;/li>
&lt;li>&lt;strong>Fans dead &lt;em>and&lt;/em> no display?&lt;/strong> Not a fan issue — the card isn&amp;rsquo;t POSTing. Re-seat card and power, check the 12VHPWR plug, move the monitor to the card&amp;rsquo;s port.&lt;/li>
&lt;/ol>
&lt;p>Sort which of those you actually have before you spend a cent, and you&amp;rsquo;ll stop RMAing cards that were working perfectly — and stop ignoring a genuinely cooked one because &amp;ldquo;that&amp;rsquo;s just zero-RPM mode.&amp;rdquo;&lt;/p></description></item><item><title>GPU Overheating? Confirm It Actually Is Before You Fix Anything (2026)</title><link>https://techfuelhq.com/articles/gpu-overheating-2026/</link><pubDate>Fri, 10 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/gpu-overheating-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-07-10 · ~8 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence what gets recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;p>You saw a number — 80 °C, 90 °C, a scary-looking hotspot reading — and now you&amp;rsquo;re convinced your graphics card is cooking itself. Maybe it is. But here&amp;rsquo;s the thing almost every &amp;ldquo;fix GPU overheating&amp;rdquo; guide skips: &lt;strong>most cards that get flagged as overheating are running exactly the way their engineers designed them to.&lt;/strong> A GPU is not a CPU, and the temperatures that would alarm you on a processor are routine on a graphics card.&lt;/p>
&lt;p>So before you buy compressed air, tear off the shroud, or RMA anything, spend two minutes confirming the card is &lt;em>actually&lt;/em> too hot — and, if it is, reading the one number that tells you whether it&amp;rsquo;s dust or dried-out paste. That single distinction decides whether this is a five-minute clean or a repaste job.&lt;/p>
&lt;h2 id="step-1-is-it-even-overheating-read-core-vs-hotspot-first">Step 1: Is it even overheating? Read core vs hotspot first&lt;/h2>
&lt;p>Install &lt;a href="https://www.hwinfo.com/" rel="noopener">HWiNFO&lt;/a> (free) or &lt;a href="https://www.techpowerup.com/gpuz/" rel="noopener">GPU-Z&lt;/a>, load a game or a short &lt;a href="https://geeks3d.com/furmark/" rel="noopener">FurMark&lt;/a> run, and look at two numbers: &lt;strong>GPU (core) temperature&lt;/strong> and &lt;strong>GPU hotspot / junction temperature.&lt;/strong> Here&amp;rsquo;s what&amp;rsquo;s actually normal in 2026:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Reading&lt;/th>
&lt;th scope="col">NVIDIA RTX 40/50&lt;/th>
&lt;th scope="col">AMD RX 7000/9000&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Idle (desktop)&lt;/td>
&lt;td>~30-50 °C&lt;/td>
&lt;td>~30-50 °C&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Normal gaming (core)&lt;/td>
&lt;td>65-85 °C&lt;/td>
&lt;td>65-85 °C&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Throttle point (core)&lt;/td>
&lt;td>~83-85 °C&lt;/td>
&lt;td>~90-95 °C&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Hotspot above core (healthy)&lt;/td>
&lt;td>10-15 °C&lt;/td>
&lt;td>20-35 °C (by design)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Max spec&lt;/td>
&lt;td>~90 °C core (hotspot throttles ~105 °C)&lt;/td>
&lt;td>110 °C junction&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>&lt;em>Note for RTX 50-series owners: the hotspot column doesn&amp;rsquo;t apply to you — NVIDIA removed public hotspot access on Blackwell (see below), so your tools will only show core and memory.&lt;/em>&lt;/p>
&lt;p>Read that table before you do anything else, because it kills the most common false alarm outright:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Core in the 70s or low 80s under load?&lt;/strong> That&amp;rsquo;s a healthy card. Stop worrying. This is where the majority of &amp;ldquo;my GPU is overheating&amp;rdquo; searches actually end.&lt;/li>
&lt;li>&lt;strong>AMD hotspot showing 95-105 °C while the core sits around 70 °C?&lt;/strong> Also normal. AMD &lt;em>deliberately&lt;/em> lets the junction run hot — a 100 °C hotspot next to a 70 °C core is the card working as designed, not a fault. The 110 °C number that looks terrifying if you&amp;rsquo;re used to NVIDIA is simply a different thermal philosophy.&lt;/li>
&lt;li>&lt;strong>Core pinned at 85 °C+ (NVIDIA) or 95 °C+ (AMD) and clocks dropping?&lt;/strong> &lt;em>Now&lt;/em> it&amp;rsquo;s genuinely too hot and throttling. Continue to Step 2.&lt;/li>
&lt;/ul>
&lt;p>If you&amp;rsquo;ve got GDDR6X memory (RTX 3080/3090/4070 Ti/4080/4090 and similar), HWiNFO also reports a &lt;strong>memory junction temperature.&lt;/strong> That&amp;rsquo;s rated to 110 °C but is happiest under about 95 °C — worth watching separately on those cards, since hot VRAM is a classic cause of &lt;a href="https://techfuelhq.com/articles/gpu-artifacts-2026/">visual artifacts&lt;/a> even when the core looks fine.&lt;/p>
&lt;h3 id="if-you-own-an-rtx-50-series-card-your-hotspot-went-dark">If you own an RTX 50-series card, your hotspot went dark&lt;/h3>
&lt;p>Before you go hunting for a hotspot number, know this: &lt;strong>on the RTX 50-series (Blackwell), NVIDIA removed public access to the hotspot sensor.&lt;/strong> GPU-Z, HWiNFO, and MSI Afterburner can no longer read it on a 5070/5080/5090 — the field is simply blank, or it briefly showed a bogus 255 °C before tools stopped reporting it. GPU-Z&amp;rsquo;s developer confirmed NVIDIA pulled hotspot out of the public API. The sensor still physically exists: Brazilian repair specialists read it with NVIDIA&amp;rsquo;s internal &lt;em>MODS&lt;/em> diagnostic tool and caught an RTX 5070 Ti hitting &lt;strong>107 °C hotspot almost instantly under load while GPU-Z showed only 67-68 °C on the core&lt;/strong> — a bad factory paste job hiding entirely behind a calm-looking core temperature.&lt;/p>
&lt;p>What that means for you if you&amp;rsquo;re on a 50-series card:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>You can&amp;rsquo;t run the delta check below&lt;/strong> — there&amp;rsquo;s no hotspot number to subtract. Skip Step 2 and lean on behavior instead.&lt;/li>
&lt;li>&lt;strong>Trust throttling over the reading.&lt;/strong> If your card trims clocks or crashes under load while the core reads a comfortable 70-75 °C, a hidden-hot hotspot (poor paste or an uneven cooler mount) is a live suspect, exactly as on that 5070 Ti.&lt;/li>
&lt;li>&lt;strong>Watch the memory temperature&lt;/strong>, which is still reported, and treat repeated load crashes as a reason to check the cooler mount or RMA — not proof that &amp;ldquo;temps are fine.&amp;rdquo;&lt;/li>
&lt;/ul>
&lt;!-- ========== SIGNATURE VISUAL B: RTX 50 "HOTSPOT WENT DARK" MOCK READOUT (annotated software-panel form) ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0a0e0a;border:1px solid rgba(118,185,0,0.22);border-radius:10px;padding:24px 20px 18px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
&lt;div style="margin-bottom:14px;">
&lt;div style="display:flex;align-items:center;gap:9px;">
&lt;span style="width:8px;height:8px;border-radius:50%;background:#76b900;box-shadow:0 0 8px #76b900;">&lt;/span>
&lt;div style="font-size:19px;font-weight:700;color:#e8f2da;letter-spacing:-0.3px;">On RTX 50-series, the hotspot reads blank &amp;#8212; but it&amp;#8217;s still there&lt;/div>
&lt;/div>
&lt;div style="font-size:12.5px;color:#9db08a;margin-top:6px;line-height:1.5;">NVIDIA pulled the hotspot sensor from the public API on Blackwell. Your monitoring app shows a calm core while the real hottest point can be 40&amp;#176;C higher.&lt;/div>
&lt;/div>
&lt;div style="background:#05070a;border:1px solid rgba(118,185,0,0.14);border-radius:8px;padding:14px 15px;font-family:ui-monospace,'Cascadia Code',monospace;">
&lt;div style="font-size:10px;color:#5f7a4a;letter-spacing:1px;margin-bottom:9px;">SENSOR STATUS &amp;#183; GPU-Z / HWiNFO on an RTX 5070 Ti&lt;/div>
&lt;div style="display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-bottom:1px solid rgba(118,185,0,0.08);">
&lt;span style="font-size:12.5px;color:#c6d6b4;">GPU Temperature (Core)&lt;/span>
&lt;span style="font-size:13px;font-weight:700;color:#7ee0a0;">68&amp;#176;C&lt;/span>
&lt;/div>
&lt;div style="display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-bottom:1px solid rgba(118,185,0,0.08);">
&lt;span style="font-size:12.5px;color:#c6d6b4;">GPU Memory Junction&lt;/span>
&lt;span style="font-size:13px;font-weight:700;color:#7ee0a0;">74&amp;#176;C&lt;/span>
&lt;/div>
&lt;div style="display:flex;justify-content:space-between;align-items:center;padding:6px 0;background:rgba(239,68,68,0.08);border-radius:5px;padding-left:8px;padding-right:8px;margin-top:2px;">
&lt;span style="font-size:12.5px;color:#f0b7b7;">GPU Hot Spot&lt;/span>
&lt;span style="font-size:12px;font-weight:700;color:#f87171;">N/A &amp;#8212; removed&lt;/span>
&lt;/div>
&lt;div style="display:flex;justify-content:space-between;align-items:center;padding:6px 0;margin-top:8px;border-top:1px dashed rgba(239,68,68,0.3);">
&lt;span style="font-size:11.5px;color:#8a9a78;">Actual hotspot (NVIDIA MODS tool)&lt;/span>
&lt;span style="font-size:14px;font-weight:800;color:#ef4444;">107&amp;#176;C&lt;/span>
&lt;/div>
&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;gap:10px;margin-top:13px;">
&lt;div style="flex:1;min-width:200px;background:rgba(118,185,0,0.06);border-left:3px solid #76b900;border-radius:0 6px 6px 0;padding:9px 12px;">
&lt;div style="font-size:12px;font-weight:700;color:#b6d98a;">The delta check is out&lt;/div>
&lt;div style="font-size:11px;color:#9db08a;line-height:1.45;margin-top:2px;">No hotspot number to subtract. On a 50-series card, skip it.&lt;/div>
&lt;/div>
&lt;div style="flex:1;min-width:200px;background:rgba(239,68,68,0.06);border-left:3px solid #ef4444;border-radius:0 6px 6px 0;padding:9px 12px;">
&lt;div style="font-size:12px;font-weight:700;color:#f2a5a5;">Trust behavior instead&lt;/div>
&lt;div style="font-size:11px;color:#c9a598;line-height:1.45;margin-top:2px;">Throttling or crashes while the core looks cool &amp;#8594; suspect a hidden-hot hotspot (paste / mount).&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:13px;padding-top:10px;border-top:1px solid rgba(118,185,0,0.12);font-size:10.5px;color:#6f8259;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;">
&lt;span>RTX 5070 Ti figures per Tom&amp;#8217;s Hardware / VideoCardz coverage of the MODS-tool readings, 2026.&lt;/span>
&lt;span style="color:#4a5a3a;">techfuelhq.com&lt;/span>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="step-2-the-hotspot-delta--the-number-nobody-tells-you-to-check">Step 2: The hotspot delta — the number nobody tells you to check&lt;/h2>
&lt;p>This is the diagnostic every &amp;ldquo;clean your dust&amp;rdquo; article omits, and it&amp;rsquo;s the one that saves you from guessing. Take your &lt;strong>hotspot temperature minus your core temperature&lt;/strong> under load:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>NVIDIA: delta under ~15 °C&lt;/strong> = healthy contact. &lt;strong>Over ~20 °C&lt;/strong> = a problem.&lt;/li>
&lt;li>&lt;strong>AMD: delta under ~25 °C&lt;/strong> = healthy (AMD runs wider on purpose). &lt;strong>Over ~30 °C&lt;/strong> = a problem.&lt;/li>
&lt;/ul>
&lt;p>A delta that&amp;rsquo;s wider than it should be means heat isn&amp;rsquo;t moving evenly from the die into the cooler. Dust doesn&amp;rsquo;t usually do that — dust raises &lt;em>both&lt;/em> temperatures together. A &lt;strong>wide, growing delta points at the thermal interface itself&lt;/strong>: thin, dried, or &lt;em>pumped-out&lt;/em> thermal paste, or degraded thermal pads. Paste pump-out (the paste slowly getting squeezed out from the center by repeated heat cycling) is extremely common on &lt;strong>RTX 30- and 40-series cards after about 18-24 months.&lt;/strong>&lt;/p>
&lt;p>The tell is history: if your delta used to be 10 °C and it&amp;rsquo;s now 28 °C on the same NVIDIA card, the paste has aged out — and a repaste typically closes the gap by &lt;strong>5-15 °C.&lt;/strong> If the delta has always been in a healthy range and both temps are just high together, skip ahead — your problem is airflow or dust, not the paste.&lt;/p>
&lt;!-- ========== SIGNATURE VISUAL A: CORE-vs-HOTSPOT DELTA CHART (the diagnostic number, made visual) ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0a1017;border:1px solid rgba(56,189,248,0.20);border-radius:10px;padding:24px 20px 18px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
&lt;div style="margin-bottom:6px;">
&lt;div style="display:flex;align-items:center;gap:9px;">
&lt;span style="width:8px;height:8px;border-radius:50%;background:#38bdf8;box-shadow:0 0 8px #38bdf8;">&lt;/span>
&lt;div style="font-size:19px;font-weight:700;color:#dcecfa;letter-spacing:-0.3px;">The gap that matters: core vs hotspot&lt;/div>
&lt;/div>
&lt;div style="font-size:12.5px;color:#8ba3ba;margin-top:6px;line-height:1.5;">Dust raises both temperatures together. A &lt;strong style="color:#cfe4f5;">widening gap&lt;/strong> between core and hotspot is the tell that it&amp;#8217;s the paste, not dust &amp;#8212; the one number that decides a five-minute clean from a repaste job.&lt;/div>
&lt;/div>
&lt;div style="display:flex;gap:12px;margin:4px 0 6px;font-size:10px;color:#7f97ad;">
&lt;span style="display:inline-flex;align-items:center;gap:5px;">&lt;span style="width:9px;height:9px;border-radius:50%;background:#38bdf8;">&lt;/span>core&lt;/span>
&lt;span style="display:inline-flex;align-items:center;gap:5px;">&lt;span style="width:9px;height:9px;border-radius:50%;background:#fb923c;">&lt;/span>hotspot&lt;/span>
&lt;/div>
&lt;div style="display:flex;justify-content:center;">
&lt;svg viewBox="0 0 400 212" width="100%" style="max-width:440px;height:auto;" role="img" aria-label="Three core-versus-hotspot readings on a 30 to 110 Celsius scale. Healthy NVIDIA: core 72, hotspot 84, delta 12. Aged NVIDIA paste: core 72, hotspot 98, delta 26, flagged a problem. AMD by design: core 70, hotspot 100, delta 30, normal.">
&lt;defs>&lt;linearGradient id="heat" x1="0" y1="0" x2="1" y2="0">&lt;stop offset="0" stop-color="#38bdf8" stop-opacity="0.35"/>&lt;stop offset="0.6" stop-color="#4ade80" stop-opacity="0.28"/>&lt;stop offset="1" stop-color="#ef4444" stop-opacity="0.4"/>&lt;/linearGradient>&lt;/defs>
&lt;rect x="95" y="180" width="290" height="4" rx="2" fill="url(#heat)"/>
&lt;line x1="95" y1="186" x2="385" y2="186" stroke="#25384a" stroke-width="1"/>
&lt;g font-family="-apple-system,Segoe UI,sans-serif" fill="#5f7488" font-size="9">
&lt;line x1="131.25" y1="184" x2="131.25" y2="188" stroke="#3a4e60"/>&lt;text x="131.25" y="199" text-anchor="middle">40&amp;#176;&lt;/text>
&lt;line x1="203.75" y1="184" x2="203.75" y2="188" stroke="#3a4e60"/>&lt;text x="203.75" y="199" text-anchor="middle">60&amp;#176;&lt;/text>
&lt;line x1="276.25" y1="184" x2="276.25" y2="188" stroke="#3a4e60"/>&lt;text x="276.25" y="199" text-anchor="middle">80&amp;#176;&lt;/text>
&lt;line x1="348.75" y1="184" x2="348.75" y2="188" stroke="#3a4e60"/>&lt;text x="348.75" y="199" text-anchor="middle">100&amp;#176;&lt;/text>
&lt;/g>
&lt;g font-family="-apple-system,Segoe UI,sans-serif">
&lt;text x="88" y="46" text-anchor="end" font-size="10" font-weight="700" fill="#cfe4f5">NVIDIA&lt;/text>
&lt;text x="88" y="57" text-anchor="end" font-size="9" fill="#5fbf75">healthy&lt;/text>
&lt;line x1="247.25" y1="50" x2="290.75" y2="50" stroke="#4ade80" stroke-width="7" stroke-linecap="round"/>
&lt;circle cx="247.25" cy="50" r="4.5" fill="#38bdf8"/>&lt;circle cx="290.75" cy="50" r="4.5" fill="#fb923c"/>
&lt;text x="269" y="37" text-anchor="middle" font-size="12" font-weight="800" fill="#7ee0a0">&amp;#916;12&amp;#176;&lt;/text>
&lt;text x="247.25" y="66" text-anchor="middle" font-size="9" fill="#9fc4e0">72&amp;#176;&lt;/text>
&lt;text x="290.75" y="66" text-anchor="middle" font-size="9" fill="#f0b787">84&amp;#176;&lt;/text>
&lt;/g>
&lt;g font-family="-apple-system,Segoe UI,sans-serif">
&lt;text x="88" y="98" text-anchor="end" font-size="10" font-weight="700" fill="#cfe4f5">NVIDIA&lt;/text>
&lt;text x="88" y="109" text-anchor="end" font-size="9" fill="#f28b8b">aged paste&lt;/text>
&lt;line x1="247.25" y1="102" x2="341.5" y2="102" stroke="#ef4444" stroke-width="7" stroke-linecap="round"/>
&lt;circle cx="247.25" cy="102" r="4.5" fill="#38bdf8"/>&lt;circle cx="341.5" cy="102" r="4.5" fill="#fb923c"/>
&lt;text x="294" y="89" text-anchor="middle" font-size="12" font-weight="800" fill="#fb7185">&amp;#916;26&amp;#176; &amp;#8212; repaste&lt;/text>
&lt;text x="247.25" y="118" text-anchor="middle" font-size="9" fill="#9fc4e0">72&amp;#176;&lt;/text>
&lt;text x="341.5" y="118" text-anchor="middle" font-size="9" fill="#f0b787">98&amp;#176;&lt;/text>
&lt;/g>
&lt;g font-family="-apple-system,Segoe UI,sans-serif">
&lt;text x="88" y="146" text-anchor="end" font-size="10" font-weight="700" fill="#cfe4f5">AMD&lt;/text>
&lt;text x="88" y="157" text-anchor="end" font-size="9" fill="#7fb2e6">by design&lt;/text>
&lt;line x1="240" y1="150" x2="348.75" y2="150" stroke="#60a5fa" stroke-width="7" stroke-linecap="round"/>
&lt;circle cx="240" cy="150" r="4.5" fill="#38bdf8"/>&lt;circle cx="348.75" cy="150" r="4.5" fill="#fb923c"/>
&lt;text x="294" y="137" text-anchor="middle" font-size="12" font-weight="800" fill="#93c5fd">&amp;#916;30&amp;#176; &amp;#8212; normal&lt;/text>
&lt;text x="240" y="166" text-anchor="middle" font-size="9" fill="#9fc4e0">70&amp;#176;&lt;/text>
&lt;text x="348.75" y="166" text-anchor="middle" font-size="9" fill="#f0b787">100&amp;#176;&lt;/text>
&lt;/g>
&lt;/svg>
&lt;/div>
&lt;div style="background:rgba(56,189,248,0.06);border:1px solid rgba(56,189,248,0.16);border-radius:7px;padding:10px 13px;margin-top:8px;font-size:12px;color:#b8cee0;line-height:1.5;">
&lt;strong style="color:#dcecfa;">Problem delta:&lt;/strong> NVIDIA over ~20&amp;#176; &amp;#183; AMD over ~30&amp;#176; (AMD runs wide on purpose). Both temps high together with a &lt;em>normal&lt;/em> delta means dust or airflow &amp;#8212; not paste. A delta that &lt;em>grew&lt;/em> over the years on the same card is the pump-out tell.
&lt;/div>
&lt;div style="margin-top:13px;padding-top:10px;border-top:1px solid rgba(56,189,248,0.12);font-size:10.5px;color:#6a819a;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;">
&lt;span>Delta thresholds per NVIDIA/AMD sensor behavior; note the delta check needs a readable hotspot (not available on RTX 50-series).&lt;/span>
&lt;span style="font-family:ui-monospace,monospace;color:#465a70;">techfuelhq.com&lt;/span>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="step-3-fix-the-real-cause-in-order">Step 3: Fix the real cause, in order&lt;/h2>
&lt;p>Once you&amp;rsquo;ve confirmed the card is genuinely too hot, work these from easiest to hardest. This is also roughly their hit-rate order.&lt;/p>
&lt;p>&lt;strong>1. Clean the dust.&lt;/strong> A heatsink packed with dust is the single most common real cause of a hot GPU, and it raises core and hotspot together. Power down, open the case, and blow the fins and fans out with a can of &lt;a href="https://www.amazon.com/s?k=compressed&amp;#43;air&amp;#43;duster&amp;amp;tag=techfuelhq-20" rel="nofollow sponsored noopener">compressed air&lt;/a> — hold the fan blades still so they don&amp;rsquo;t spin and generate a charge. Don&amp;rsquo;t forget the case intake filters, which choke airflow to the whole system.&lt;/p>
&lt;p>&lt;strong>2. Fix case airflow.&lt;/strong> A cool GPU needs cool air reaching it. Make sure intake and exhaust fans are working and unobstructed, the PC isn&amp;rsquo;t buried in an enclosed desk cabinet, and cables aren&amp;rsquo;t blocking the front intake. Adding one or two &lt;a href="https://www.amazon.com/s?k=120mm&amp;#43;case&amp;#43;fan&amp;amp;tag=techfuelhq-20" rel="nofollow sponsored noopener">case fans&lt;/a> for a card that&amp;rsquo;s starved for airflow often drops temps several degrees for very little money. If a GPU fan has actually stopped, that&amp;rsquo;s its own problem — see &lt;a href="https://techfuelhq.com/articles/gpu-fans-not-spinning-2026/">GPU Fans Not Spinning&lt;/a>.&lt;/p>
&lt;p>&lt;strong>3. Set an aggressive fan curve (and cap FPS).&lt;/strong> Open &lt;a href="https://www.msi.com/Landing/afterburner/graphics-cards" rel="noopener">MSI Afterburner&lt;/a> (works on any brand), enable manual fan control, and pull the curve up so the fans ramp earlier and harder. Capping your in-game frame rate — you rarely need 200 FPS — cuts the load the card has to cool. Both are free and instant.&lt;/p>
&lt;p>&lt;strong>4. Undervolt.&lt;/strong> The enthusiast favorite: in Afterburner, flatten the voltage/frequency curve so the card hits the same clocks at lower voltage. Done right it cuts load temps meaningfully — often 5-10 °C — with little to no performance loss. Worth learning if temps are borderline and you&amp;rsquo;d rather not open the card.&lt;/p>
&lt;p>&lt;strong>5. Repaste and replace pads.&lt;/strong> This is the fix when Step 2 flagged a wide hotspot delta on an aging card. Fresh &lt;a href="https://www.amazon.com/s?k=thermal&amp;#43;paste&amp;amp;tag=techfuelhq-20" rel="nofollow sponsored noopener">thermal paste&lt;/a> and correctly-sized replacement pads restore even contact and close the gap. It&amp;rsquo;s a genuine teardown — if the card is still under warranty, &lt;strong>don&amp;rsquo;t open it; RMA it instead&lt;/strong>, because removing the shroud can void coverage. Not sure whether an older card is even due for it? A GPU doesn&amp;rsquo;t need a repaste on any fixed schedule — &lt;a href="https://techfuelhq.com/articles/how-often-to-replace-thermal-paste-2026/">how often to replace thermal paste&lt;/a> covers when a widening delta actually makes it worthwhile.&lt;/p>
&lt;h2 id="when-its-not-really-the-temperature">When it&amp;rsquo;s not really the temperature&lt;/h2>
&lt;p>Two traps to avoid. First, if your card &lt;em>throttles or crashes&lt;/em> but the temperatures you&amp;rsquo;re reading are actually fine, the fan may have been a red herring — a thermal-&lt;em>looking&lt;/em> crash can really be a driver fault or an unstable overclock. If games crash to desktop or you get black screens without high temps, see &lt;a href="https://techfuelhq.com/articles/gpu-driver-crash-fix-2026/">Fix GPU Driver Crashes&lt;/a>. Second, if you&amp;rsquo;re seeing weird colors, flickering, or graphical glitches, hot VRAM can cause it — but so can a dying card, and those need a different diagnosis: &lt;a href="https://techfuelhq.com/articles/gpu-artifacts-2026/">GPU Artifacts vs Dying VRAM&lt;/a>. Third, if the whole machine reboots or cuts off under load while the GPU temps read fine, the heat is likely coming from the CPU instead — confirm &lt;a href="https://techfuelhq.com/articles/cpu-overheating-2026/">whether the CPU is actually overheating&lt;/a> the same core-vs-hotspot way — or it&amp;rsquo;s a power fault rather than heat, which the &lt;a href="https://techfuelhq.com/articles/pc-keeps-restarting-2026/">PC keeps restarting guide&lt;/a> works through in order.&lt;/p>
&lt;p>And don&amp;rsquo;t over-correct. A GPU that lives at 60 °C because you&amp;rsquo;ve run the fans at 100% forever is loud for no reason — the card was fine in the 70s. The goal isn&amp;rsquo;t the lowest possible number; it&amp;rsquo;s staying comfortably under the throttle point with reasonable noise.&lt;/p>
&lt;h2 id="the-quick-version">The quick version&lt;/h2>
&lt;ol>
&lt;li>&lt;strong>Confirm it&amp;rsquo;s actually hot.&lt;/strong> Core in the 70s/low-80s under load = normal. AMD hotspot at 95-105 °C beside a ~70 °C core = normal by design. Only core at ~85 °C+ (NVIDIA) / ~95 °C+ (AMD) with dropping clocks is a real problem.&lt;/li>
&lt;li>&lt;strong>Check the hotspot delta.&lt;/strong> Hotspot minus core: over ~20 °C (NVIDIA) or ~30 °C (AMD) — especially if it grew over time — means the thermal paste has pumped out, not that you have dust. &lt;em>On RTX 50-series cards the hotspot isn&amp;rsquo;t readable, so judge by throttling behavior instead.&lt;/em>&lt;/li>
&lt;li>&lt;strong>Fix by cause.&lt;/strong> Both temps high together → clean dust + improve airflow + fan curve. Wide/growing delta → repaste and replace pads (RMA instead if in warranty). Undervolt for an easy few degrees either way.&lt;/li>
&lt;li>&lt;strong>Rule out imposters.&lt;/strong> Crashes with normal temps = driver, not heat. Visual glitches = artifacts/VRAM, a separate diagnosis.&lt;/li>
&lt;/ol>
&lt;p>Read the two temperatures and the delta between them before you spend a cent, and you&amp;rsquo;ll stop repasting cards that just needed dusting — and stop dusting cards whose paste actually pumped out two years ago.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>Normal GPU temperature ranges, throttle points, and the core-vs-hotspot delta thresholds (NVIDIA ~10-15 °C healthy, AMD 20-35 °C by design): NVIDIA and AMD published thermal specs, cross-checked against HWiNFO sensor behavior and TechPowerUp GPU-Z documentation.&lt;/li>
&lt;li>AMD RX 7000/9000 (RDNA 3/4) 110 °C junction limit and deliberately wide hotspot design: AMD product specs and reviewer thermal testing (TechPowerUp, Tom&amp;rsquo;s Hardware).&lt;/li>
&lt;li>NVIDIA removing public hotspot sensor access on the RTX 50-series (Blackwell), the invalid 255 °C readout, and the RTX 5070 Ti measured at 107 °C hotspot via NVIDIA&amp;rsquo;s internal MODS tool while public tools showed ~67-68 °C core: &lt;a href="https://www.tomshardware.com/pc-components/gpus/hotspot-temperature-sensor-on-nvidias-blackwell-gaming-gpus-is-still-accessible-if-you-have-access-to-nvidias-internal-mods-tool-nvidia-rtx-5070-ti-caught-throttling-at-107-c-over-poor-tim-application" rel="noopener">Tom&amp;rsquo;s Hardware&lt;/a> and VideoCardz coverage of the GPU-Z developer&amp;rsquo;s confirmation.&lt;/li>
&lt;li>Thermal-paste pump-out on RTX 30/40-series after ~18-24 months and GDDR6X memory happiest under ~95 °C: enthusiast repaste testing and HWiNFO memory-junction reporting.&lt;/li>
&lt;/ul>
&lt;p>&lt;em>General diagnostic guidance for desktop GPUs in 2026; check your specific card&amp;rsquo;s documentation for exact figures. Found an error? Email &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a> with the article URL.&lt;/em>&lt;/p></description></item><item><title>Lines on Your Monitor? Tell If It's the Cable, GPU, or a Dying Panel (2026)</title><link>https://techfuelhq.com/articles/lines-on-monitor-screen-2026/</link><pubDate>Fri, 10 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/lines-on-monitor-screen-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-07-10 · ~9 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence what gets recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;p>A line appears on your screen and the internet immediately splits into two camps. One says your monitor is dead, buy a new one. The other says it&amp;rsquo;s your graphics card, RMA it. Both are guessing, and following the wrong guess costs you real money — a replaced monitor that was fine, or a card sent back when the actual problem was a bent $8 cable.&lt;/p>
&lt;p>The truth is that &amp;ldquo;lines on the screen&amp;rdquo; is one symptom sitting on top of at least five completely different faults: a dying panel, a loose ribbon cable inside the monitor, a bad video cable or port, a refresh-rate or driver problem, or a failing GPU. You don&amp;rsquo;t need to know electronics to tell them apart. You need one button and about sixty seconds.&lt;/p>
&lt;h2 id="step-1-the-osd-test--is-it-the-monitor-or-the-pc">Step 1: The OSD test — is it the monitor or the PC?&lt;/h2>
&lt;p>Every standalone monitor has physical buttons (or a little joystick) on the bottom or back edge that pull up its &lt;strong>on-screen display&lt;/strong> — the menu for brightness, contrast, and inputs. That menu is your diagnostic referee, because &lt;strong>the monitor draws the OSD with its own internal board — nothing from your PC touches it.&lt;/strong>&lt;/p>
&lt;p>Press the button and bring up the menu while the lines are visible, then look carefully at the menu overlay itself:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>The lines cut through the OSD menu too&lt;/strong> → the fault is &lt;em>inside the monitor&lt;/em>. The PC is sending a clean signal (or no signal at all, in the menu&amp;rsquo;s case) and the corruption is being added by the panel or the ribbon cable feeding it. Your graphics card is off the hook. Skip to &lt;a href="#step-2-its-the-monitor-read-the-pattern">Step 2&lt;/a>.&lt;/li>
&lt;li>&lt;strong>The OSD menu is perfectly clean&lt;/strong> while the rest of the screen has lines → the monitor is fine. The corruption is arriving from &lt;em>upstream&lt;/em> — the cable, the port, the refresh rate, the driver, or the GPU. Jump to &lt;a href="#step-3-its-upstream-work-cheapest-first">Step 3&lt;/a>.&lt;/li>
&lt;/ul>
&lt;p>If you want a second opinion, &lt;strong>unplug the video cable entirely.&lt;/strong> Most monitors respond by floating a &amp;ldquo;No Signal&amp;rdquo; or &amp;ldquo;Check Cable&amp;rdquo; box on screen, generated internally. If that box still has a line through it, the panel is bad, full stop.&lt;/p>
&lt;p>This one test throws out half the advice on the internet before you&amp;rsquo;ve changed a single setting.&lt;/p>
&lt;h2 id="step-2-its-the-monitor--read-the-pattern">Step 2: It&amp;rsquo;s the monitor — read the pattern&lt;/h2>
&lt;p>If the lines survived the OSD test, the problem is the display. Now the &lt;em>shape&lt;/em> of the line tells you how bad it is.&lt;/p>
&lt;p>&lt;strong>A single thin line, one solid color&lt;/strong> (red, white, blue, orange) running top to bottom or side to side is the most common — and often the most fixable — version. Inside an LCD, every column of pixels is fed through a flat ribbon cable to a driver chip. When one of those connections loosens from years of heat cycling, that column gets stuck and you see a fixed colored line.&lt;/p>
&lt;p>Here&amp;rsquo;s the field test that thousands of people have confirmed: &lt;strong>press or gently flex the bezel right where the line begins.&lt;/strong> If the line changes color, dims, or vanishes while you hold pressure, you&amp;rsquo;ve found a loose internal ribbon cable. That&amp;rsquo;s a &lt;em>diagnosis, not a cure&lt;/em> — the permanent fix is opening the monitor and reseating (or replacing) that ribbon connector, which is doable if you&amp;rsquo;re handy but voids the warranty and risks cracking the panel. On a monitor still under warranty, don&amp;rsquo;t pry — claim it.&lt;/p>
&lt;p>&lt;strong>A band of lines, blocks, or garbled color&lt;/strong> that covers part of the screen and grows over time usually means the panel&amp;rsquo;s own driver ICs or its glass are failing. There&amp;rsquo;s no reliable home fix for that; it&amp;rsquo;s a replace.&lt;/p>
&lt;p>&lt;strong>One more monitor-side check:&lt;/strong> do the lines appear &lt;em>before Windows loads&lt;/em> — in the BIOS/UEFI screen or the motherboard splash? If corruption is present that early, no driver or operating-system setting can be the cause. It&amp;rsquo;s hardware, and combined with a failed OSD test, it&amp;rsquo;s the monitor.&lt;/p>
&lt;h2 id="step-3-its-upstream--work-cheapest-first">Step 3: It&amp;rsquo;s upstream — work cheapest first&lt;/h2>
&lt;p>If the OSD menu was clean, the monitor is innocent and the fault is somewhere between the GPU and the panel. Work this list in order — it goes cheapest and most-likely to most-involved.&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Reseat both ends of the video cable.&lt;/strong> Unplug the HDMI or DisplayPort cable at the monitor &lt;em>and&lt;/em> the PC, and push both firmly back in. Loose connectors are a genuine cause of intermittent lines and sparkles.&lt;/li>
&lt;li>&lt;strong>Swap the cable.&lt;/strong> Video cables fail at the connector and from tight bends, and a marginal cable struggles most at high resolution and refresh rate — exactly when lines show up. A spare &lt;a href="https://www.amazon.com/s?k=displayport&amp;#43;2.1&amp;#43;cable&amp;amp;tag=techfuelhq-20" rel="nofollow sponsored noopener">DisplayPort cable&lt;/a> or &lt;a href="https://www.amazon.com/s?k=hdmi&amp;#43;2.1&amp;#43;cable&amp;amp;tag=techfuelhq-20" rel="nofollow sponsored noopener">HDMI cable&lt;/a> is a few dollars and rules this out for good.&lt;/li>
&lt;li>&lt;strong>Change the connection type.&lt;/strong> If you&amp;rsquo;re on HDMI, try DisplayPort, or vice versa, and use a different physical port on the GPU. A repeatedly reported real fix: red lines on an HDMI connection that disappeared entirely once the monitor was moved to DisplayPort.&lt;/li>
&lt;li>&lt;strong>Drop the refresh rate.&lt;/strong> In Windows &lt;em>Settings → System → Display → Advanced display&lt;/em>, set the refresh rate down from a high value (144 Hz or 165 Hz) to 60 Hz. If the lines stop, the cable or port couldn&amp;rsquo;t sustain the bandwidth the higher rate demanded — go back to step 2 with a better cable.&lt;/li>
&lt;li>&lt;strong>Clean-reinstall the graphics driver.&lt;/strong> A corrupted driver can throw display artifacts. Use &lt;a href="https://www.wagnardsoft.com/" rel="noopener">DDU (Display Driver Uninstaller)&lt;/a> in Safe Mode to strip the old driver completely, then install the current one from &lt;a href="https://www.nvidia.com/Download/index.aspx" rel="noopener">NVIDIA&lt;/a>, &lt;a href="https://www.amd.com/en/support" rel="noopener">AMD&lt;/a>, or Intel.&lt;/li>
&lt;/ol>
&lt;p>If a different cable, a different port, and a clean driver all change nothing, you&amp;rsquo;ve isolated it to the graphics card itself.&lt;/p>
&lt;h2 id="step-4-is-it-the-gpu">Step 4: Is it the GPU?&lt;/h2>
&lt;p>The graphics card becomes the prime suspect when the lines follow the &lt;em>PC&lt;/em>, not the monitor — they appear on a second monitor and a second cable too, they show up at the Windows desktop or even in the BIOS, and especially when they only erupt under load in a game while the desktop stays clean.&lt;/p>
&lt;p>There&amp;rsquo;s a fast confirmation: &lt;strong>take a screenshot while the corruption is on screen and open the file on your phone or another PC.&lt;/strong> Screen capture grabs the frame &lt;em>before&lt;/em> it leaves the graphics card, so if the lines are baked into the saved image, the card rendered them wrong — that&amp;rsquo;s a render-side fault (GPU, VRAM, driver, or the game). If the capture is clean while the monitor still shows lines, the frame left the card fine and got mangled downstream, which sends you back to the cable and connection.&lt;/p>
&lt;p>Once it&amp;rsquo;s pointing at the card, the real question is whether it&amp;rsquo;s a fixable software issue or dying silicon — an unstable overclock and a bad driver both fake the symptoms of failing VRAM. Our companion guide, &lt;a href="https://techfuelhq.com/articles/gpu-artifacts-2026/">GPU artifacts: sorting software from a dying card&lt;/a>, walks that split in detail so you only RMA a card that&amp;rsquo;s genuinely failing.&lt;/p>
&lt;h2 id="special-case-laptops">Special case: laptops&lt;/h2>
&lt;p>On a laptop there&amp;rsquo;s no external cable to swap, but the same logic applies — the &amp;ldquo;cable&amp;rdquo; is just internal. The panel connects through a thin ribbon that winds through the hinge, and that ribbon is the single most common source of laptop screen lines because it flexes every time you open and close the lid. The tell is that &lt;strong>opening, closing, or twisting the lid changes the line.&lt;/strong> An external monitor plugged into the laptop is your OSD test here: if the external screen is clean, the laptop&amp;rsquo;s GPU is fine and the fault is the panel or its hinge ribbon.&lt;/p>
&lt;h2 id="quick-reference">Quick reference&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">What you see&lt;/th>
&lt;th scope="col">Most likely cause&lt;/th>
&lt;th scope="col">The test that confirms it&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Line crosses the monitor&amp;rsquo;s own OSD menu&lt;/td>
&lt;td>Panel / internal ribbon&lt;/td>
&lt;td>OSD test fails&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Single thin colored line, changes when you press the bezel&lt;/td>
&lt;td>Loose internal ribbon cable&lt;/td>
&lt;td>Pressure on the bezel&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Lines in BIOS / before Windows loads&lt;/td>
&lt;td>Hardware (monitor or GPU), not driver&lt;/td>
&lt;td>Appears pre-boot&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Lines vanish with a different cable or HDMI↔DP&lt;/td>
&lt;td>Bad cable or port&lt;/td>
&lt;td>Swap fixes it&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Lines only at high refresh rate&lt;/td>
&lt;td>Cable bandwidth limit&lt;/td>
&lt;td>Drop to 60 Hz&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Lines only in games, clean desktop&lt;/td>
&lt;td>GPU (heat / overclock / VRAM)&lt;/td>
&lt;td>Screenshot captures them&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Lines on a second monitor + second cable too&lt;/td>
&lt;td>Graphics card&lt;/td>
&lt;td>Follows the PC, not the screen&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Laptop line changes when you move the lid&lt;/td>
&lt;td>Hinge ribbon cable&lt;/td>
&lt;td>Flex the lid&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;h2 id="when-to-stop-and-replace">When to stop and replace&lt;/h2>
&lt;p>Replace the monitor when the OSD test fails &lt;em>and&lt;/em> a bezel press does nothing (or only helps briefly and you don&amp;rsquo;t want to open it), when the lines are spreading, or when it&amp;rsquo;s an out-of-warranty panel with failing driver ICs. Replace or service the GPU only after the screenshot test, a second monitor, and a clean driver all still point at the card. Everything else on this page — cables, ports, refresh rate, drivers — is cheap, reversible, and worth doing first. The most expensive mistake with screen lines isn&amp;rsquo;t the repair; it&amp;rsquo;s replacing the wrong part before you&amp;rsquo;ve spent sixty seconds finding out which part is actually broken.&lt;/p>
&lt;p>&lt;em>Related: &lt;a href="https://techfuelhq.com/articles/gpu-artifacts-2026/">GPU artifacts — software vs a dying card&lt;/a> · &lt;a href="https://techfuelhq.com/articles/monitor-keeps-going-black-2026/">Monitor keeps going black&lt;/a> · &lt;a href="https://techfuelhq.com/articles/how-to-fix-monitor-ghosting-2026/">How to fix monitor ghosting&lt;/a>&lt;/em>&lt;/p></description></item><item><title>Motherboard Failure Symptoms: How to Tell It's Really the Board (2026)</title><link>https://techfuelhq.com/articles/motherboard-failure-symptoms-2026/</link><pubDate>Fri, 10 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/motherboard-failure-symptoms-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-07-10 · ~8 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence what gets recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;p>Here is the uncomfortable truth every &amp;ldquo;10 signs of a bad motherboard&amp;rdquo; list skips: almost none of those signs actually point at the motherboard. No power, random blue screens, dead USB ports, spontaneous restarts, a PC that turns on but shows nothing — every one of those symptoms is produced &lt;em>just as easily&lt;/em> by the power supply, the RAM, the CPU, or the graphics card. The motherboard touches everything, so when something else fails, the board is where the blame lands.&lt;/p>
&lt;p>That&amp;rsquo;s why the r/buildapc community has a 200-plus-comment troubleshooting thread full of people who were &lt;em>about&lt;/em> to buy a new board — and didn&amp;rsquo;t have to. The fix was a CMOS reset, a swapped power supply, a reseated stick of RAM, or, in more than one case, a dead front-panel power button. A motherboard is almost never diagnosed by a symptom. It&amp;rsquo;s diagnosed by &lt;strong>exclusion&lt;/strong> — you rule the other parts out, one at a time, until the board is the only suspect left. This guide does exactly that, and then shows you the small set of tells that &lt;em>only&lt;/em> a bad board produces.&lt;/p>
&lt;h2 id="step-1-first-is-the-board-even-dead-watch-for-post">Step 1: First, is the board even dead? Watch for POST&lt;/h2>
&lt;p>Before anything else, settle one question: does the board &lt;strong>POST&lt;/strong> — does it run its Power-On Self-Test far enough to signal that the core hardware is alive? This one observation saves people the most money, because a board that POSTs is a board that works.&lt;/p>
&lt;p>Three things count as &amp;ldquo;it POSTed&amp;rdquo;:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>It beeps.&lt;/strong> If the motherboard has a speaker (or a header you can attach one to) and it sounds a beep pattern at power-on, the board is alive. As one experienced builder put it in that thread, the chip that drives POST is one of the most reliable parts on the board and will almost always output a beep or code &lt;em>even when something else is seriously wrong.&lt;/em> A dead board, by contrast, fails to POST roughly 99% of the time. &lt;strong>A beeping board is not your problem.&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Its debug LEDs cycle.&lt;/strong> Boards with a CPU/DRAM/VGA/BOOT LED cluster (or a two-digit code display) that light in sequence are running POST — see Step 5 for reading them.&lt;/li>
&lt;li>&lt;strong>It reaches a screen&lt;/strong> — even just the BIOS logo or a &amp;ldquo;no boot device&amp;rdquo; message. That&amp;rsquo;s a fully working board with a problem further down the line, not a dead one.&lt;/li>
&lt;/ul>
&lt;p>Now the trap that catches everyone: &lt;strong>lights and spinning fans are not POST.&lt;/strong> As long as the PSU is feeding its standby voltage, a board can light its RGB, its standby LED, and even its little onboard power button while being completely unable to boot. Fans can spin for the same reason. &amp;ldquo;It lights up&amp;rdquo; tells you the PSU&amp;rsquo;s standby rail works — nothing more. If the board powers on, fans spin, LEDs glow, but it &lt;strong>never beeps, never advances a debug LED, and never shows a picture&lt;/strong>, &lt;em>that&lt;/em> is the pattern worth suspecting — after you&amp;rsquo;ve excluded everything in Step 4.&lt;/p>
&lt;h2 id="step-2-the-symptoms-that-are-traps-and-what-really-causes-them">Step 2: The symptoms that are traps (and what really causes them)&lt;/h2>
&lt;p>These are the classic &amp;ldquo;motherboard failure symptoms.&amp;rdquo; Each one is far more often something else. Before you touch the board, clear the cheaper suspect:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>No power at all / dead when you hit the button.&lt;/strong> Suspect the &lt;strong>power supply&lt;/strong> first, then the front-panel power button. A failed or unplugged PSU, or a dead case power switch, produces an identical &amp;ldquo;totally dead&amp;rdquo; PC. (One builder in the thread chased a &amp;ldquo;dead board&amp;rdquo; that turned out to be the power button — shorting the two power pins on the board with a screwdriver booted it fine.) Full PSU walk-through: &lt;a href="https://techfuelhq.com/articles/psu-failure-symptoms-2026/">PSU failure symptoms&lt;/a>.&lt;/li>
&lt;li>&lt;strong>Fans spin but there&amp;rsquo;s no display.&lt;/strong> Suspect &lt;strong>RAM and GPU&lt;/strong> before the board — reseat the memory (one stick, slot A2), and reseat or swap the graphics card. A no-POST-no-picture machine is usually a seating or component fault, and it has its own dedicated diagnostic: &lt;a href="https://techfuelhq.com/articles/pc-turns-on-but-no-display-2026/">PC turns on but no display&lt;/a>.&lt;/li>
&lt;li>&lt;strong>Graphics card not detected.&lt;/strong> Reseat the card and its power cables, and test it in another slot or PC before blaming the board&amp;rsquo;s PCIe. See &lt;a href="https://techfuelhq.com/articles/graphics-card-not-detected-2026/">graphics card not detected&lt;/a>.&lt;/li>
&lt;li>&lt;strong>Random blue screens and crashes.&lt;/strong> Suspect &lt;strong>RAM&lt;/strong> (run MemTest86) and drivers first; unstable memory and bad drivers cause far more BSODs than a failing board.&lt;/li>
&lt;li>&lt;strong>Random restarts or shutdowns.&lt;/strong> Suspect the &lt;strong>PSU&lt;/strong> and &lt;strong>thermals&lt;/strong> — an undersized or dying supply and an overheating CPU both cause spontaneous reboots that look exactly like a board fault.&lt;/li>
&lt;li>&lt;strong>A USB port stopped working.&lt;/strong> Suspect &lt;strong>drivers and power&lt;/strong> before hardware — and even if it is physical, a single dead port is often just that one port, not a dead board.&lt;/li>
&lt;/ul>
&lt;p>The pattern is clear: the loud, scary symptoms are shared, so a symptom alone can&amp;rsquo;t convict the board. What &lt;em>can&lt;/em> is the short list below.&lt;/p>
&lt;h2 id="step-3-the-tells-that-only-a-motherboard-produces">Step 3: The tells that only a motherboard produces&lt;/h2>
&lt;p>A few symptoms don&amp;rsquo;t have a cheaper explanation. When you see one of these, the board itself is genuinely implicated:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Physical damage.&lt;/strong> Capacitors bulging on top or leaking brown crust, scorch marks or discoloration near the VRM or CPU socket, or a sharp burning/electrical smell coming from the board. This is the closest thing to a smoking gun — and it&amp;rsquo;s board-specific.&lt;/li>
&lt;li>&lt;strong>The CMOS won&amp;rsquo;t hold.&lt;/strong> A board that forgets the time, loses BIOS settings on every power-off, or repeatedly resets to defaults has a failing CMOS/RTC circuit (sometimes just a dead coin battery, sometimes the board). If a fresh CR2032 doesn&amp;rsquo;t fix it, that&amp;rsquo;s a board fault.&lt;/li>
&lt;li>&lt;strong>A specific rear-I/O port group is dead while others work.&lt;/strong> The rear USB/audio/LAN ports are soldered directly to the board. If one bank of ports is stone dead while the rest of the system is fine, that&amp;rsquo;s board-level, not driver-level.&lt;/li>
&lt;li>&lt;strong>A single DIMM or PCIe slot is dead — but the part works elsewhere.&lt;/strong> If a known-good RAM stick works in slot A2 but never in B2, or a known-good GPU works in a different PC but not in your top PCIe slot, you&amp;rsquo;ve localized the fault to that slot on the board.&lt;/li>
&lt;li>&lt;strong>A debug LED that stays stuck on one stage after everything else is swap-tested good.&lt;/strong> Covered next.&lt;/li>
&lt;/ul>
&lt;p>If none of these are present and the machine merely &amp;ldquo;won&amp;rsquo;t boot,&amp;rdquo; you are not yet looking at a confirmed bad board — you&amp;rsquo;re looking at a not-yet-excluded one. Go to Step 4.&lt;/p>
&lt;h2 id="step-4-the-exclusion-ladder--confirm-the-board-by-ruling-out-the-rest">Step 4: The exclusion ladder — confirm the board by ruling out the rest&lt;/h2>
&lt;p>This is the actual diagnosis. Work down the rungs; &lt;strong>power off at the PSU switch before touching anything inside&lt;/strong>, and mind static. At each rung, note the real culprits people find there — because most &amp;ldquo;dead boards&amp;rdquo; get fixed on a rung &lt;em>above&lt;/em> the board.&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Look and smell.&lt;/strong> Blown caps, burn marks, or a burnt odor? If yes, jump to Step 6. If no, continue.&lt;/li>
&lt;li>&lt;strong>Reseat the power cables.&lt;/strong> Firmly re-seat the 24-pin ATX and — the one people forget — the &lt;strong>8-pin EPS/CPU power&lt;/strong> connector at the top of the board. A missing or loose EPS is a classic &amp;ldquo;I killed my board&amp;rdquo; scare: the board powers standby fine, fans may twitch, but the CPU never gets power and nothing POSTs. (One builder spent an hour debugging a &amp;ldquo;dead&amp;rdquo; build that was just an unplugged EPS.)&lt;/li>
&lt;li>&lt;strong>Clear the CMOS.&lt;/strong> This is the number-one fix in that entire 200-comment thread — comment after comment of &amp;ldquo;clearing CMOS saved me a new motherboard.&amp;rdquo; Use the Clear-CMOS jumper/button, or pull the coin battery for five to ten minutes and hold the power button 30 seconds to drain residual charge. Then try to boot.&lt;/li>
&lt;li>&lt;strong>Exclude the PSU.&lt;/strong> Test the supply (PSU tester or paperclip jumper test), and ideally swap in a known-good supply of adequate wattage. If another PSU boots the system, the board is innocent. Details: &lt;a href="https://techfuelhq.com/articles/psu-failure-symptoms-2026/">PSU failure symptoms&lt;/a>.&lt;/li>
&lt;li>&lt;strong>Minimal boot.&lt;/strong> Strip to the essentials: motherboard, CPU, &lt;strong>one&lt;/strong> stick of RAM in the recommended slot, and the PSU — no GPU (if the CPU has integrated graphics), no drives, no extra USB or expansion cards. If it POSTs now, add parts back one at a time until the culprit reveals itself. A single bad stick or a shorting add-in card is a common find here.&lt;/li>
&lt;li>&lt;strong>Swap RAM and reseat/relocate.&lt;/strong> Try a different stick and different slots. Bad RAM prevents boot and mimics a dead board.&lt;/li>
&lt;li>&lt;strong>Only now, the CPU.&lt;/strong> If it still won&amp;rsquo;t POST after all of the above, the remaining suspects are the CPU and the board. Reseat the CPU (check for bent socket pins — a frequent casualty of cleaning or handling), and if you can, test a known-good compatible CPU. If a good CPU on your board still won&amp;rsquo;t POST, and your board on a good PSU with good RAM still won&amp;rsquo;t POST, the motherboard is the answer — by exclusion.&lt;/li>
&lt;/ol>
&lt;p>Notice how far down the ladder the board is. Everything above it is cheaper, faster, and statistically more likely.&lt;/p>
&lt;h2 id="step-5-reading-the-debug-leds-and-beep-codes">Step 5: Reading the debug LEDs and beep codes&lt;/h2>
&lt;p>If your board has the four-LED debug cluster (ASUS Q-LED, MSI EZ Debug, Gigabyte Status LEDs, ASRock Dr. Debug), it&amp;rsquo;s trying to tell you where POST stalled. During a normal boot each LED flashes briefly and goes out as that check passes; whichever one &lt;strong>stays lit&lt;/strong> marks the stage that failed:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>CPU&lt;/strong> — checked first. A stuck CPU LED is the most &lt;em>misread&lt;/em> signal on the board. It rarely means &amp;ldquo;dead CPU.&amp;rdquo; Far more often it&amp;rsquo;s the &lt;strong>8-pin EPS not fully seated&lt;/strong>, a CPU cooler mounted too tight or uneven, bent socket pins, RAM not seated (yes, memory problems can light the CPU LED), or a newer CPU on a board that needs a &lt;strong>BIOS update&lt;/strong> to recognize it. Exhaust those before condemning the CPU or board.&lt;/li>
&lt;li>&lt;strong>DRAM&lt;/strong> — a memory issue: reseat, try one stick, try another slot, check the QVL for your kit&amp;rsquo;s speed.&lt;/li>
&lt;li>&lt;strong>VGA&lt;/strong> — the board can&amp;rsquo;t initialize the graphics card: reseat the GPU and its power, try another slot or another card.&lt;/li>
&lt;li>&lt;strong>BOOT&lt;/strong> — POST passed but no bootable drive was found: a storage or BIOS-boot-order issue, not a board fault. If the drive is missing from BIOS entirely, work it as an &lt;a href="https://techfuelhq.com/articles/ssd-not-showing-up-2026/">SSD not showing up in BIOS or Windows&lt;/a> problem first.&lt;/li>
&lt;/ul>
&lt;p>Beep codes work the same way, minus the display — a pattern of beeps maps to a failed stage in your board manual. And remember the headline from Step 1: &lt;strong>if it beeps or cycles LEDs at all, the board is alive.&lt;/strong> The debug LEDs are a diagnostic &lt;em>feature working&lt;/em>, not a death notice. Only a debug LED frozen on a stage whose component you&amp;rsquo;ve already swap-tested good points back at the board.&lt;/p>
&lt;h2 id="step-6-if-it-really-is-the-board--repair-or-replace">Step 6: If it really is the board — repair or replace&lt;/h2>
&lt;p>If you found a blown capacitor or burn mark, or the board failed the full exclusion ladder, it&amp;rsquo;s confirmed. Two paths:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Repair&lt;/strong> is occasionally worth it. A local board-level tech can resolder a single blown capacitor or reflow a connector — builders have reported a blown-cap fix for around $25 — and that can make sense for a recent, otherwise-healthy board. If it&amp;rsquo;s under warranty, &lt;strong>RMA it&lt;/strong> instead of opening it up.&lt;/li>
&lt;li>&lt;strong>Replace&lt;/strong> is the usual answer. Most consumer board faults (a failed VRM, cracked traces, a damaged socket) aren&amp;rsquo;t economically repairable. Match the socket and chipset to your existing CPU and RAM if you want a drop-in swap; a fresh &lt;a href="https://www.amazon.com/s?k=motherboard&amp;amp;tag=techfuelhq-20" rel="nofollow sponsored noopener">motherboard&lt;/a> for your platform is the clean fix. If your CPU generation is old, price the whole platform, because a new board may pull a new CPU and RAM along with it.&lt;/li>
&lt;/ul>
&lt;p>One more thing the thread hammers home: if the cause was a &lt;strong>surge or a failing PSU&lt;/strong>, the damage rarely stops at the board — test the CPU and drives before trusting the rebuild, and put the new board behind a real &lt;a href="https://www.amazon.com/s?k=surge&amp;#43;protector&amp;amp;tag=techfuelhq-20" rel="nofollow sponsored noopener">surge protector&lt;/a>. And take care during install: a couple of builders killed a good board by letting a large, heavy graphics card scrape across it on the way in.&lt;/p>
&lt;h2 id="the-bottom-line">The bottom line&lt;/h2>
&lt;p>A motherboard is a diagnosis of exclusion, not a symptom. The symptoms everyone lists — no power, blue screens, dead ports, random restarts, no display — are shared with the PSU, RAM, CPU, and GPU, which is why so many people replace a board that was never broken. Start by checking whether the board even POSTs (a beep or a cycling debug LED means it&amp;rsquo;s alive), ignore the false comfort of a board that merely lights up, and then walk the exclusion ladder: reseat power, clear CMOS, swap the PSU, strip to a minimal boot. Only when a good PSU, good RAM, and a good CPU still won&amp;rsquo;t POST — or you find a blown cap or a burn mark — is it actually the motherboard. Most of the time, it&amp;rsquo;s the $0 CMOS reset, the cheaper part, or the loose cable, not the $200 board.&lt;/p></description></item><item><title>PC Turns On But No Display? Read the Motherboard Before You Buy Anything (2026)</title><link>https://techfuelhq.com/articles/pc-turns-on-but-no-display-2026/</link><pubDate>Fri, 10 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/pc-turns-on-but-no-display-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-07-10 · ~8 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence what gets recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;p>The fans spin. The RGB lights up. Maybe the graphics card fans turn too. But the monitor sits there black — &amp;ldquo;No Signal&amp;rdquo; — and you have no idea which of the dozen parts inside is the problem. So you start guessing, and guessing gets expensive fast.&lt;/p>
&lt;p>(If pressing power gets you &lt;em>nothing at all&lt;/em> — no fans, no lights, no sound — that&amp;rsquo;s a different problem: the PC isn&amp;rsquo;t powering on in the first place, which is a power-on-path fault. Start with &lt;a href="https://techfuelhq.com/articles/power-button-not-working-pc-2026/">Power Button Not Working on Your PC?&lt;/a> and come back here once it&amp;rsquo;s spinning up.)&lt;/p>
&lt;p>Here&amp;rsquo;s a true story that plays out in build-help forums every single day: someone with this exact symptom buys a whole new motherboard, installs it, gets the same black screen — and &lt;em>then&lt;/em> realizes they&amp;rsquo;d never plugged both PCIe power cables into the graphics card. A five-second fix cost them a motherboard. The reason it happened is that they skipped the one step that would have told them where to look: &lt;strong>the motherboard is already reporting which component failed. You just have to read it.&lt;/strong>&lt;/p>
&lt;p>This guide is built around that step. Don&amp;rsquo;t reseat anything, don&amp;rsquo;t order parts, and definitely don&amp;rsquo;t RMA a working board until you&amp;rsquo;ve done the two-minute check and read the debug LED.&lt;/p>
&lt;p>The whole troubleshoot fits on one page. Here it is as a map — the &lt;em>entire&lt;/em> decision, start to fix, before you touch a screwdriver:&lt;/p>
&lt;!-- ========== SIGNATURE VISUAL A: THE NO-DISPLAY DECISION TREE ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;border:1px solid rgba(255,255,255,0.07);border-radius:10px;padding:26px 22px 20px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
&lt;div style="margin-bottom:20px;">
&lt;div style="font-size:19px;font-weight:700;color:#e8e8f0;letter-spacing:-0.3px;">The no-display decision tree&lt;/div>
&lt;div style="font-size:12.5px;color:#9a9ab5;margin-top:5px;line-height:1.5;">Follow it top to bottom. Every path ends at a specific fix, not a guess &amp;mdash; and the branch you land on is chosen &lt;em>by the motherboard&lt;/em>, not by you. The most expensive mistake is skipping to the bottom before reading the board.&lt;/div>
&lt;/div>
&lt;!-- START -->
&lt;div style="display:flex;justify-content:center;">
&lt;div style="background:#18182f;border:1px solid #34345a;border-radius:999px;padding:9px 20px;font-size:13px;color:#c8c8d8;font-weight:600;">Black screen &amp;middot; fans &amp;amp; RGB running&lt;/div>
&lt;/div>
&lt;div style="display:flex;justify-content:center;color:#4a4a6a;font-size:20px;line-height:1;margin:6px 0;">&amp;#8595;&lt;/div>
&lt;!-- DECISION 1 -->
&lt;div style="max-width:560px;margin:0 auto;background:rgba(80,144,224,0.07);border:1px solid rgba(80,144,224,0.35);border-radius:9px;padding:14px 16px;">
&lt;div style="font-size:10.5px;letter-spacing:1.5px;color:#5090e0;font-weight:700;">STEP 1 &amp;middot; THE 2-MINUTE CHECK&lt;/div>
&lt;div style="font-size:13px;color:#d8d8e8;margin-top:7px;line-height:1.55;">Monitor on the right input? Cable in the &lt;strong style="color:#e8e8f0;">graphics card&lt;/strong>, not the motherboard? &lt;strong style="color:#e8e8f0;">Both&lt;/strong> GPU power cables clicked in? Tried a spare cable and a second monitor?&lt;/div>
&lt;/div>
&lt;!-- OUTCOMES -->
&lt;div style="display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:12px;">
&lt;div style="flex:1 1 200px;min-width:0;max-width:320px;background:rgba(93,202,122,0.08);border:1px solid rgba(93,202,122,0.4);border-radius:8px;padding:12px 14px;">
&lt;div style="font-size:11px;letter-spacing:1px;color:#5dca7a;font-weight:700;">FIXED &amp;#10003;&lt;/div>
&lt;div style="font-size:12px;color:#c8e8c8;margin-top:6px;line-height:1.5;">About &lt;strong style="color:#e8f8e8;">half&lt;/strong> of all &amp;ldquo;no display&amp;rdquo; cases end here. Zero dollars spent. Stop &amp;mdash; you're done.&lt;/div>
&lt;/div>
&lt;div style="flex:1 1 200px;min-width:0;max-width:320px;background:rgba(255,255,255,0.02);border:1px dashed rgba(255,255,255,0.18);border-radius:8px;padding:12px 14px;">
&lt;div style="font-size:11px;letter-spacing:1px;color:#9a9ab5;font-weight:700;">STILL BLACK &amp;#8595;&lt;/div>
&lt;div style="font-size:12px;color:#c0c0d0;margin-top:6px;line-height:1.5;">The board isn't finishing &lt;strong style="color:#e8e8f0;">POST&lt;/strong>. It already knows why. Go read it.&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="display:flex;justify-content:center;color:#4a4a6a;font-size:20px;line-height:1;margin:8px 0;">&amp;#8595;&lt;/div>
&lt;!-- KEY ACTION: read the LED -->
&lt;div style="max-width:600px;margin:0 auto;background:rgba(200,255,0,0.07);border:1px solid rgba(200,255,0,0.4);border-radius:9px;padding:15px 16px;text-align:center;">
&lt;div style="font-size:10.5px;letter-spacing:1.5px;color:#c8ff00;font-weight:700;">STEP 2 &amp;middot; READ THE DEBUG LED&lt;/div>
&lt;div style="font-size:14px;color:#f0f0f5;margin-top:7px;line-height:1.5;font-weight:600;">Which light stays lit for ~a minute?&lt;/div>
&lt;div style="font-size:11.5px;color:#9a9ab5;margin-top:5px;line-height:1.5;">ASUS Q-LED &amp;middot; MSI EZ Debug &amp;middot; Gigabyte Status LEDs &amp;middot; ASRock Dr. Debug&lt;/div>
&lt;/div>
&lt;div style="display:flex;justify-content:center;color:#4a4a6a;font-size:13px;line-height:1;margin:8px 0;letter-spacing:2px;">&amp;#8600; &amp;#8595; &amp;#8601;&lt;/div>
&lt;!-- 4-WAY BRANCH -->
&lt;div style="display:flex;gap:8px;flex-wrap:wrap;">
&lt;div style="flex:1 1 148px;min-width:0;background:rgba(255,160,64,0.07);border:1px solid rgba(255,160,64,0.35);border-top:3px solid #ffa040;border-radius:7px;padding:12px;">
&lt;div style="font-size:12.5px;font-weight:700;color:#ffb866;">DRAM&lt;/div>
&lt;div style="font-size:10px;color:#c99a5a;letter-spacing:0.5px;margin-top:2px;">MOST COMMON&lt;/div>
&lt;div style="font-size:11.5px;color:#d0c8b8;margin-top:8px;line-height:1.5;">Reseat RAM &amp;rarr; one stick in slot A2 &amp;rarr; wait out DDR5 training &amp;rarr; clear CMOS.&lt;/div>
&lt;/div>
&lt;div style="flex:1 1 148px;min-width:0;background:rgba(80,144,224,0.07);border:1px solid rgba(80,144,224,0.35);border-top:3px solid #5090e0;border-radius:7px;padding:12px;">
&lt;div style="font-size:12.5px;font-weight:700;color:#7db0f0;">VGA&lt;/div>
&lt;div style="font-size:10px;color:#6a92c9;letter-spacing:0.5px;margin-top:2px;">THE GRAPHICS CARD&lt;/div>
&lt;div style="font-size:11.5px;color:#b8c4d8;margin-top:8px;line-height:1.5;">Reseat GPU + &lt;strong style="color:#d8e4f8;">both&lt;/strong> power cables &amp;rarr; try the iGPU &amp;rarr; CSM for old cards.&lt;/div>
&lt;/div>
&lt;div style="flex:1 1 148px;min-width:0;background:rgba(224,90,90,0.07);border:1px solid rgba(224,90,90,0.35);border-top:3px solid #e05a5a;border-radius:7px;padding:12px;">
&lt;div style="font-size:12.5px;font-weight:700;color:#e88080;">CPU&lt;/div>
&lt;div style="font-size:10px;color:#c96a6a;letter-spacing:0.5px;margin-top:2px;">RARELY DEAD&lt;/div>
&lt;div style="font-size:11.5px;color:#d8bcbc;margin-top:8px;line-height:1.5;">Check the 8-pin EPS cable &amp;rarr; reseat &amp;rarr; BIOS update &amp;rarr; swap-test &lt;em>last&lt;/em>.&lt;/div>
&lt;/div>
&lt;div style="flex:1 1 148px;min-width:0;background:rgba(255,255,255,0.02);border:1px solid rgba(255,255,255,0.12);border-top:3px solid #7a7a96;border-radius:7px;padding:12px;">
&lt;div style="font-size:12.5px;font-weight:700;color:#b0b0c4;">NO LED AT ALL&lt;/div>
&lt;div style="font-size:10px;color:#8a8aa0;letter-spacing:0.5px;margin-top:2px;">SHORT / POWER&lt;/div>
&lt;div style="font-size:11.5px;color:#c0c0d0;margin-top:8px;line-height:1.5;">Suspect a standoff short or PSU fault &amp;rarr; bench-test outside the case.&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:18px;padding-top:12px;border-top:1px solid rgba(255,255,255,0.06);font-size:10.5px;color:#55556e;display:flex;justify-content:space-between;gap:10px;">
&lt;span>The board spends one second at power-on naming the culprit. Reading it is the difference between a $0 reseat and a needless new part.&lt;/span>
&lt;span>techfuelhq.com&lt;/span>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="step-1-the-two-minute-is-it-even-broken-check">Step 1: The two-minute &amp;ldquo;is it even broken?&amp;rdquo; check&lt;/h2>
&lt;p>Roughly half of &amp;ldquo;no display&amp;rdquo; posts are not hardware failures at all. Clear these before you open the case, because they take seconds:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Monitor input.&lt;/strong> Press the monitor&amp;rsquo;s Source/Input button and cycle through its inputs. A monitor set to HDMI 1 will show &amp;ldquo;No Signal&amp;rdquo; all day while your PC happily outputs on HDMI 2 or DisplayPort.&lt;/li>
&lt;li>&lt;strong>Cable in the &lt;em>graphics card&lt;/em>, not the motherboard.&lt;/strong> This is the single most common self-inflicted one. If your PC has a dedicated graphics card (a horizontal card lower on the back panel), the video cable must go into &lt;em>that&lt;/em>, not the motherboard&amp;rsquo;s HDMI/DisplayPort ports up near the USB stack. On most desktops with a discrete GPU, the motherboard&amp;rsquo;s video outputs are disabled — plug into them and you get nothing.&lt;/li>
&lt;li>&lt;strong>Try the other everything.&lt;/strong> A different cable, a different monitor, a different port on the card. Cheap cables die, and a bad DisplayPort cable produces an identical black screen to a dead GPU.&lt;/li>
&lt;li>&lt;strong>Both GPU power cables fully seated.&lt;/strong> Modern cards use one or two PCIe power connectors (or a 12VHPWR/12V-2×6 plug). If even one isn&amp;rsquo;t clicked in, the card powers its fans and RGB but never outputs video — exactly the trap that costs people a new motherboard.&lt;/li>
&lt;/ul>
&lt;p>If the screen is still black after those, the machine genuinely isn&amp;rsquo;t completing POST (the power-on self-test that runs before Windows). Now the motherboard earns its keep.&lt;/p>
&lt;h3 id="one-fork-before-you-dig-in-was-it-working-yesterday">One fork before you dig in: was it working yesterday?&lt;/h3>
&lt;p>The single most useful question — and the one most guides never ask — is whether this is a &lt;strong>brand-new build that has never posted&lt;/strong>, or a machine that &lt;strong>worked fine and then suddenly went black&lt;/strong>. Same symptom, different odds, so it&amp;rsquo;s worth naming which one you&amp;rsquo;re in:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>New build, never displayed.&lt;/strong> The prime suspects are &lt;em>seating and compatibility&lt;/em>: RAM not fully clicked in, a GPU not seated, an EPS or PCIe power cable never plugged, standoffs shorting the board against the case, or a BIOS too old for a brand-new CPU. Work the debug LED below — this is exactly what it&amp;rsquo;s for.&lt;/li>
&lt;li>&lt;strong>It was working, then suddenly nothing.&lt;/strong> Seating rarely un-does itself, so the odds shift toward &lt;em>things that drift or wear&lt;/em>: a GPU power cable that worked loose (especially a 12VHPWR/12V-2×6 plug that was never fully latched), a &lt;strong>power supply beginning to fail&lt;/strong> so voltages sag under load, an XMP/EXPO memory profile that was always marginal and finally tipped over, a dead CR2032 coin cell that lost your BIOS settings, or a graphics card that&amp;rsquo;s genuinely dying (often after a spell of &lt;a href="https://techfuelhq.com/articles/gpu-artifacts-2026/">visual artifacts&lt;/a> first). The good news: the debug LED reads &lt;em>these&lt;/em> out too, so the procedure is the same — you just start suspicious of cables and the PSU rather than seating.&lt;/li>
&lt;/ul>
&lt;p>If you moved, bumped, or cleaned the PC right before it went dark, treat it as the &amp;ldquo;suddenly&amp;rdquo; case with a loose cable at the very top of the list — reseat every power connector before anything else.&lt;/p>
&lt;h2 id="step-2-read-the-debug-led--the-step-almost-every-guide-skips">Step 2: Read the debug LED — the step almost every guide skips&lt;/h2>
&lt;p>Nearly every motherboard sold in the last several years has a small cluster of diagnostic LEDs labeled &lt;strong>CPU, DRAM, VGA, BOOT&lt;/strong> (sometimes shown as a single two-digit code). When you power on, they light in that sequence as the board initializes each subsystem, then go out once POST completes. &lt;strong>The one that stays lit is the stage that failed — that&amp;rsquo;s your answer.&lt;/strong> Manufacturers just brand them differently:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Brand&lt;/th>
&lt;th scope="col">What it&amp;rsquo;s called&lt;/th>
&lt;th scope="col">Where to look&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>ASUS&lt;/td>
&lt;td>Q-LED&lt;/td>
&lt;td>Near the 24-pin power / DIMM slots&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>MSI&lt;/td>
&lt;td>EZ Debug LED&lt;/td>
&lt;td>Right edge of the board, order CPU→DRAM→VGA→BOOT&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Gigabyte&lt;/td>
&lt;td>Status LEDs&lt;/td>
&lt;td>Usually a 2×2 block under the 24-pin connector&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ASRock&lt;/td>
&lt;td>Dr. Debug&lt;/td>
&lt;td>A two-digit code display; higher-end boards&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>One important detail: on boot it&amp;rsquo;s &lt;strong>normal&lt;/strong> for the LEDs to flash through the sequence quickly. Only when one &lt;strong>stays lit for roughly a minute&lt;/strong> (or a code stops changing) should you treat it as the failure point. On AM5 / DDR5 systems especially, the DRAM light can sit on for several minutes during &lt;strong>memory training&lt;/strong> on a first boot or after a CMOS reset — that&amp;rsquo;s expected, so give it time before you panic.&lt;/p>
&lt;p>&lt;strong>No debug LEDs at all, and nothing on screen?&lt;/strong> That&amp;rsquo;s its own signal. If the board never lights any diagnostic LED, it may not be getting power correctly, or something is shorting it — jump to the bench test in Step 4.&lt;/p>
&lt;p>&lt;strong>About beep codes:&lt;/strong> the classic POST beeps (one long + two short for a GPU error, a repeating tone for RAM) only work if you have the small PC speaker installed — and most modern cases and boards don&amp;rsquo;t ship one. No beep usually means &amp;ldquo;no speaker,&amp;rdquo; not &amp;ldquo;no problem.&amp;rdquo; If you &lt;em>do&lt;/em> have a speaker, treat the pattern as a hint (they vary between AMI, Award, and Phoenix BIOS versions) and trust the debug LED where you have one.&lt;/p>
&lt;h2 id="step-3-fix-by-whichever-led-is-stuck-in-hit-rate-order">Step 3: Fix by whichever LED is stuck (in hit-rate order)&lt;/h2>
&lt;p>There&amp;rsquo;s a reason to work these in order rather than jumping to the scariest one. Across the thousands of &amp;ldquo;no display&amp;rdquo; build-help threads that all look identical, the causes are wildly lopsided: the top of the list is free and common, the bottom is expensive and rare. Reading the debug LED tells you &lt;em>which branch&lt;/em>; this tells you &lt;em>how much to worry&lt;/em>.&lt;/p>
&lt;!-- ========== SIGNATURE VISUAL B: WHAT'S ACTUALLY WRONG, BY FREQUENCY ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;border:1px solid rgba(255,255,255,0.07);border-radius:10px;padding:26px 22px 20px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
&lt;div style="margin-bottom:18px;">
&lt;div style="font-size:19px;font-weight:700;color:#e8e8f0;letter-spacing:-0.3px;">What's actually wrong &amp;mdash; and what it costs&lt;/div>
&lt;div style="font-size:12.5px;color:#9a9ab5;margin-top:5px;line-height:1.5;">Ordered by how often it's the real culprit, from the pattern of build-help threads. Bar length is the qualitative tier (Most common &amp;rarr; Rare), not a measured percentage. Notice the shape: nearly everything that's &lt;em>likely&lt;/em> is also &lt;em>free&lt;/em> to fix.&lt;/div>
&lt;/div>
&lt;!-- rows -->
&lt;div style="display:flex;flex-direction:column;gap:11px;">
&lt;!-- row 1 -->
&lt;div>
&lt;div style="display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:4px;">&lt;span style="font-size:12.5px;color:#d8d8e8;">Wrong monitor input, or cable not in the GPU&lt;/span>&lt;span style="font-size:10.5px;font-weight:700;color:#5dca7a;font-family:ui-monospace,monospace;white-space:nowrap;">$0 &amp;middot; MOST COMMON&lt;/span>&lt;/div>
&lt;div style="height:16px;background:rgba(255,255,255,0.03);border-radius:4px;overflow:hidden;">&lt;div style="width:100%;height:100%;background:linear-gradient(90deg,#5dca7a,#4bb86a);">&lt;/div>&lt;/div>
&lt;/div>
&lt;!-- row 2 -->
&lt;div>
&lt;div style="display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:4px;">&lt;span style="font-size:12.5px;color:#d8d8e8;">RAM needs a firm reseat (or one bad stick)&lt;/span>&lt;span style="font-size:10.5px;font-weight:700;color:#ffa040;font-family:ui-monospace,monospace;white-space:nowrap;">$0 &amp;middot; MOST COMMON&lt;/span>&lt;/div>
&lt;div style="height:16px;background:rgba(255,255,255,0.03);border-radius:4px;overflow:hidden;">&lt;div style="width:94%;height:100%;background:linear-gradient(90deg,#ffa040,#e8902f);">&lt;/div>&lt;/div>
&lt;/div>
&lt;!-- row 3 -->
&lt;div>
&lt;div style="display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:4px;">&lt;span style="font-size:12.5px;color:#d8d8e8;">GPU unseated, or a PCIe power cable loose&lt;/span>&lt;span style="font-size:10.5px;font-weight:700;color:#5090e0;font-family:ui-monospace,monospace;white-space:nowrap;">$0 &amp;middot; COMMON&lt;/span>&lt;/div>
&lt;div style="height:16px;background:rgba(255,255,255,0.03);border-radius:4px;overflow:hidden;">&lt;div style="width:70%;height:100%;background:linear-gradient(90deg,#5090e0,#4180d0);">&lt;/div>&lt;/div>
&lt;/div>
&lt;!-- row 4 -->
&lt;div>
&lt;div style="display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:4px;">&lt;span style="font-size:12.5px;color:#d8d8e8;">Unstable XMP/EXPO or a bad BIOS setting (clear CMOS)&lt;/span>&lt;span style="font-size:10.5px;font-weight:700;color:#5090e0;font-family:ui-monospace,monospace;white-space:nowrap;">$0 &amp;middot; COMMON&lt;/span>&lt;/div>
&lt;div style="height:16px;background:rgba(255,255,255,0.03);border-radius:4px;overflow:hidden;">&lt;div style="width:62%;height:100%;background:linear-gradient(90deg,#5090e0,#4180d0);">&lt;/div>&lt;/div>
&lt;/div>
&lt;!-- row 5 -->
&lt;div>
&lt;div style="display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:4px;">&lt;span style="font-size:12.5px;color:#d8d8e8;">BIOS too old for the CPU, or a failing PSU&lt;/span>&lt;span style="font-size:10.5px;font-weight:700;color:#d8a24a;font-family:ui-monospace,monospace;white-space:nowrap;">$ &amp;middot; OCCASIONAL&lt;/span>&lt;/div>
&lt;div style="height:16px;background:rgba(255,255,255,0.03);border-radius:4px;overflow:hidden;">&lt;div style="width:40%;height:100%;background:linear-gradient(90deg,#d8a24a,#c48f3a);">&lt;/div>&lt;/div>
&lt;/div>
&lt;!-- row 6 -->
&lt;div>
&lt;div style="display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:4px;">&lt;span style="font-size:12.5px;color:#d8d8e8;">A genuinely dead CPU or motherboard&lt;/span>&lt;span style="font-size:10.5px;font-weight:700;color:#e05a5a;font-family:ui-monospace,monospace;white-space:nowrap;">$$ &amp;middot; RARE&lt;/span>&lt;/div>
&lt;div style="height:16px;background:rgba(255,255,255,0.03);border-radius:4px;overflow:hidden;">&lt;div style="width:20%;height:100%;background:linear-gradient(90deg,#e05a5a,#c84a4a);">&lt;/div>&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:18px;padding-top:12px;border-top:1px solid rgba(255,255,255,0.06);font-size:10.5px;color:#55556e;display:flex;justify-content:space-between;gap:10px;">
&lt;span>Work top-down. The instinct to assume the worst (a dead CPU) targets the rarest, priciest cause first &amp;mdash; exactly backwards.&lt;/span>
&lt;span>techfuelhq.com&lt;/span>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;h3 id="dram-light-stuck--start-here-its-the-most-common">DRAM light stuck — start here, it&amp;rsquo;s the most common&lt;/h3>
&lt;p>Memory that isn&amp;rsquo;t detected is the number-one reason a PC powers on but won&amp;rsquo;t POST. In order:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Reseat the RAM.&lt;/strong> Power off, unclip each stick, and press it firmly back in until both clips snap. A stick that &lt;em>looks&lt;/em> seated but isn&amp;rsquo;t fully clicked is a classic culprit.&lt;/li>
&lt;li>&lt;strong>Test one stick, in the right slot.&lt;/strong> Pull all but one, and put that one in the slot your manual specifies for single-stick operation (usually the second slot from the CPU, labeled A2 or DIMM2). If it POSTs, add sticks back one at a time to find the bad one or the bad slot.&lt;/li>
&lt;li>&lt;strong>Wait out memory training.&lt;/strong> On DDR5, give a fresh configuration several minutes before concluding it&amp;rsquo;s dead.&lt;/li>
&lt;li>&lt;strong>Clear CMOS.&lt;/strong> A bad memory setting (an unstable XMP/EXPO profile) can hang POST; clearing CMOS resets it. Use the board&amp;rsquo;s Clear CMOS button/jumper, or pull the CR2032 &lt;a href="https://www.amazon.com/s?k=cr2032&amp;#43;battery&amp;amp;tag=techfuelhq-20" rel="nofollow sponsored noopener">CMOS battery&lt;/a> for a minute with the power unplugged.&lt;/li>
&lt;/ol>
&lt;h3 id="vga-light-stuck--the-graphics-card">VGA light stuck — the graphics card&lt;/h3>
&lt;ol>
&lt;li>&lt;strong>Reseat the GPU&lt;/strong> in its slot, and re-check &lt;em>both&lt;/em> power cables (the mistake from the intro).&lt;/li>
&lt;li>&lt;strong>Try the integrated graphics&lt;/strong> if your CPU has them: pull the GPU, plug the monitor into the motherboard, and see if you get a picture. If you do, the problem is the card or its slot, not the rest of the PC.&lt;/li>
&lt;li>&lt;strong>Try a different PCIe slot&lt;/strong> if the board has one.&lt;/li>
&lt;li>&lt;strong>The older-card gotcha:&lt;/strong> genuinely old GPUs (GeForce GTX 600/700-era cards and older, before UEFI GOP video BIOSes became standard) can hang on the VGA light on a brand-new board until you enable &lt;strong>CSM / Legacy&lt;/strong> boot mode in BIOS — which is a chicken-and-egg problem you may need a newer card or the iGPU to solve first. Worth knowing if you paired an old card with a new motherboard. If the card POSTs elsewhere but not here, that&amp;rsquo;s the pattern.&lt;/li>
&lt;/ol>
&lt;p>If it &lt;em>does&lt;/em> eventually POST and boot but the card is missing inside Windows, that&amp;rsquo;s a different problem — see &lt;a href="https://techfuelhq.com/articles/graphics-card-not-detected-2026/">graphics card not detected&lt;/a>.&lt;/p>
&lt;h3 id="cpu-light-stuck--usually-not-a-dead-cpu">CPU light stuck — usually not a dead CPU&lt;/h3>
&lt;ol>
&lt;li>&lt;strong>Check the 8-pin EPS power&lt;/strong> at the top-left of the board. An unplugged CPU power cable produces a dead, no-POST board that looks exactly like a fried processor. This is far more common than an actual dead CPU.&lt;/li>
&lt;li>&lt;strong>Reseat the CPU&lt;/strong> and inspect the socket for bent pins under good light.&lt;/li>
&lt;li>&lt;strong>BIOS too old.&lt;/strong> If you just dropped a newer CPU into an older board, the BIOS may predate support for it. Use the board&amp;rsquo;s BIOS Flashback feature (often with an older, supported CPU) to update.&lt;/li>
&lt;li>&lt;strong>Only then suspect the CPU itself&lt;/strong> — confirmed by swapping in a known-good chip. A new CPU that never POSTs on a compatible, updated board can be DOA, but prove it with a swap before spending.&lt;/li>
&lt;/ol>
&lt;h3 id="boot-light-stuck">BOOT light stuck&lt;/h3>
&lt;p>By this point the board has POSTed and you likely have a display — this is a storage/boot-device issue, not a no-signal one, so it&amp;rsquo;s outside this guide&amp;rsquo;s scope.&lt;/p>
&lt;h3 id="no-led-lights-at-all-or-a-red-power-light-with-nothing-else">No LED lights at all, or a red &amp;ldquo;power&amp;rdquo; light with nothing else&lt;/h3>
&lt;p>Suspect a &lt;strong>short&lt;/strong> or a power problem. The most common short is an &lt;strong>extra motherboard standoff&lt;/strong> under the board, or a case screw contacting the wrong spot — a genuinely frequent cause that forum veterans spot immediately. Also confirm the &lt;a href="https://techfuelhq.com/articles/psu-failure-symptoms-2026/">power supply is actually delivering&lt;/a>; if the system won&amp;rsquo;t stay on or cycles power, work through &lt;a href="https://techfuelhq.com/articles/pc-keeps-restarting-2026/">PC keeps restarting&lt;/a>. And if the board never POSTs even stripped to CPU, one RAM stick, and a known-good PSU, work through the exclusion ladder in &lt;a href="https://techfuelhq.com/articles/motherboard-failure-symptoms-2026/">motherboard failure symptoms&lt;/a>.&lt;/p>
&lt;h2 id="step-4-the-barebones-bench-test-when-the-led-wont-localize-it">Step 4: The barebones bench test (when the LED won&amp;rsquo;t localize it)&lt;/h2>
&lt;p>If the debug LED is ambiguous or absent, strip the build down to the absolute minimum and test it &lt;strong>outside the case&lt;/strong>, on the motherboard box or a sheet of cardboard, to rule out a case short:&lt;/p>
&lt;ul>
&lt;li>Power supply&lt;/li>
&lt;li>Motherboard&lt;/li>
&lt;li>CPU + cooler&lt;/li>
&lt;li>&lt;strong>One&lt;/strong> stick of RAM&lt;/li>
&lt;li>Monitor plugged into the iGPU if available, otherwise the GPU&lt;/li>
&lt;/ul>
&lt;p>Nothing else — no extra drives, no case fans on the headers, no front-panel USB, no second GPU. Power it on by briefly bridging the two power-switch pins with a screwdriver. If it POSTs like this, add components back &lt;strong>one at a time&lt;/strong> until the black screen returns; the part you just added is the fault. If it &lt;em>still&lt;/em> won&amp;rsquo;t POST bare, with CMOS cleared and a known-good CPU and RAM, then you&amp;rsquo;ve genuinely narrowed it to a failed motherboard or CPU — and even that is a part swap, not a &amp;ldquo;bricked&amp;rdquo; machine.&lt;/p>
&lt;p>A quick note on the word &lt;strong>bricked&lt;/strong>: a PC that powers on but won&amp;rsquo;t display is almost never actually dead. Real bricking is rare. Nine times out of ten this is a reseat, a repower, a cleared CMOS, or a single loose cable — which is exactly why reading the board before buying parts saves the most money.&lt;/p>
&lt;h2 id="the-quick-version">The quick version&lt;/h2>
&lt;ol>
&lt;li>&lt;strong>Rule out the dumb stuff (2 min):&lt;/strong> monitor input, cable in the &lt;em>GPU&lt;/em> not the motherboard, spare cable/monitor, both GPU power cables seated.&lt;/li>
&lt;li>&lt;strong>Read the debug LED&lt;/strong> (ASUS Q-LED / MSI EZ Debug / Gigabyte Status LEDs / ASRock Dr. Debug). The light that &lt;em>stays lit&lt;/em> — CPU, DRAM, VGA, or BOOT — is the failed stage. Give DDR5 memory training a few minutes first.&lt;/li>
&lt;li>&lt;strong>Fix that stage:&lt;/strong> DRAM → reseat / single stick in slot 2 / clear CMOS. VGA → reseat GPU + both power cables / try iGPU / CSM for old cards. CPU → check 8-pin EPS / reseat / BIOS update / swap-test last.&lt;/li>
&lt;li>&lt;strong>No LEDs at all&lt;/strong> → suspect a standoff short or power fault; bench-test outside the case.&lt;/li>
&lt;li>&lt;strong>Barebones bench test&lt;/strong> to isolate the culprit, then add parts back one at a time.&lt;/li>
&lt;/ol>
&lt;p>Read the board before you reach for your wallet. The motherboard spent a full second at power-on telling you exactly which component didn&amp;rsquo;t wake up — and the difference between a $0 reseat and a needless new part is whether you looked.&lt;/p></description></item><item><title>Power Button Not Working on Your PC? Find the Real Fault First (2026)</title><link>https://techfuelhq.com/articles/power-button-not-working-pc-2026/</link><pubDate>Fri, 10 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/power-button-not-working-pc-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-07-10 · ~9 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence what gets recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;p>You press the power button and nothing happens — no fans, no lights, no sound — and the obvious conclusion is that the button is broken. It usually isn&amp;rsquo;t. On a desktop, &amp;ldquo;power button not working&amp;rdquo; is one of the most &lt;em>mis-diagnosed&lt;/em> faults there is, because the same dead-press symptom is produced by a loose wire, a flipped PSU switch, stuck residual power, or a failing power supply just as often as by an actually-broken button. Swap the button (or the whole case) on that assumption and half the time the machine is still dead.&lt;/p>
&lt;p>So the real first move isn&amp;rsquo;t &amp;ldquo;how do I replace the power button&amp;rdquo; — it&amp;rsquo;s &lt;strong>&amp;ldquo;is it even the button?&amp;rdquo;&lt;/strong> There&amp;rsquo;s a single test that answers that in about a minute, before you spend a dollar or order a part. Let&amp;rsquo;s get to it in the right order.&lt;/p>
&lt;h2 id="first-totally-dead-or-partly-alive">First: totally dead, or partly alive?&lt;/h2>
&lt;p>Look at the machine when you press power and sort it into one of three buckets — this decides everything that follows:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Nothing at all.&lt;/strong> No fans twitch, no LEDs, no motherboard debug light, no sound. This is a &lt;em>power-on-path&lt;/em> problem — the button, its wire, the PSU switch/cable, flea power, or a dead PSU. That&amp;rsquo;s what this guide is for.&lt;/li>
&lt;li>&lt;strong>Fans spin or lights come on, but nothing else.&lt;/strong> The PC &lt;em>is&lt;/em> powering on — the button is working. Your problem is downstream (no POST, no display), which is a different track: start with &lt;a href="https://techfuelhq.com/articles/pc-turns-on-but-no-display-2026/">PC Turns On But No Display? Find Where the Boot Breaks&lt;/a>.&lt;/li>
&lt;li>&lt;strong>The button physically sticks, feels mushy, or stays pressed in.&lt;/strong> That&amp;rsquo;s a mechanical button fault — jump to the &amp;ldquo;clean or replace the button&amp;rdquo; section below.&lt;/li>
&lt;/ul>
&lt;p>The rest of this walkthrough is about the first bucket: &lt;strong>you press power and the PC is stone dead.&lt;/strong>&lt;/p>
&lt;h2 id="step-1-the-60-second-differential">Step 1: the 60-second differential&lt;/h2>
&lt;p>Before touching anything, use the pattern of the symptom to rank the suspects. These are the tells that separate a button problem from everything it gets blamed for:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">What you observe&lt;/th>
&lt;th scope="col">Most likely culprit&lt;/th>
&lt;th scope="col">Why&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Totally dead, but it worked before you &lt;strong>moved or cleaned the case&lt;/strong>&lt;/td>
&lt;td>&lt;strong>Loose front-panel wire&lt;/strong>&lt;/td>
&lt;td>The thin PWR_SW lead pulls off the header pins easily&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Totally dead, &lt;strong>no PSU fan, no rear-switch glow&lt;/strong>&lt;/td>
&lt;td>&lt;strong>Power delivery&lt;/strong> (PSU switch off, dead outlet/cable, dead PSU)&lt;/td>
&lt;td>Nothing is reaching the board at all&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Dead now, but &lt;strong>unplugging for a while sometimes revives it&lt;/strong>&lt;/td>
&lt;td>&lt;strong>Flea power&lt;/strong> (stuck residual charge)&lt;/td>
&lt;td>Capacitors hold a state until drained&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Button &lt;strong>jumping the header pins boots the PC&lt;/strong>, button press doesn&amp;rsquo;t&lt;/td>
&lt;td>&lt;strong>The button or its wire&lt;/strong>&lt;/td>
&lt;td>The board is fine; the switch path is broken&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Nothing&lt;/strong> happens even when you short the header pins&lt;/td>
&lt;td>&lt;strong>PSU or motherboard&lt;/strong>&lt;/td>
&lt;td>The fault is behind the button entirely&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Button &lt;strong>feels stuck, gritty, or stays in&lt;/strong>&lt;/td>
&lt;td>&lt;strong>The physical switch&lt;/strong>&lt;/td>
&lt;td>Dust, wear, or spilled liquid in the contact&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Notice how few of these rows are actually &amp;ldquo;the button.&amp;rdquo; That&amp;rsquo;s the whole point — and the next three steps walk the ladder from free-and-likely to conclusive.&lt;/p>
&lt;h2 id="step-2-rule-out-power-delivery-free-do-this-first">Step 2: rule out power delivery (free, do this first)&lt;/h2>
&lt;p>Most &amp;ldquo;dead button&amp;rdquo; calls are solved here without opening anything meaningful:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Check the PSU&amp;rsquo;s rear switch.&lt;/strong> The rocker on the back of the power supply has a &lt;code>|&lt;/code> (on) and &lt;code>O&lt;/code> (off). It&amp;rsquo;s easy to knock to &lt;code>O&lt;/code> while moving cables or the tower. Set it to &lt;code>|&lt;/code>.&lt;/li>
&lt;li>&lt;strong>Test the wall outlet and cable.&lt;/strong> Plug a lamp or phone charger into the same outlet to confirm it&amp;rsquo;s live, and reseat the power cable firmly at both the wall and the PSU. Try a different cable if you have one.&lt;/li>
&lt;li>&lt;strong>Drain the flea power.&lt;/strong> Residual charge can leave the board in a stuck, unresponsive state. Turn off the PSU switch, &lt;strong>unplug the power cable from the wall,&lt;/strong> then &lt;strong>hold the case power button down for 30 seconds&lt;/strong> to bleed the remaining charge out of the capacitors. Plug back in, flip the PSU switch to &lt;code>|&lt;/code>, and try again. This one step revives a surprising number of &amp;ldquo;dead&amp;rdquo; PCs. Intel lists the same flea-power drain as a first move when a computer won&amp;rsquo;t turn on.&lt;/li>
&lt;/ul>
&lt;p>If the machine springs back to life after any of these, the button was never broken — you had a power-delivery hiccup. If it&amp;rsquo;s still dead, it&amp;rsquo;s time for the test that actually settles the button question.&lt;/p>
&lt;h2 id="step-3-the-conclusive-test--jump-the-header-pins">Step 3: the conclusive test — jump the header pins&lt;/h2>
&lt;p>This is the single most useful step, because it tells you definitively whether the button is at fault. The case&amp;rsquo;s power button does exactly one thing: it briefly connects two pins on the motherboard&amp;rsquo;s &lt;strong>front-panel header.&lt;/strong> You can do that connection yourself.&lt;/p>
&lt;ol>
&lt;li>Leave the PC &lt;strong>plugged in&lt;/strong> and the &lt;strong>PSU switch on&lt;/strong> (&lt;code>|&lt;/code>).&lt;/li>
&lt;li>Remove the side panel.&lt;/li>
&lt;li>Find the &lt;strong>front-panel header&lt;/strong> — a small cluster of pins, usually in the lower-right corner of the board. Two of them are labeled &lt;strong>PWR_SW&lt;/strong> (or &lt;strong>PWR / PW / Power SW&lt;/strong>). Your motherboard manual shows the exact layout; the two power-switch pins are what you want.&lt;/li>
&lt;li>Briefly &lt;strong>touch those two PWR_SW pins together with the tip of a flathead screwdriver&lt;/strong> — a quick tap, metal across both pins at once.&lt;/li>
&lt;/ol>
&lt;p>What the result tells you:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>The PC powers up.&lt;/strong> The motherboard, PSU, and all power delivery are working. The fault is the &lt;strong>physical button or the thin wire&lt;/strong> running from it to the header — the cheapest, easiest failure on the whole list. Go to Step 4.&lt;/li>
&lt;li>&lt;strong>Still nothing&lt;/strong> — no fans, no lights, no spin-up. The button is now &lt;strong>ruled out.&lt;/strong> The problem is behind it: a PSU that&amp;rsquo;s failed, a dislodged 24-pin or 8-pin CPU power cable, or a motherboard fault. Skip to &amp;ldquo;when it isn&amp;rsquo;t the button.&amp;rdquo;&lt;/li>
&lt;/ul>
&lt;p>Intel documents this screwdriver method explicitly — lightly touching the two power-switch header pins turns the system on if everything behind them is connected correctly, doing the same job as the case button. It&amp;rsquo;s a standard bench move, not a hack.&lt;/p>
&lt;p>&lt;strong>Safety:&lt;/strong> tap the two PWR_SW pins only — briefly, and be careful not to slip onto neighboring pins. Do it with the PSU on but keep your hands clear of the CPU/GPU power connectors. If you&amp;rsquo;re uneasy identifying the pins, the manual&amp;rsquo;s front-panel diagram removes the guesswork.&lt;/p>
&lt;h2 id="step-4-the-free-permanent-fix--steal-the-reset-switch">Step 4: the free permanent fix — steal the reset switch&lt;/h2>
&lt;p>If the jump test booted the PC, you&amp;rsquo;ve confirmed the button/wire is dead — but you don&amp;rsquo;t necessarily need to buy anything. The &lt;strong>reset switch is electrically identical to the power switch:&lt;/strong> both are momentary buttons that briefly short two header pins. So you can promote the reset button to power duty:&lt;/p>
&lt;ol>
&lt;li>Power down and &lt;strong>unplug.&lt;/strong>&lt;/li>
&lt;li>At the front-panel header, disconnect the small two-pin &lt;strong>RESET_SW&lt;/strong> cable and the &lt;strong>PWR_SW&lt;/strong> cable.&lt;/li>
&lt;li>Plug the &lt;strong>Reset cable onto the pins the Power cable was using&lt;/strong> (the PWR_SW pins).&lt;/li>
&lt;li>Reassemble. Now the case&amp;rsquo;s &lt;strong>reset button turns the PC on.&lt;/strong>&lt;/li>
&lt;/ol>
&lt;p>You give up the reset function — rarely missed — and gain a working power control for free. Builders on r/buildapc and Tom&amp;rsquo;s Hardware point to this exact swap as the go-to when a case power button dies. If you&amp;rsquo;d rather have a proper button back, a &lt;a href="https://www.amazon.com/s?k=pc&amp;#43;power&amp;#43;button&amp;#43;switch&amp;#43;cable&amp;amp;tag=techfuelhq-20" rel="nofollow sponsored noopener">replacement PC power/reset switch&lt;/a> is a couple of dollars and plugs straight onto the same pins.&lt;/p>
&lt;h3 id="if-the-button-feels-stuck-or-gritty">If the button feels stuck or gritty&lt;/h3>
&lt;p>When the button &lt;em>physically&lt;/em> sticks — stays depressed, feels mushy, or needs a hard jab — the switch mechanism is fouled or worn, not electrically dead. With the PC &lt;strong>off and unplugged,&lt;/strong> blast &lt;a href="https://www.amazon.com/s?k=compressed&amp;#43;air&amp;#43;duster&amp;amp;tag=techfuelhq-20" rel="nofollow sponsored noopener">compressed air&lt;/a> around the gap of the button to clear dust or debris, and work it a few times. If it still sticks, the spring or switch is done — swap to the reset button as above, or replace the switch.&lt;/p>
&lt;h2 id="when-it-isnt-the-button">When it isn&amp;rsquo;t the button&lt;/h2>
&lt;p>If shorting the PWR_SW pins produced &lt;strong>nothing at all,&lt;/strong> the button is cleared and the fault is deeper in the power chain. Work these in order:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Reseat the main power cables.&lt;/strong> With the PC unplugged, firmly re-seat the &lt;strong>24-pin&lt;/strong> motherboard connector and the &lt;strong>8-pin (4+4) CPU&lt;/strong> power connector at the top of the board. A partially-seated CPU power cable is a classic &amp;ldquo;totally dead, no response&amp;rdquo; cause after a build or a component swap.&lt;/li>
&lt;li>&lt;strong>Suspect the power supply.&lt;/strong> A PSU that&amp;rsquo;s died — or whose rear switch/cable is bad — gives you exactly this no-response-at-all symptom. The clean way to confirm it is covered in &lt;a href="https://techfuelhq.com/articles/psu-failure-symptoms-2026/">PSU Failure Symptoms: Is It Really the Power Supply?&lt;/a>, including why the paperclip test only proves a PSU can switch on, not that it&amp;rsquo;s healthy.&lt;/li>
&lt;li>&lt;strong>Then the motherboard.&lt;/strong> If power delivery checks out and jumping the pins still does nothing, board-level failure is what&amp;rsquo;s left. The signs and the how-do-I-be-sure steps live in &lt;a href="https://techfuelhq.com/articles/motherboard-failure-symptoms-2026/">Motherboard Failure Symptoms: How to Be Sure&lt;/a>.&lt;/li>
&lt;/ul>
&lt;p>And if at any point the PC &lt;em>does&lt;/em> start powering on — fans and lights — but won&amp;rsquo;t show anything or finish booting, you&amp;rsquo;ve moved past the power-button problem into a display/POST issue: &lt;a href="https://techfuelhq.com/articles/pc-turns-on-but-no-display-2026/">PC Turns On But No Display?&lt;/a> picks up there. If it powers on but then &lt;strong>restarts or cuts out&lt;/strong> on its own, work &lt;a href="https://techfuelhq.com/articles/pc-keeps-restarting-2026/">PC Keeps Restarting? Through the Causes&lt;/a> instead.&lt;/p>
&lt;h2 id="the-quick-version">The quick version&lt;/h2>
&lt;ol>
&lt;li>&lt;strong>Sort the symptom.&lt;/strong> Totally dead (this guide) vs powers-on-but-no-display (a different problem) vs button physically stuck (mechanical).&lt;/li>
&lt;li>&lt;strong>Rule out power delivery first, free:&lt;/strong> PSU rear switch to &lt;code>|&lt;/code>, test the outlet/cable, and &lt;strong>drain flea power&lt;/strong> (unplug, hold the button 30 seconds, plug back in).&lt;/li>
&lt;li>&lt;strong>Jump the header pins.&lt;/strong> Tap the two &lt;strong>PWR_SW&lt;/strong> pins with a screwdriver. Boots = the button/wire is the fault. Nothing = the button is ruled out.&lt;/li>
&lt;li>&lt;strong>If it&amp;rsquo;s the button, fix it free:&lt;/strong> swap the &lt;strong>reset switch&lt;/strong> wire onto the PWR_SW pins, or drop in a couple-dollar replacement button. Sticky button? Compressed air first.&lt;/li>
&lt;li>&lt;strong>If jumping the pins does nothing,&lt;/strong> it&amp;rsquo;s power delivery — reseat the 24-pin and CPU power cables, then check the &lt;a href="https://techfuelhq.com/articles/psu-failure-symptoms-2026/">PSU&lt;/a>, then the &lt;a href="https://techfuelhq.com/articles/motherboard-failure-symptoms-2026/">motherboard&lt;/a>.&lt;/li>
&lt;/ol>
&lt;p>The button is the cheapest thing that can cause a dead-press, and one of the least likely — so prove it with the screwdriver test before you replace anything. Five minutes of diagnosis here saves you from ordering a case, a PSU, or a board to fix a problem that turned out to be a wire that fell off a pin.&lt;/p></description></item><item><title>PSU Failure Symptoms: Is It Really the Power Supply? (2026)</title><link>https://techfuelhq.com/articles/psu-failure-symptoms-2026/</link><pubDate>Fri, 10 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/psu-failure-symptoms-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-07-10 · ~9 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence what gets recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;p>The power supply is the hardest part in a PC to diagnose, because when it starts to fail it doesn&amp;rsquo;t announce itself — it frames another component. Random shutdowns &lt;em>look&lt;/em> like an overheating GPU. Blue screens &lt;em>look&lt;/em> like bad RAM. A machine that won&amp;rsquo;t POST &lt;em>looks&lt;/em> like a dead motherboard. People swap out card after card, reinstall Windows, reseat the memory, and burn a weekend — and the culprit was quietly sagging under the whole time.&lt;/p>
&lt;p>So before you spend anything, the real first question isn&amp;rsquo;t &amp;ldquo;what are the symptoms of a failing PSU&amp;rdquo; — it&amp;rsquo;s &lt;strong>&amp;ldquo;is it actually the PSU, or something the PSU is being blamed for?&amp;rdquo;&lt;/strong> Get that right and the rest is easy.&lt;/p>
&lt;h2 id="the-signs-of-a-failing-power-supply">The signs of a failing power supply&lt;/h2>
&lt;p>Here&amp;rsquo;s what a dying PSU actually does. None of these alone is proof — several of them overlap with other faults — but the &lt;em>pattern&lt;/em> is the tell.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Random shutdowns or hard reboots, usually under load.&lt;/strong> The PC works fine browsing or on the desktop, then cuts out completely the moment you launch a game, start a render, or otherwise spike the power draw. No blue screen, no error — it just dies, sometimes rebooting on its own. (If that no-warning, no-BSOD shutdown is your main symptom, our &lt;a href="https://techfuelhq.com/articles/computer-randomly-turns-off-2026/">computer randomly turns off guide&lt;/a> walks the full heat-vs-PSU-vs-short diagnosis in order.)&lt;/li>
&lt;li>&lt;strong>It won&amp;rsquo;t turn on at all,&lt;/strong> or turns on for a second and stops. Press power and get nothing — no lights, no fans — or a brief twitch that immediately shuts back down. (A dead press has cheaper causes too — a loose front-panel wire or the button itself — so rule those out first with &lt;a href="https://techfuelhq.com/articles/power-button-not-working-pc-2026/">Power Button Not Working on Your PC?&lt;/a> before you condemn the PSU.)&lt;/li>
&lt;li>&lt;strong>Blue screens and instability with no consistent cause.&lt;/strong> BSODs that point at different drivers each time, freezes, and USB devices dropping out can all trace back to unstable power delivery.&lt;/li>
&lt;li>&lt;strong>Coil whine or buzzing that rises with load,&lt;/strong> or grinding from the PSU fan as its bearing wears. (Occasional light &lt;a href="https://techfuelhq.com/articles/coil-whine-2026/">coil whine&lt;/a> is normal and harmless on its own — it&amp;rsquo;s &lt;em>new or worsening&lt;/em> buzz paired with the crashes below that points at the PSU.)&lt;/li>
&lt;li>&lt;strong>A burning or electrical smell&lt;/strong> — the most serious sign. Unplug immediately (more on that below).&lt;/li>
&lt;li>&lt;strong>The &amp;ldquo;random&amp;rdquo; fingerprint.&lt;/strong> This is the big one: a failing PSU crashes &lt;em>inconsistently.&lt;/em> It dies in a game today, a video export tomorrow, then behaves for days. Hardware that fails on a schedule usually isn&amp;rsquo;t the PSU; hardware that fails at random, under load, with no error, very often is.&lt;/li>
&lt;/ul>
&lt;p>If you recognize the load-dependent, no-error, random pattern, the power supply moves to the top of the suspect list. Now rule the impostors in or out.&lt;/p>
&lt;h2 id="step-1-is-it-the-psu-the-gpu-or-the-motherboard">Step 1: Is it the PSU, the GPU, or the motherboard?&lt;/h2>
&lt;p>These three produce nearly identical top-level symptoms — sudden shutdowns and crashes — so the diagnosis is about the &lt;em>secondary&lt;/em> clues each one leaves.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Clue&lt;/th>
&lt;th scope="col">Points at&lt;/th>
&lt;th scope="col">Why&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Dies under load, &lt;strong>no error, timing is random&lt;/strong>&lt;/td>
&lt;td>&lt;strong>PSU&lt;/strong>&lt;/td>
&lt;td>A sagging rail can&amp;rsquo;t hold voltage when draw spikes; nothing gets a chance to log an error&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>On-screen artifacts, driver resets, black screens&lt;/strong>&lt;/td>
&lt;td>&lt;strong>GPU&lt;/strong>&lt;/td>
&lt;td>Visual and driver-level corruption is the graphics card&amp;rsquo;s signature, not the PSU&amp;rsquo;s&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Crashes &lt;strong>repeat in the same game or the same scene&lt;/strong>&lt;/td>
&lt;td>&lt;strong>GPU&lt;/strong> (or thermal)&lt;/td>
&lt;td>A reproducible trigger points at the component doing that specific work&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Shutdowns &lt;strong>even at idle&lt;/strong>, or won&amp;rsquo;t POST with everything else swapped&lt;/td>
&lt;td>&lt;strong>Motherboard / VRM&lt;/strong>&lt;/td>
&lt;td>Board power delivery can fail independently of the PSU&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>BSODs that name memory,&lt;/strong> fails a RAM test&lt;/td>
&lt;td>&lt;strong>RAM&lt;/strong>&lt;/td>
&lt;td>Memory errors have their own diagnostic (&lt;a href="https://www.memtest86.com/" rel="noopener">MemTest86&lt;/a>)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The reason PSU faults feel &amp;ldquo;random&amp;rdquo; is physics: a degrading unit still holds voltage fine when the system is sipping power at idle, and only drops out of spec when a modern GPU slams it with a sudden current spike. That&amp;rsquo;s why the same PC can be rock-solid for hours of light use and then die ninety seconds into a game. Power-supply maker Seasonic describes the same split — PSU trouble shows up as sudden shutdowns under load with no software error, while a failing GPU leaves visual or driver clues first.&lt;/p>
&lt;p>If the crashes come with &lt;strong>visual glitches or driver resets,&lt;/strong> work the GPU angle instead: &lt;a href="https://techfuelhq.com/articles/gpu-artifacts-2026/">GPU Artifacts? Sort Software From a Dying Card&lt;/a>. If the PC &lt;strong>won&amp;rsquo;t display or POST at all,&lt;/strong> start where the boot chain breaks: &lt;a href="https://techfuelhq.com/articles/graphics-card-not-detected-2026/">Graphics Card Not Detected? Find Where It Disappears&lt;/a>. And if it&amp;rsquo;s &lt;strong>restarting&lt;/strong> rather than dying dark, the broader checklist lives in &lt;a href="https://techfuelhq.com/articles/pc-keeps-restarting-2026/">PC Keeps Restarting? Work Through the Causes&lt;/a>.&lt;/p>
&lt;p>The gold-standard tie-breaker, if you can manage it: &lt;strong>swap in a known-good power supply&lt;/strong> — borrowed, or a cheap-but-reputable spare. If the shutdowns vanish, you&amp;rsquo;re done, no guesswork. It&amp;rsquo;s the single most conclusive PSU test there is, which is why experienced builders reach for it before any meter.&lt;/p>
&lt;h2 id="step-2-why-the-paperclip-test-lies">Step 2: Why the paperclip test lies&lt;/h2>
&lt;p>Search &amp;ldquo;how to test a PSU&amp;rdquo; and the top answer is almost always the &lt;strong>paperclip test&lt;/strong> (also called the jumper test): unplug everything, leave only the 24-pin cable, and short the green &lt;strong>PS_ON&lt;/strong> pin to any black &lt;strong>ground&lt;/strong> pin with a bent paperclip. Plug in, flip the switch, and if the fan spins, the internet declares your PSU &amp;ldquo;good.&amp;rdquo;&lt;/p>
&lt;p>It isn&amp;rsquo;t wrong, exactly — it&amp;rsquo;s just answering a much smaller question than you think. &lt;strong>All the paperclip test proves is that the PSU can switch on.&lt;/strong> It runs the unit with essentially &lt;em>no load,&lt;/em> and a failing supply almost always passes at idle. The way these units die is by failing to hold voltage &lt;em>under load&lt;/em> — precisely the condition the paperclip test never creates. A power supply that spins its fan on the bench and then crashes your PC the instant a game loads has &amp;ldquo;passed&amp;rdquo; a test that measured the wrong thing.&lt;/p>
&lt;p>So treat a passed paperclip test as &amp;ldquo;not completely dead,&amp;rdquo; not &amp;ldquo;healthy.&amp;rdquo; For a real read you need to load it and watch.&lt;/p>
&lt;h2 id="step-3-actually-measure-it--under-load">Step 3: Actually measure it — under load&lt;/h2>
&lt;p>Here&amp;rsquo;s the testing ladder from easiest to most conclusive.&lt;/p>
&lt;p>&lt;strong>1. Watch the 12V rail under load (free, best first move).&lt;/strong> Install &lt;a href="https://www.hwinfo.com/" rel="noopener">HWiNFO&lt;/a> (free), open Sensors, find the 12V, 5V, and 3.3V readings, and run a stress test — &lt;a href="https://www.ocbase.com/" rel="noopener">OCCT&lt;/a> has a dedicated power-supply test, or run a demanding game. The ATX spec allows each rail a &lt;strong>±5% tolerance&lt;/strong>, so the valid windows are:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Rail&lt;/th>
&lt;th scope="col">Nominal&lt;/th>
&lt;th scope="col">Valid range (±5%)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>+12V&lt;/td>
&lt;td>12.0 V&lt;/td>
&lt;td>11.40 – 12.60 V&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>+5V&lt;/td>
&lt;td>5.0 V&lt;/td>
&lt;td>4.75 – 5.25 V&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>+3.3V&lt;/td>
&lt;td>3.3 V&lt;/td>
&lt;td>3.135 – 3.465 V&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Watch the &lt;strong>12V rail&lt;/strong> especially — it feeds the CPU and GPU and is where trouble shows first. Steady readings inside the window are healthy; a 12V line that &lt;strong>sags toward or below 11.4V when load hits,&lt;/strong> or swings around erratically, is a failing supply caught in the act. (Motherboard sensors aren&amp;rsquo;t lab-accurate, so read the &lt;em>trend and stability&lt;/em> more than the third decimal — the newer ATX 3.0 spec even permits brief 12V dips to about 11.16V during transient spikes, so a momentary flicker isn&amp;rsquo;t damning; a sustained sag is.)&lt;/p>
&lt;p>&lt;strong>2. Use a PSU tester (~$20–30).&lt;/strong> A &lt;a href="https://www.amazon.com/s?k=power&amp;#43;supply&amp;#43;tester&amp;amp;tag=techfuelhq-20" rel="nofollow sponsored noopener">dedicated PSU tester&lt;/a> plugs onto the PSU&amp;rsquo;s connectors and displays each rail&amp;rsquo;s voltage. It&amp;rsquo;s more convenient than a multimeter and catches a rail that&amp;rsquo;s dead or badly out of spec. Its limit is the same as the paperclip test&amp;rsquo;s — it reads at low load — so a clean result doesn&amp;rsquo;t fully clear a unit that only misbehaves under a real GPU spike. Good for catching gross faults, not subtle sag.&lt;/p>
&lt;p>&lt;strong>3. Multimeter on the rails.&lt;/strong> If you own a &lt;a href="https://www.amazon.com/s?k=digital&amp;#43;multimeter&amp;amp;tag=techfuelhq-20" rel="nofollow sponsored noopener">multimeter&lt;/a>, you can back-probe the 24-pin against the ranges above. Same caveat: it&amp;rsquo;s a snapshot, and low-load.&lt;/p>
&lt;p>&lt;strong>4. The swap test (most conclusive).&lt;/strong> As in Step 1 — a known-good PSU in place of the suspect one settles it completely. Nothing beats it.&lt;/p>
&lt;p>Notice the theme: every bench test is limited because it can&amp;rsquo;t recreate a real load, which is exactly when a dying PSU shows itself. That&amp;rsquo;s why &lt;strong>watching the rails under an actual stress load&lt;/strong> and &lt;strong>swapping in a known-good unit&lt;/strong> are the two tests that actually earn their conclusions.&lt;/p>
&lt;h2 id="safety-the-one-part-you-never-open">Safety: the one part you never open&lt;/h2>
&lt;p>A power supply stores lethal energy. The large capacitors inside can hold a &lt;strong>dangerous charge for a long time even after it&amp;rsquo;s unplugged&lt;/strong> — enough to seriously hurt you. There is nothing user-serviceable in there, so &lt;strong>never open the PSU casing.&lt;/strong> All the testing above happens from &lt;em>outside&lt;/em> the unit, at the cables and connectors. If a PSU is bad, you replace it; you don&amp;rsquo;t repair it.&lt;/p>
&lt;p>And if you ever get a &lt;strong>burning smell, smoke, a loud pop, or see sparks&lt;/strong> — power off at the switch and pull the plug from the wall right away, and don&amp;rsquo;t turn it back on. At that point diagnosis is over; the unit is done.&lt;/p>
&lt;h2 id="when-to-stop-testing-and-just-replace-it">When to stop testing and just replace it&lt;/h2>
&lt;p>Power supplies are the one component where &amp;ldquo;just replace it&amp;rdquo; is often the smart move rather than a cop-out, for three reasons:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>A quality unit is affordable&lt;/strong> relative to what it protects — a good 650–850W supply is a fraction of the cost of the GPU and board it feeds.&lt;/li>
&lt;li>&lt;strong>A failing PSU can take other parts with it.&lt;/strong> An out-of-spec unit can corrupt data or, in a real failure, push a spike into your motherboard, GPU, or drives. Continuing to run a PC you suspect is being fed bad power is a gamble with expensive stakes.&lt;/li>
&lt;li>&lt;strong>Diagnosis has real limits.&lt;/strong> Short of the swap test, you can&amp;rsquo;t fully prove a PSU is healthy — only that it isn&amp;rsquo;t obviously dead. If the symptoms fit (random shutdowns under load, no error, an older or cheap unit) and you can&amp;rsquo;t borrow a spare, buying a reputable replacement is often cheaper than the hours you&amp;rsquo;d spend chasing ghosts.&lt;/li>
&lt;/ul>
&lt;p>When you do replace, buy quality and leave headroom: a reputable unit with a solid warranty, an &lt;a href="https://www.clearesult.com/80plus/" rel="noopener">80 PLUS&lt;/a> efficiency rating, and enough wattage that you&amp;rsquo;re not running near the ceiling. If you&amp;rsquo;re not sure how much you need, size it to your actual parts plus a comfortable margin with the &lt;a href="https://techfuelhq.com/tools/psu-wattage-calculator/">PSU calculator&lt;/a> rather than guessing high or low. A good PSU is the least glamorous upgrade in the machine and the one most worth not cheaping out on — it&amp;rsquo;s the part every other part depends on.&lt;/p>
&lt;h2 id="the-quick-version">The quick version&lt;/h2>
&lt;ol>
&lt;li>&lt;strong>Recognize the fingerprint.&lt;/strong> Random shutdowns or reboots &lt;strong>under load, with no error message,&lt;/strong> that come and go unpredictably — that&amp;rsquo;s the classic failing-PSU pattern.&lt;/li>
&lt;li>&lt;strong>Rule out the impostors first.&lt;/strong> Visual glitches or driver resets → suspect the &lt;a href="https://techfuelhq.com/articles/gpu-artifacts-2026/">GPU&lt;/a>. Won&amp;rsquo;t POST → &lt;a href="https://techfuelhq.com/articles/graphics-card-not-detected-2026/">start at the boot chain&lt;/a>. Idle shutdowns that survive a known-good PSU → possibly the &lt;a href="https://techfuelhq.com/articles/motherboard-failure-symptoms-2026/">motherboard&lt;/a>. Memory-named BSODs → test the RAM.&lt;/li>
&lt;li>&lt;strong>Don&amp;rsquo;t trust the paperclip test.&lt;/strong> It only proves the PSU turns on, not that it holds voltage under load — which is how these units actually fail.&lt;/li>
&lt;li>&lt;strong>Measure under load.&lt;/strong> Watch the 12V rail in HWiNFO during a stress test (valid range 11.40–12.60V); a sag under load is the smoking gun. A PSU tester or multimeter catches gross faults; a &lt;strong>known-good-PSU swap&lt;/strong> is the only conclusive test.&lt;/li>
&lt;li>&lt;strong>Never open a PSU&lt;/strong> — the capacitors hold a lethal charge. Burning smell or a pop → unplug from the wall immediately.&lt;/li>
&lt;li>&lt;strong>When it fits, just replace it.&lt;/strong> A quality PSU is cheap insurance against a failing one damaging everything it powers.&lt;/li>
&lt;/ol>
&lt;p>Sort out whether it&amp;rsquo;s &lt;em>actually&lt;/em> the power supply before you swap a single other part, and you&amp;rsquo;ll skip the weekend of replacing healthy components one at a time — the exact trap a failing PSU is built to spring.&lt;/p></description></item><item><title>Why Is My CPU Overheating? Diagnose It by When It Happens (2026)</title><link>https://techfuelhq.com/articles/cpu-overheating-2026/</link><pubDate>Fri, 10 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/cpu-overheating-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-07-10 · ~9 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence what gets recommended - see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;p>Almost every guide answers &amp;ldquo;how do I fix an overheating CPU&amp;rdquo; with the same list: clean the dust, reapply the paste, add fans. That list isn&amp;rsquo;t wrong - but handed out blindly it sends people repasting a chip whose &lt;em>pump&lt;/em> died, or buying a bigger cooler when the fan simply wasn&amp;rsquo;t plugged in. The fix depends entirely on the cause, and the cause is written in &lt;strong>when&lt;/strong> the overheating happens.&lt;/p>
&lt;p>So before you touch anything, two questions decide everything: &lt;strong>is the CPU actually overheating, or just reporting a high-but-normal number - and if it is overheating, when does it happen?&lt;/strong> Get those right and the correct fix is usually obvious.&lt;/p>
&lt;h2 id="first-is-it-actually-overheating">First: is it actually overheating?&lt;/h2>
&lt;p>A big temperature number is not, by itself, a problem. Modern AMD and Intel CPUs are &lt;em>designed&lt;/em> to boost right up to their thermal limit under load, so a Ryzen 7000/9000 touching 90-95C in a render, or an Intel Core chip in the high 90s during a stress test, is the chip working as intended - not damage. The one wrinkle worth knowing: the older 7000-series X3D chips like the 7800X3D top out lower at ~89C, but AMD raised the newer 9800X3D back to the full 95C. If a high-but-stable number is all you&amp;rsquo;re seeing, you may not have a problem at all; our &lt;a href="https://techfuelhq.com/articles/safe-cpu-temp-2026/">safe CPU temperature guide&lt;/a> has the real numbers by chip and workload.&lt;/p>
&lt;!-- ========== SIGNATURE VISUAL A: THE CPU THERMAL DIAL (radial gauge - wave-11 grammar) ========== -->
&lt;div class="visual-block">
&lt;div style="background:#140a08;border:1px solid rgba(251,146,60,0.22);border-radius:10px;padding:24px 20px 18px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
&lt;div style="margin-bottom:6px;">
&lt;div style="display:flex;align-items:center;gap:9px;">
&lt;span style="width:8px;height:8px;border-radius:50%;background:#fb923c;box-shadow:0 0 8px #fb923c;">&lt;/span>
&lt;div style="font-size:19px;font-weight:700;color:#fbe8d8;letter-spacing:-0.3px;">The CPU thermal dial: a high number is not a fault&lt;/div>
&lt;/div>
&lt;div style="font-size:12.5px;color:#b89a86;margin-top:6px;line-height:1.5;">Modern CPUs are &lt;em>built&lt;/em> to boost right up to their limit under load. 84&amp;#176;C, 90&amp;#176;C, even 95&amp;#176;C in a heavy render is the chip working as designed &amp;#8212; not damage. What actually signals a problem is &lt;strong style="color:#f3d9c6;">behavior&lt;/strong>, not the reading on the sensor.&lt;/div>
&lt;/div>
&lt;div style="display:flex;justify-content:center;margin:4px 0 2px;">
&lt;svg viewBox="0 0 400 200" width="100%" style="max-width:430px;height:auto;" role="img" aria-label="Semicircular gauge of CPU temperature from 30 to 110 Celsius: idle and normal-load zones in blue-green, the peak-boost-by-design zone reaching 95C in lime, the throttle zone 95 to 105C in orange, and emergency shutdown above 105C in red. A needle points to 92C, marked normal.">
&lt;path d="M50,175 A150,150 0 0 1 350,175" fill="none" stroke="#2a1a13" stroke-width="30"/>
&lt;path d="M50,175 A150,150 0 0 1 142.6,36.4" fill="none" stroke="#22d3ee" stroke-width="26"/>
&lt;path d="M142.6,36.4 A150,150 0 0 1 283.3,50.3" fill="none" stroke="#4ade80" stroke-width="26"/>
&lt;path d="M283.3,50.3 A150,150 0 0 1 324.7,91.7" fill="none" stroke="#c8ff00" stroke-width="26"/>
&lt;path d="M324.7,91.7 A150,150 0 0 1 347.1,145.7" fill="none" stroke="#fb923c" stroke-width="26"/>
&lt;path d="M347.1,145.7 A150,150 0 0 1 350,175" fill="none" stroke="#ef4444" stroke-width="26"/>
&lt;line x1="200" y1="175" x2="300.4" y2="89.3" stroke="#fff5ec" stroke-width="3.2" stroke-linecap="round"/>
&lt;circle cx="200" cy="175" r="7" fill="#fff5ec"/>
&lt;circle cx="200" cy="175" r="3.2" fill="#140a08"/>
&lt;text x="40" y="192" font-family="-apple-system,Segoe UI,sans-serif" font-size="11" fill="#8a6f60">30&amp;#176;&lt;/text>
&lt;text x="360" y="192" text-anchor="end" font-family="-apple-system,Segoe UI,sans-serif" font-size="11" fill="#8a6f60">110&amp;#176;&lt;/text>
&lt;text x="96" y="150" text-anchor="middle" font-family="-apple-system,Segoe UI,sans-serif" font-size="9.5" font-weight="700" letter-spacing="0.5" fill="#5fd6e6">IDLE&lt;/text>
&lt;text x="200" y="82" text-anchor="middle" font-family="-apple-system,Segoe UI,sans-serif" font-size="9.5" font-weight="700" letter-spacing="0.5" fill="#5fbf75">NORMAL LOAD&lt;/text>
&lt;text x="300" y="150" text-anchor="middle" font-family="-apple-system,Segoe UI,sans-serif" font-size="9.5" font-weight="700" letter-spacing="0.5" fill="#f0a35f">THROTTLE&lt;/text>
&lt;text x="200" y="142" text-anchor="middle" font-family="-apple-system,Segoe UI,sans-serif" font-size="34" font-weight="800" fill="#ffd9b0">92&amp;#176;C&lt;/text>
&lt;text x="200" y="160" text-anchor="middle" font-family="-apple-system,Segoe UI,sans-serif" font-size="10.5" fill="#b89a86">a Ryzen mid-render&lt;/text>
&lt;text x="200" y="176" text-anchor="middle" font-family="-apple-system,Segoe UI,sans-serif" font-size="11.5" font-weight="800" letter-spacing="1.5" fill="#c8ff00">WORKING AS INTENDED&lt;/text>
&lt;/svg>
&lt;/div>
&lt;div style="font-size:10.5px;color:#8a6f60;text-align:center;margin:2px 0 12px;">The lime band is &lt;strong style="color:#c8ff00;">peak boost by design&lt;/strong> &amp;#8212; the chip &lt;em>wants&lt;/em> to live there under load.&lt;/div>
&lt;div style="background:rgba(251,146,60,0.06);border:1px solid rgba(251,146,60,0.16);border-radius:7px;padding:11px 13px;margin-bottom:12px;">
&lt;div style="font-size:10px;font-weight:700;letter-spacing:1px;color:#c58a63;margin-bottom:8px;">WHERE EACH CHIP&amp;#8217;S REDLINE (Tjmax) ACTUALLY SITS&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;gap:7px;">
&lt;span style="font-size:11px;color:#e7d3c4;background:rgba(255,255,255,0.04);border:1px solid rgba(200,255,0,0.25);border-radius:20px;padding:4px 11px;">Ryzen 7800X3D &amp;#8212; &lt;strong style="color:#fbe8d8;">89&amp;#176;C&lt;/strong>&lt;/span>
&lt;span style="font-size:11px;color:#e7d3c4;background:rgba(255,255,255,0.04);border:1px solid rgba(200,255,0,0.25);border-radius:20px;padding:4px 11px;">Ryzen 7000/9000 &amp;amp; 9800X3D &amp;#8212; &lt;strong style="color:#fbe8d8;">95&amp;#176;C&lt;/strong>&lt;/span>
&lt;span style="font-size:11px;color:#e7d3c4;background:rgba(255,255,255,0.04);border:1px solid rgba(251,146,60,0.3);border-radius:20px;padding:4px 11px;">Intel Core 12&amp;#8211;14th gen &amp;#8212; &lt;strong style="color:#fbe8d8;">100&amp;#176;C&lt;/strong>&lt;/span>
&lt;span style="font-size:11px;color:#e7d3c4;background:rgba(255,255,255,0.04);border:1px solid rgba(239,68,68,0.3);border-radius:20px;padding:4px 11px;">Intel Arrow Lake (Core Ultra 200S) &amp;#8212; &lt;strong style="color:#fbe8d8;">105&amp;#176;C&lt;/strong>&lt;/span>
&lt;/div>
&lt;/div>
&lt;div style="border-top:1px solid rgba(251,146,60,0.14);padding-top:12px;">
&lt;div style="font-size:12px;color:#d8c3b2;line-height:1.5;margin-bottom:9px;">The dial can&amp;#8217;t diagnose you &amp;#8212; only these three can. &lt;strong style="color:#f3d9c6;">Real overheating is behavior:&lt;/strong>&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;gap:9px;">
&lt;div style="flex:1;min-width:180px;background:rgba(239,68,68,0.07);border-left:3px solid #ef4444;border-radius:0 6px 6px 0;padding:9px 11px;">
&lt;div style="font-size:12px;font-weight:700;color:#f7b3b3;">Throttles under LIGHT load&lt;/div>
&lt;div style="font-size:11px;color:#c9b3a5;line-height:1.45;margin-top:2px;">clocks and frame-rates fall off a cliff while barely doing anything&lt;/div>
&lt;/div>
&lt;div style="flex:1;min-width:180px;background:rgba(239,68,68,0.07);border-left:3px solid #ef4444;border-radius:0 6px 6px 0;padding:9px 11px;">
&lt;div style="font-size:12px;font-weight:700;color:#f7b3b3;">Hot at IDLE&lt;/div>
&lt;div style="font-size:11px;color:#c9b3a5;line-height:1.45;margin-top:2px;">85&amp;#176;C+ sitting on the desktop doing nothing&lt;/div>
&lt;/div>
&lt;div style="flex:1;min-width:180px;background:rgba(239,68,68,0.07);border-left:3px solid #ef4444;border-radius:0 6px 6px 0;padding:9px 11px;">
&lt;div style="font-size:12px;font-weight:700;color:#f7b3b3;">Sudden SHUTDOWN&lt;/div>
&lt;div style="font-size:11px;color:#c9b3a5;line-height:1.45;margin-top:2px;">the PC cuts power or reboots with no blue screen&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:14px;padding-top:10px;border-top:1px solid rgba(251,146,60,0.1);font-size:10.5px;color:#7c6355;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;">
&lt;span>Redlines cross-checked against AMD &amp;amp; Intel published Tjmax specs, July 2026.&lt;/span>
&lt;span style="font-family:ui-monospace,monospace;color:#5f4c42;">techfuelhq.com&lt;/span>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>&lt;em>Overheating&lt;/em> is a behavior, not a reading. You actually have a heat problem when you see one of these:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Thermal throttling&lt;/strong> - clock speeds drop under load and stay down, which you feel as sudden stutter or a frame-rate falling off a cliff from smooth to a slideshow. (Throttling is one cause of in-game stutter; if temps are fine but games still hitch, work through &lt;a href="https://techfuelhq.com/articles/pc-stuttering-in-games-2026/">why your PC stutters in games&lt;/a> instead. A throttling CPU can also read as &lt;a href="https://techfuelhq.com/articles/low-gpu-usage-2026/">low GPU usage&lt;/a> - the card coasts while it waits on the slowed processor.)&lt;/li>
&lt;li>&lt;strong>Sudden shutdowns or reboots&lt;/strong> - the chip hits its emergency limit and the system cuts power instantly, with no blue screen. (If the whole PC restarts, work the &lt;a href="https://techfuelhq.com/articles/pc-keeps-restarting-2026/">PC keeps restarting fixes&lt;/a> alongside this; if it locks up instead, see &lt;a href="https://techfuelhq.com/articles/computer-keeps-freezing-2026/">computer keeps freezing&lt;/a>.)&lt;/li>
&lt;li>&lt;strong>Temperatures that don&amp;rsquo;t match the workload&lt;/strong> - 90C+ while only browsing or sitting idle. &lt;em>This&lt;/em> is the real red flag, and it&amp;rsquo;s the one that means a genuine fault.&lt;/li>
&lt;/ul>
&lt;p>Grab a monitoring tool - HWiNFO64 is the standard, free choice - and watch two things: the actual core temperature, and whether the chip logs thermal throttling. A CPU that spikes to its limit only during a heavy all-core load and holds its clocks is fine. A CPU that throttles during light gaming, or sits hot at idle, is not. Now find out &lt;em>when&lt;/em>.&lt;/p>
&lt;h2 id="diagnose-it-by-when-it-happens">Diagnose it by when it happens&lt;/h2>
&lt;p>This is the shortcut every generic guide skips. Match how your overheating &lt;em>behaves over time&lt;/em> to a row below, and you&amp;rsquo;ve narrowed the cause before you pick up a screwdriver.&lt;/p>
&lt;!-- ========== SIGNATURE VISUAL B: TIMING FINGERPRINTS (temp-over-time signature curves - distinct within-wave form) ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0d1113;border:1px solid rgba(45,212,191,0.18);border-radius:10px;padding:24px 20px 18px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
&lt;div style="margin-bottom:14px;">
&lt;div style="display:flex;align-items:center;gap:9px;">
&lt;span style="width:8px;height:8px;border-radius:50%;background:#2dd4bf;box-shadow:0 0 8px #2dd4bf;">&lt;/span>
&lt;div style="font-size:19px;font-weight:700;color:#e3f2ef;letter-spacing:-0.3px;">Read the timing: the temperature&amp;#8217;s shape names the cause&lt;/div>
&lt;/div>
&lt;div style="font-size:12.5px;color:#8fa8a3;margin-top:6px;line-height:1.5;">Each little trace is temperature over time. Find the one that matches yours, and the likely fault &amp;#8212; and the first thing to check &amp;#8212; is already picked out for you.&lt;/div>
&lt;/div>
&lt;div style="display:flex;flex-direction:column;gap:2px;">
&lt;div style="display:flex;gap:13px;align-items:center;padding:11px 0;border-top:1px solid rgba(45,212,191,0.1);min-width:0;">
&lt;svg viewBox="0 0 66 32" width="74" height="36" style="flex-shrink:0;background:#08100f;border-radius:5px;" aria-hidden="true">&lt;line x1="4" y1="27" x2="62" y2="27" stroke="#1e2f2c" stroke-width="1" stroke-dasharray="2 2"/>&lt;polyline points="6,27 10,6 60,6" fill="none" stroke="#f87171" stroke-width="2.2" stroke-linejoin="round"/>&lt;/svg>
&lt;div style="min-width:0;">
&lt;div style="font-size:13px;color:#e3f2ef;line-height:1.4;">&lt;strong style="color:#fca5a5;">Instant at boot&lt;/strong> (often a &amp;#8220;CPU over temperature error&amp;#8221;) &amp;#8594; the cooler isn&amp;#8217;t mounted, the fan isn&amp;#8217;t in the CPU_FAN header, or the AIO pump isn&amp;#8217;t running.&lt;/div>
&lt;div style="font-size:11.5px;color:#7f9591;line-height:1.45;margin-top:2px;">First check: CPU_FAN header, mounting pressure, pump power.&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="display:flex;gap:13px;align-items:center;padding:11px 0;border-top:1px solid rgba(45,212,191,0.1);min-width:0;">
&lt;svg viewBox="0 0 66 32" width="74" height="36" style="flex-shrink:0;background:#08100f;border-radius:5px;" aria-hidden="true">&lt;line x1="4" y1="27" x2="62" y2="27" stroke="#1e2f2c" stroke-width="1" stroke-dasharray="2 2"/>&lt;polyline points="6,23 24,23 30,7 44,7 50,23 60,23" fill="none" stroke="#fbbf24" stroke-width="2.2" stroke-linejoin="round"/>&lt;/svg>
&lt;div style="min-width:0;">
&lt;div style="font-size:13px;color:#e3f2ef;line-height:1.4;">&lt;strong style="color:#fcd34d;">Only under heavy load&lt;/strong> (games, rendering) &amp;#8594; the cooler can&amp;#8217;t keep up: aged paste, a poor mount, weak airflow, or a cooler undersized for the chip.&lt;/div>
&lt;div style="font-size:11.5px;color:#7f9591;line-height:1.45;margin-top:2px;">First check: thermal paste age, cooler contact, fan curve.&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="display:flex;gap:13px;align-items:center;padding:11px 0;border-top:1px solid rgba(45,212,191,0.1);min-width:0;">
&lt;svg viewBox="0 0 66 32" width="74" height="36" style="flex-shrink:0;background:#08100f;border-radius:5px;" aria-hidden="true">&lt;line x1="4" y1="27" x2="62" y2="27" stroke="#1e2f2c" stroke-width="1" stroke-dasharray="2 2"/>&lt;polyline points="6,8 60,8" fill="none" stroke="#fb923c" stroke-width="2.2" stroke-linejoin="round"/>&lt;/svg>
&lt;div style="min-width:0;">
&lt;div style="font-size:13px;color:#e3f2ef;line-height:1.4;">&lt;strong style="color:#fdba74;">Hot at idle and light use too&lt;/strong> (70&amp;#8211;90&amp;#176;C doing nothing) &amp;#8594; a hardware failure: a dead AIO pump, a stopped fan, or a heatsink choked with dust.&lt;/div>
&lt;div style="font-size:11.5px;color:#7f9591;line-height:1.45;margin-top:2px;">First check: feel the AIO tubes for flow, confirm every fan spins, inspect the heatsink.&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="display:flex;gap:13px;align-items:center;padding:11px 0;border-top:1px solid rgba(45,212,191,0.1);min-width:0;">
&lt;svg viewBox="0 0 66 32" width="74" height="36" style="flex-shrink:0;background:#08100f;border-radius:5px;" aria-hidden="true">&lt;line x1="4" y1="27" x2="62" y2="27" stroke="#1e2f2c" stroke-width="1" stroke-dasharray="2 2"/>&lt;polyline points="6,25 60,9" fill="none" stroke="#facc15" stroke-width="2.2" stroke-linejoin="round"/>&lt;/svg>
&lt;div style="min-width:0;">
&lt;div style="font-size:13px;color:#e3f2ef;line-height:1.4;">&lt;strong style="color:#fde047;">Crept up gradually over months&lt;/strong> &amp;#8594; dust building in the heatsink, or thermal paste slowly drying out or pumping out from between chip and cooler.&lt;/div>
&lt;div style="font-size:11.5px;color:#7f9591;line-height:1.45;margin-top:2px;">First check: clean the heatsink, then plan a repaste.&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="display:flex;gap:13px;align-items:center;padding:11px 0;border-top:1px solid rgba(45,212,191,0.1);border-bottom:1px solid rgba(45,212,191,0.1);min-width:0;">
&lt;svg viewBox="0 0 66 32" width="74" height="36" style="flex-shrink:0;background:#08100f;border-radius:5px;" aria-hidden="true">&lt;line x1="4" y1="27" x2="62" y2="27" stroke="#1e2f2c" stroke-width="1" stroke-dasharray="2 2"/>&lt;polyline points="6,24 30,24 35,8 60,8" fill="none" stroke="#fb7185" stroke-width="2.2" stroke-linejoin="round"/>&lt;/svg>
&lt;div style="min-width:0;">
&lt;div style="font-size:13px;color:#e3f2ef;line-height:1.4;">&lt;strong style="color:#fda4b6;">Suddenly, right after you touched the PC&lt;/strong> &amp;#8594; a cooler knocked loose, or an AIO that lost its prime after being moved (an air bubble parked over the pump).&lt;/div>
&lt;div style="font-size:11.5px;color:#7f9591;line-height:1.45;margin-top:2px;">First check: reseat the cooler, look for an AIO air bubble.&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:14px;padding-top:11px;border-top:1px solid rgba(45,212,191,0.1);font-size:11.5px;color:#8fa8a3;line-height:1.5;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;">
&lt;span>The one question that beats all of it: &lt;strong style="color:#c9e6e0;">did something change?&lt;/strong> A new build or fresh repaste that overheats is a mounting/contact problem. A rig that ran cool for a year and suddenly spikes has something that &lt;em>broke&lt;/em> &amp;#8212; a failure to find, not a setting to tune.&lt;/span>
&lt;span style="font-family:ui-monospace,monospace;font-size:10px;color:#4a5c58;">techfuelhq.com&lt;/span>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>The single most useful clue is whether something &lt;em>changed&lt;/em>. A brand-new build or a fresh repaste that overheats is a mounting or paste-contact problem nine times out of ten. A rig that ran cool for a year and suddenly spikes has something that &lt;em>broke&lt;/em> - and that&amp;rsquo;s a failure to find, not a setting to tune.&lt;/p>
&lt;h2 id="the-causes-and-the-fix-for-each">The causes, and the fix for each&lt;/h2>
&lt;h3 id="a-dead-or-dying-aio-pump-sudden-idle-and-load">A dead or dying AIO pump (sudden, idle-and-load)&lt;/h3>
&lt;p>If you run an all-in-one liquid cooler and temps suddenly rocket toward 90-100C even at idle, suspect the pump first. When coolant stops circulating, the cold plate can&amp;rsquo;t move heat and the chip heats up in seconds regardless of load. Builders on Tom&amp;rsquo;s Hardware and VI-Control repeatedly trace exactly this &amp;ldquo;80-90C at idle out of nowhere&amp;rdquo; pattern to a failed pump. To check it: with the PC on, gently feel the two tubes leaving the pump - you should feel faint vibration and, over a few minutes, both tubes warming; a big temperature difference between the tubes or dead-still tubes points to a stopped pump or a blockage. Also confirm the pump header reports RPM in the BIOS. A dead pump means a new cooler.&lt;/p>
&lt;h3 id="thermal-paste-that-dried-or-pumped-out-gradual-or-after-years">Thermal paste that dried or pumped out (gradual, or after years)&lt;/h3>
&lt;p>Paste doesn&amp;rsquo;t last forever. Over years it can dry out, and on some mounts it slowly &amp;ldquo;pumps out&amp;rdquo; from between the chip and cooler through thermal cycling, leaving a poor contact patch. The result is a chip that used to run cool creeping hotter under load. A fresh repaste with a proven compound - a ~$7 tube of the &lt;a href="https://www.amazon.com/dp/B07L9BDY3T?tag=techfuelhq-20" rel="nofollow sponsored">Arctic MX-4&lt;/a> is plenty for years of applications - often drops load temps several degrees on a chip that was running hot. One counterintuitive trap: &lt;em>too much&lt;/em> paste after a repaste can insulate rather than conduct, so use a modest pea-sized amount, not a thick layer. How often you actually need to do this is a temperature question, not a calendar one — &lt;a href="https://techfuelhq.com/articles/how-often-to-replace-thermal-paste-2026/">how often to replace thermal paste&lt;/a> explains why the popular &amp;ldquo;every 2-3 years&amp;rdquo; rule misleads more people than it helps.&lt;/p>
&lt;h3 id="the-cooler-isnt-seated-right-instant-or-after-a-repastemove">The cooler isn&amp;rsquo;t seated right (instant, or after a repaste/move)&lt;/h3>
&lt;p>Uneven mounting pressure, a cooler tightened lopsidedly, or - embarrassingly common - the thin protective plastic film left on a new cooler&amp;rsquo;s cold plate all wreck contact and cause instant overheating. If it started right after you installed the cooler or moved the case, pull the cooler, confirm the film is gone, clean and repaste, and remount with even pressure across all screws. On an AIO, moving the PC can also introduce an air bubble into the pump; a common trick is to power the system on its side briefly to let the bubble migrate away from the pump.&lt;/p>
&lt;h3 id="a-dead-fan-or-dust-gradual-idle-and-load">A dead fan or dust (gradual, idle-and-load)&lt;/h3>
&lt;p>The dullest causes are still the most frequent. A CPU cooler fan or a case fan that has stopped spinning, or a heatsink packed with dust, chokes heat removal. Open the case, confirm every fan actually spins at boot, and clear dust from the heatsink fins and filters with compressed air. If the CPU cooler fan itself won&amp;rsquo;t turn, &lt;a href="https://techfuelhq.com/articles/cpu-fan-not-spinning-2026/">CPU fan not spinning&lt;/a> walks through telling a dead fan apart from a wrong-header or fan-stop false alarm. Poor case airflow - the culprit Corsair names as the most common cause of CPU overheating - is the cheapest big win: make sure the case has real intake and exhaust and isn&amp;rsquo;t shoved against a wall or crammed in a cabinet.&lt;/p>
&lt;h3 id="the-chip-simply-runs-hot-for-its-cooler-under-load-only">The chip simply runs hot for its cooler (under load only)&lt;/h3>
&lt;p>If everything is healthy and it only hits the limit under genuine heavy load, the cooler may just be undersized for the chip. Two fixes, cheapest first: &lt;strong>undervolt&lt;/strong> - a Curve Optimizer offset on AMD or a voltage offset on Intel lowers temperature with little or no performance loss, and it&amp;rsquo;s the single highest-return tuning step - and if that isn&amp;rsquo;t enough, move to a stronger air cooler or a 240/360mm AIO.&lt;/p>
&lt;h2 id="the-cpu-over-temperature-error-at-boot">The &amp;ldquo;CPU over temperature error&amp;rdquo; at boot&lt;/h2>
&lt;p>This specific message - often paired with &amp;ldquo;CPU fan speed detection error! Please ensure your CPU cooler is properly connected to the CPU_FAN header&amp;rdquo; - trips up a lot of new builders, and it&amp;rsquo;s almost never a slightly-too-warm chip. The motherboard is reporting that the CPU crossed a temperature threshold or that it can&amp;rsquo;t see a fan on the CPU_FAN header. Check, in order: the cooler&amp;rsquo;s fan or the AIO pump cable is plugged into the &lt;strong>CPU_FAN&lt;/strong> header (not a case-fan or CPU_OPT header), the cooler is mounted with even pressure and its plastic film removed, and - on an AIO - the pump is actually powered and running. Fix the mount or the header connection and the error clears.&lt;/p>
&lt;h2 id="what-if-its-a-laptop">What if it&amp;rsquo;s a laptop?&lt;/h2>
&lt;p>A laptop overheats for the same underlying reasons but the odds shift, because everything is smaller and packed tighter. Three things matter more than on a desktop:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Dust is even more often the culprit.&lt;/strong> A laptop pulls air through a single small blower and a thin fin stack that clogs fast, especially if it&amp;rsquo;s ever used on a bed, couch, or carpet that blocks the underside intakes. Clearing the intake grilles and the fan with short bursts of compressed air (hold the fan still so it doesn&amp;rsquo;t over-spin) is the highest-return fix and the first thing to try.&lt;/li>
&lt;li>&lt;strong>A high number under load is often normal here too.&lt;/strong> Thin chassis run hot by design - many gaming laptops touch 90-100C under a sustained load and &lt;em>thermal-throttle on purpose&lt;/em> to stay there. As on the desktop, the tell isn&amp;rsquo;t the reading, it&amp;rsquo;s the behavior: throttling during light use, or heat while idle, is the real fault. Raising the back of the laptop an inch for airflow, or a cheap cooling pad, buys a few degrees for free.&lt;/li>
&lt;li>&lt;strong>Repaste and undervolt do more, but repaste is harder.&lt;/strong> Factory laptop paste dries out and is a frequent cause of a machine that used to run cool; a repaste (and fresh thermal pads on the VRM/memory) often drops load temps more than anything else - but it means disassembly, so weigh your comfort and warranty. The lower-risk win first is an &lt;strong>undervolt&lt;/strong>: on Intel laptops ThrottleStop or the vendor&amp;rsquo;s tuning app, on AMD the vendor utility, both of which cut temperature with little performance loss. Also check the vendor&amp;rsquo;s power/thermal profile isn&amp;rsquo;t stuck on a silent &amp;ldquo;quiet&amp;rdquo; fan curve.&lt;/li>
&lt;/ul>
&lt;p>If the fan itself rattles, screeches, or won&amp;rsquo;t spin at all, that&amp;rsquo;s a failing fan rather than a heat-management problem - a common and usually inexpensive repair.&lt;/p>
&lt;h2 id="when-its-actually-fine">When it&amp;rsquo;s actually fine&lt;/h2>
&lt;p>Plenty of &amp;ldquo;my CPU is overheating for no reason&amp;rdquo; posts turn out to be a healthy chip doing exactly what it&amp;rsquo;s supposed to. A Ryzen 7 7800X3D idling around 45-50C, or a Ryzen 7000/9000 briefly touching 95C in a stress test, is normal. If the number only spikes under real load, the clocks hold, and the PC is perfectly stable, you don&amp;rsquo;t have an overheating problem - you have a modern CPU. The tell that something is genuinely wrong is always the same: heat that doesn&amp;rsquo;t fit the work, throttling under light load, or shutdowns. Anything else is worth confirming against the &lt;a href="https://techfuelhq.com/articles/safe-cpu-temp-2026/">real safe-temperature ranges&lt;/a> before you spend a dollar. And if the CPU checks out but games still stutter or the case still runs hot, the part actually overheating may be the graphics card — &lt;a href="https://techfuelhq.com/articles/gpu-overheating-2026/">confirm the GPU&amp;rsquo;s temps&lt;/a> with the same core-vs-hotspot check before you touch a cooler.&lt;/p>
&lt;h2 id="what-to-do-right-now">What to do right now&lt;/h2>
&lt;ol>
&lt;li>&lt;strong>Confirm it&amp;rsquo;s real.&lt;/strong> Open HWiNFO64, watch the core temp and the throttling flag. High only under heavy load with stable clocks = normal. Hot at idle, or throttling under light use = a fault.&lt;/li>
&lt;li>&lt;strong>Read the timing.&lt;/strong> Instant-at-boot, load-only, idle-too, gradual, or right-after-a-change - use the table above to pick your suspect.&lt;/li>
&lt;li>&lt;strong>Check the free stuff first.&lt;/strong> Fans spinning, cooler seated, plastic film gone, AIO tubes warming, dust cleared, case airflow real.&lt;/li>
&lt;li>&lt;strong>Then the cheap fixes.&lt;/strong> Fresh thermal paste, a sane fan curve, an undervolt.&lt;/li>
&lt;li>&lt;strong>Hardware last.&lt;/strong> A dead pump means a new cooler; a chip that&amp;rsquo;s genuinely too much for its cooler means a bigger one. Don&amp;rsquo;t buy either until you&amp;rsquo;ve ruled the failures out.&lt;/li>
&lt;/ol>
&lt;p>Overheating feels alarming, but the CPU is one of the best-protected parts in the machine - it will throttle and shut down long before it hurts itself. Treat the temperature as a symptom, find &lt;em>when&lt;/em> it happens, and the actual fix is almost always cheaper and simpler than the panic suggests.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>Modern CPU thermal limits and throttle-then-shutdown behavior, verified against AMD/Intel published Tjmax specs (July 2026): Ryzen 7000/9000 to 95C; the 7000-series X3D like the 7800X3D lower at ~89C, but the restacked 9800X3D raised back to 95C; Intel 12th-14th-gen Core to 100C; Intel Arrow Lake (Core Ultra 200S) raised to 105C (confirmed via Tom&amp;rsquo;s Hardware and WCCFTech coverage of Intel&amp;rsquo;s spec change). Cross-checked against our first-party &lt;a href="https://techfuelhq.com/articles/safe-cpu-temp-2026/">safe CPU temperature guide&lt;/a>.&lt;/li>
&lt;li>Laptop specifics (single-blower dust as the dominant cause, thin-chassis throttling being normal, repaste/undervolt as the high-yield fixes): manufacturer cooling guidance and r/laptops / r/techsupport troubleshooting consensus.&lt;/li>
&lt;li>AIO pump-failure pattern (sudden 80-90C at idle; feel the tubes for coolant flow): builder troubleshooting threads on &lt;a href="https://forums.tomshardware.com/" rel="noopener">Tom&amp;rsquo;s Hardware&lt;/a> and VI-Control, corroborated by NZXT&amp;rsquo;s Kraken failure-diagnosis guidance.&lt;/li>
&lt;li>Poor case airflow as the most common CPU-overheating cause, and repaste guidance: &lt;a href="https://www.corsair.com/" rel="noopener">Corsair&lt;/a> DIY-builder resources; too-much-paste-after-repaste caution from repaste troubleshooting write-ups.&lt;/li>
&lt;li>&amp;ldquo;CPU over temperature error / CPU_FAN header&amp;rdquo; boot message and the after-a-move mount/air-bubble pattern: real r/buildapc and r/pchelp troubleshooting threads (e.g. &amp;ldquo;CPU overheating for no reason, brand new AIO&amp;hellip; started overheating on boot, all I did was move cases&amp;rdquo;).&lt;/li>
&lt;/ul>
&lt;p>&lt;em>General diagnostic guidance for desktop CPUs in 2026; check your specific CPU and cooler documentation for exact figures. Found an error? Email &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a> with the article URL.&lt;/em>&lt;/p></description></item><item><title>Why Is My PC Stuttering in Games? Frame Stutter vs Low FPS (2026)</title><link>https://techfuelhq.com/articles/pc-stuttering-in-games-2026/</link><pubDate>Fri, 10 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/pc-stuttering-in-games-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-07-10 · ~9 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence what gets recommended - see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;p>Search &amp;ldquo;PC stuttering in games&amp;rdquo; and every guide hands you the same 20-item checklist: update drivers, close background apps, turn off G-Sync, turn on G-Sync, reinstall Windows. People try all of it, in random order, and post the same thread a week later - &lt;em>&amp;ldquo;tried EVERYTHING, high-end rig, still stutters.&amp;rdquo;&lt;/em> The reason the checklist fails is that &lt;strong>&amp;ldquo;stuttering&amp;rdquo; is three different problems wearing the same word&lt;/strong>, and the fix for one does nothing for the others.&lt;/p>
&lt;p>So before you change a single setting, do two things: &lt;strong>figure out which of the three problems you actually have, then read the pattern that tells you the cause.&lt;/strong> Get that right and the correct fix is usually short and obvious.&lt;/p>
&lt;p>Here is the whole problem in one picture. Two rigs, both averaging &lt;strong>120 FPS&lt;/strong>. One is butter-smooth, the other stutters badly - and the difference is invisible to the FPS counter because it lives in the &lt;em>distribution&lt;/em> of frame times, not the average. This is where your frames actually land:&lt;/p>
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;padding:26px 16px 18px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;border-radius:8px;">
&lt;div style="text-align:center;margin-bottom:6px;">
&lt;div style="font-size:18px;font-weight:600;letter-spacing:-0.3px;">Where a 120 FPS rig's frames actually land&lt;/div>
&lt;div style="font-size:12px;color:#9a9ab5;margin-top:4px;">How often each frame time occurs. Both rigs share the same tall peak - the same 120 FPS average. Stutter is the red tail the average is too coarse to report.&lt;/div>
&lt;/div>
&lt;svg viewBox="0 0 760 400" xmlns="http://www.w3.org/2000/svg" style="width:100%;display:block;" role="img" aria-label="A frametime distribution histogram. Both a smooth and a stuttering rig share one tall green peak at 8 to 9 milliseconds, which is the 120 FPS average. The stuttering rig adds a long low red tail of rare 16 to 50 millisecond frames stretching to the right; its 0.1 percent low frame sits far out at 50 milliseconds, or 20 FPS, while the average stays pinned on the peak.">
&lt;line x1="80" y1="300" x2="710" y2="300" stroke="rgba(255,255,255,0.18)" stroke-width="1"/>
&lt;line x1="231" y1="296" x2="231" y2="300" stroke="#c8a03c" stroke-width="1" opacity="0.7"/>
&lt;text x="231" y="316" text-anchor="middle" fill="#c8a03c" font-size="9" font-family="-apple-system,sans-serif" opacity="0.85">16.7 ms &amp;#183; 60 FPS&lt;/text>
&lt;text x="80" y="332" fill="#7a7a96" font-size="10.5" font-family="-apple-system,sans-serif">faster frame&lt;/text>
&lt;text x="710" y="332" text-anchor="end" fill="#7a7a96" font-size="10.5" font-family="-apple-system,sans-serif">longer frame = the hitch you feel &amp;#8594;&lt;/text>
&lt;rect x="92.5" y="278" width="11" height="22" fill="#5dca7a" opacity="0.85"/>
&lt;rect x="104.5" y="248" width="11" height="52" fill="#5dca7a" opacity="0.9"/>
&lt;rect x="116.5" y="175" width="11" height="125" fill="#5dca7a"/>
&lt;rect x="128.5" y="95" width="11" height="205" fill="#5dca7a"/>
&lt;rect x="140.5" y="150" width="11" height="150" fill="#5dca7a"/>
&lt;rect x="152.5" y="220" width="11" height="80" fill="#5dca7a" opacity="0.9"/>
&lt;rect x="164.5" y="265" width="11" height="35" fill="#5dca7a" opacity="0.85"/>
&lt;rect x="176.5" y="285" width="11" height="15" fill="#5dca7a" opacity="0.8"/>
&lt;text x="82" y="84" fill="#5dca7a" font-size="11" font-weight="600" font-family="-apple-system,sans-serif">Both rigs: ~95% of frames in a tight 8-10 ms peak&lt;/text>
&lt;rect x="217" y="282" width="11" height="18" fill="#ed6a5a"/>
&lt;rect x="265" y="286" width="11" height="14" fill="#ed6a5a"/>
&lt;rect x="324" y="288" width="11" height="12" fill="#ed6a5a"/>
&lt;rect x="420" y="284" width="11" height="16" fill="#ed6a5a"/>
&lt;rect x="563" y="288" width="11" height="12" fill="#ed6a5a"/>
&lt;rect x="622" y="278" width="11" height="22" fill="#ed6a5a"/>
&lt;text x="400" y="250" text-anchor="middle" fill="#ed6a5a" font-size="11.5" font-weight="600" font-family="-apple-system,sans-serif">the stutter rig's tail: rare 16-50 ms frames&lt;/text>
&lt;text x="400" y="267" text-anchor="middle" fill="#c97c72" font-size="10.5" font-family="-apple-system,sans-serif">a few frames in every hundred - and you feel every one&lt;/text>
&lt;line x1="300" y1="272" x2="228" y2="290" stroke="#ed6a5a" stroke-width="0.8" opacity="0.5"/>
&lt;line x1="500" y1="272" x2="620" y2="286" stroke="#ed6a5a" stroke-width="0.8" opacity="0.5"/>
&lt;line x1="131" y1="88" x2="131" y2="300" stroke="#e8e8f0" stroke-width="1.3" stroke-dasharray="5 3" opacity="0.75"/>
&lt;text x="131" y="352" text-anchor="middle" fill="#e8e8f0" font-size="10.5" font-weight="600" font-family="-apple-system,sans-serif">AVERAGE (both) 8.3 ms&lt;/text>
&lt;text x="131" y="366" text-anchor="middle" fill="#9a9ab5" font-size="9.5" font-family="-apple-system,sans-serif">= 120 FPS&lt;/text>
&lt;line x1="628" y1="88" x2="628" y2="300" stroke="#ed6a5a" stroke-width="1.3" stroke-dasharray="5 3" opacity="0.85"/>
&lt;text x="628" y="352" text-anchor="middle" fill="#ed6a5a" font-size="10.5" font-weight="600" font-family="-apple-system,sans-serif">STUTTER 0.1% LOW 50 ms&lt;/text>
&lt;text x="628" y="366" text-anchor="middle" fill="#c97c72" font-size="9.5" font-family="-apple-system,sans-serif">= 20 FPS for that frame&lt;/text>
&lt;/svg>
&lt;div style="margin-top:6px;padding:12px 16px;border-radius:6px;background:rgba(200,255,0,0.05);border:1px solid rgba(200,255,0,0.28);">
&lt;div style="font-size:12.5px;font-weight:700;color:#c8ff00;font-family:-apple-system,sans-serif;">Identical average. Identical peak. The stutter is the red tail.&lt;/div>
&lt;div style="font-size:11px;color:#9a9ab5;margin-top:3px;font-family:-apple-system,sans-serif;">The average sits on the fat peak and never moves; the worst-1-in-1000 frame (your 0.1% low) lives out in the tail. That gap is exactly what "my high-end rig still stutters at 120 FPS" means - and why chasing a higher average number fixes nothing.&lt;/div>
&lt;/div>
&lt;div style="text-align:right;margin-top:8px;font-size:10px;color:#44445a;">techfuelhq.com &amp;#183; distribution, not average &amp;#183; 2026&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="first-is-it-actually-stutter">First: is it actually stutter?&lt;/h2>
&lt;p>Three completely different things get called &amp;ldquo;stuttering,&amp;rdquo; and they need opposite fixes:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Low FPS&lt;/strong> - the whole game is just slow (a steady 35 FPS everywhere). The frames are &lt;em>evenly&lt;/em> spaced, there&amp;rsquo;s just not enough of them. Fix: lower settings/resolution or get more GPU. This is not stutter.&lt;/li>
&lt;li>&lt;strong>Frame-pacing stutter / hitching&lt;/strong> - the average FPS looks fine or even high, but the game &lt;em>lurches&lt;/em>: brief freezes, hitches when you move or enter a new area, or a constant micro-jitter. The frames are arriving &lt;em>unevenly&lt;/em>. &lt;strong>This is the real topic of this guide.&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Network lag&lt;/strong> - only in online games: your character rubber-bands or warps while the local framerate is perfectly smooth. Fix lives in your connection, not your PC.&lt;/li>
&lt;/ul>
&lt;p>The tell that separates them is your &lt;strong>1% and 0.1% low FPS&lt;/strong>, not the big average in the corner. Average FPS hides the gaps between frames - a single 50ms frame buried in a stream of 8ms frames barely dents a 120 FPS average, but your eye catches it every time. The 0.1% low is exactly that worst frame, and it&amp;rsquo;s the number that tracks how &lt;em>smooth&lt;/em> the game feels. A rig showing 300 FPS average with 0.1% lows of 15 FPS will stutter worse than a locked, even 90.&lt;/p>
&lt;h2 id="measure-your-frametimes-the-step-everyone-skips">Measure your frametimes (the step everyone skips)&lt;/h2>
&lt;p>You cannot fix pacing by feel. Turn on a &lt;strong>frametime graph&lt;/strong> and the problem becomes visible:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>In-engine or launcher overlay&lt;/strong> - many games and the Steam overlay show a frametime line. Steam&amp;rsquo;s performance overlay (Shift+Tab → Performance) has a detailed mode with a frametime graph.&lt;/li>
&lt;li>&lt;strong>RTSS / MSI Afterburner&lt;/strong> - the enthusiast standard; add the &amp;ldquo;Frametime&amp;rdquo; graph, not just FPS.&lt;/li>
&lt;li>&lt;strong>Intel PresentMon&lt;/strong> - a free, vendor-neutral capture tool that logs frametimes and 1%/0.1% lows to a file you can actually read back.&lt;/li>
&lt;/ul>
&lt;p>A healthy game draws a nearly &lt;strong>flat frametime line&lt;/strong>. Stutter shows up as &lt;strong>spikes&lt;/strong> shooting up off that line - each spike is one frame that took too long, and that&amp;rsquo;s a hitch you felt. Watch the graph &lt;em>and your GPU usage&lt;/em> together for a minute of real gameplay and note two things: are the spikes &lt;strong>regular&lt;/strong> (every few seconds like clockwork) or &lt;strong>event-driven&lt;/strong> (only when you move, load, or enter a new zone), and does &lt;strong>GPU usage stay near 99% or drop&lt;/strong> when a spike happens. Those two observations narrow the cause more than any checklist.&lt;/p>
&lt;h2 id="route-by-the-pattern">Route by the pattern&lt;/h2>
&lt;p>This is the shortcut the 20-item lists skip. Match your frametime-graph behavior to a row and you&amp;rsquo;ve found the likely cause before you change anything.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">When/how it stutters&lt;/th>
&lt;th scope="col">GPU usage during it&lt;/th>
&lt;th scope="col">Most likely cause&lt;/th>
&lt;th scope="col">First fix&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>In new areas / first hour after a game or driver update&lt;/strong>&lt;/td>
&lt;td>Usually high&lt;/td>
&lt;td>Shader compilation&lt;/td>
&lt;td>Let it pre-compile; enable Steam pre-cached shaders; clear DirectX shader cache&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Crossing zones / moving through an open world&lt;/strong>&lt;/td>
&lt;td>Mixed&lt;/td>
&lt;td>Traversal / streaming stutter (common in UE5)&lt;/td>
&lt;td>Faster SSD, more RAM, cap FPS; often engine-side&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Regular hitch every few seconds, in every game&lt;/strong>&lt;/td>
&lt;td>Drops briefly&lt;/td>
&lt;td>Background task or DPC latency&lt;/td>
&lt;td>Close RGB/monitor/overlay apps; run LatencyMon&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Stutter with FPS dips, GPU usage falls to 50-70%&lt;/strong>&lt;/td>
&lt;td>Drops&lt;/td>
&lt;td>CPU or RAM bottleneck / power limit&lt;/td>
&lt;td>Enable XMP/EXPO; check 1% lows, temps, CPU power&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Jitter/tearing near your refresh rate&lt;/strong>&lt;/td>
&lt;td>High&lt;/td>
&lt;td>Frame pacing / VRR range&lt;/td>
&lt;td>Cap FPS ~3 below refresh; enable G-Sync/FreeSync&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Started right after a Windows feature update&lt;/strong>&lt;/td>
&lt;td>Any&lt;/td>
&lt;td>Known OS/driver regression&lt;/td>
&lt;td>Clean driver install; toggle HAGS; check for the fix&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The single most useful clue is whether the GPU is &lt;strong>pinned or coasting&lt;/strong> while it stutters. Pinned at 99% and still hitching points at shaders, VRAM, or pacing; dropping to 50-70% points at the CPU, RAM, or a background thread stealing time.&lt;/p>
&lt;h2 id="the-causes-and-the-fix-for-each">The causes, and the fix for each&lt;/h2>
&lt;h3 id="shader-compilation-new-areas-right-after-an-update">Shader compilation (new areas, right after an update)&lt;/h3>
&lt;p>Modern DirectX 12 and Unreal Engine games compile shader programs on your specific GPU the first time each effect appears. While a shader compiles, that frame stalls - so you get hitching in fresh areas or for the first hour after a new install or driver update, then it smooths out as the cache fills. The community fixes, cheapest first: &lt;strong>let the game finish its up-front shader step&lt;/strong> instead of skipping it; on Steam, keep &lt;strong>&amp;ldquo;pre-cached shaders&amp;rdquo; enabled&lt;/strong> in Settings → Downloads so Steam downloads shaders others already compiled; and after a graphics driver update, &lt;strong>clear the DirectX Shader Cache&lt;/strong> (Windows Disk Cleanup → DirectX Shader Cache) so it rebuilds clean. NVIDIA&amp;rsquo;s driver and the NVIDIA App added background shader-compilation handling in 2026 that helps here; keep the driver current and its shader cache size set generously. If a game is &lt;em>notorious&lt;/em> for shader stutter (many UE5 titles are), that&amp;rsquo;s the engine, and a community patch or the title&amp;rsquo;s own &amp;ldquo;compile shaders&amp;rdquo; option is the real fix.&lt;/p>
&lt;h3 id="background-tasks-and-dpc-latency-regular-hitch-every-few-seconds">Background tasks and DPC latency (regular hitch, every few seconds)&lt;/h3>
&lt;p>A hitch that arrives on a &lt;em>clock&lt;/em> - every few seconds no matter the game - is almost always something outside the game waking up. The usual suspects: RGB and fan-control suites, hardware monitors polling sensors too fast, browser tabs with hardware acceleration, Discord/overlay capture, cloud sync (OneDrive/Dropbox), the Xbox Game Bar&amp;rsquo;s background recording, and antivirus scans. Close them one at a time and watch the frametime graph. If hitches persist with everything closed, run &lt;strong>LatencyMon&lt;/strong> (free) - it points at the specific driver holding the CPU too long. The fix is usually updating or rolling back a &lt;strong>network, audio, or chipset driver&lt;/strong>, since those are the classic DPC-latency offenders. Turning off Game Bar background capture and browser hardware acceleration clears a surprising number of these.&lt;/p>
&lt;h3 id="a-cpu-or-ram-bottleneck-fps-dips-gpu-coasting-at-50-70">A CPU or RAM bottleneck (FPS dips, GPU coasting at 50-70%)&lt;/h3>
&lt;p>If GPU usage &lt;em>falls&lt;/em> when you stutter, the graphics card is idling while it waits on the rest of the system - the full diagnosis for a coasting card lives in &lt;a href="https://techfuelhq.com/articles/low-gpu-usage-2026/">low GPU usage: real bottleneck vs fake&lt;/a>. The most common free fix by far: &lt;strong>your RAM is running at its slow default speed&lt;/strong> because XMP (Intel) or EXPO (AMD) was never enabled in the BIOS - flip it on and stutter and 1% lows often improve immediately. Beyond that, a genuine CPU bottleneck (frequent in simulation, strategy, and busy open-world scenes) shows as maxed CPU threads and coasting GPU; there&amp;rsquo;s no setting that fully fixes it, but closing background CPU load, capping FPS to a steady number, and making sure the CPU isn&amp;rsquo;t &lt;strong>thermal-throttling&lt;/strong> all help. If your CPU is running hot, throttling itself reads as exactly this stutter - see &lt;a href="https://techfuelhq.com/articles/cpu-overheating-2026/">CPU overheating&lt;/a> to rule that out. Builders on r/pcmasterrace have chased &amp;ldquo;ghost&amp;rdquo; micro stutter on high-end 9800X3D/RTX 50-series rigs all the way down to the &lt;strong>CPU being power-choked&lt;/strong> on a weaker board, GPU usage collapsing to 50% under transient load - a reminder that &amp;ldquo;coasting GPU&amp;rdquo; can mean power delivery, not just a slow CPU.&lt;/p>
&lt;h3 id="vram-overflow-stutter-that-worsens-over-a-session">VRAM overflow (stutter that worsens over a session)&lt;/h3>
&lt;p>If a game runs smooth for ten minutes then degrades into stutter, or stutters hard only at high texture settings, you may be &lt;strong>out of VRAM&lt;/strong>. When the card runs out of video memory it swaps textures across the PCIe bus, and every swap is a hitch. Drop texture quality one notch, turn off frame generation (it costs VRAM), and watch whether dedicated VRAM usage is sitting at the card&amp;rsquo;s limit. If it is, you&amp;rsquo;re asking for more than the card holds - our guide to &lt;a href="https://techfuelhq.com/articles/how-much-vram-do-you-need-2026/">how much VRAM you need&lt;/a> has the real numbers by resolution.&lt;/p>
&lt;h3 id="frame-pacing-and-vrr-jittertearing-near-your-refresh-rate">Frame pacing and VRR (jitter/tearing near your refresh rate)&lt;/h3>
&lt;p>An uncapped game whose FPS swings wildly delivers frames at constantly changing intervals, which your eye reads as stutter even at high averages. Two moves smooth it. &lt;strong>Cap your FPS&lt;/strong> to a rate your PC can hold &lt;em>steadily&lt;/em> (a stable 90 beats a jumpy 90-200), using an in-engine limiter or RTSS. And if you have a &lt;strong>G-Sync/FreeSync&lt;/strong> display, cap &lt;strong>a few frames below your refresh&lt;/strong> - 141 on a 144Hz panel - to stay inside the VRR window where the monitor syncs to the GPU. That combination kills both tearing and range-exceed stutter. If tearing itself is the visible problem, &lt;a href="https://techfuelhq.com/articles/fix-screen-tearing-2026/">fixing screen tearing&lt;/a> covers the V-Sync/VRR interplay in full.&lt;/p>
&lt;h3 id="after-a-windows-update-started-out-of-nowhere">After a Windows update (started out of nowhere)&lt;/h3>
&lt;p>If smoothness vanished right after a Windows feature update, treat it as a regression, not a hardware fault. Do a &lt;strong>clean graphics driver install&lt;/strong> (DDU then reinstall), and try toggling &lt;strong>Hardware-Accelerated GPU Scheduling&lt;/strong> - it helps some systems and hurts others, so test both states; our &lt;a href="https://techfuelhq.com/gaming/hardware-accelerated-gpu-scheduling-on-or-off-2026/">HAGS on-or-off guide&lt;/a> explains which way to jump. Check the GPU vendor&amp;rsquo;s forums for a known-issue driver, and roll back if a specific driver version introduced it.&lt;/p>
&lt;h2 id="the-quick-win-order">The quick-win order&lt;/h2>
&lt;p>If you want a sequence rather than a diagnosis, do these free steps first, in order, checking the frametime graph after each:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Enable XMP/EXPO&lt;/strong> in the BIOS - the biggest single new-build win.&lt;/li>
&lt;li>&lt;strong>Close background apps&lt;/strong> - RGB suites, browsers, capture/overlays, sync, monitors.&lt;/li>
&lt;li>&lt;strong>Clean-install the current GPU driver&lt;/strong> (DDU), then let a couple of games build their shader caches.&lt;/li>
&lt;li>&lt;strong>Cap your FPS&lt;/strong> to a steady number and enable G-Sync/FreeSync a few frames below refresh.&lt;/li>
&lt;li>&lt;strong>Confirm the CPU isn&amp;rsquo;t throttling&lt;/strong> and the RAM profile is actually applied.&lt;/li>
&lt;/ol>
&lt;p>Only after those - if a frametime graph still shows spikes you can&amp;rsquo;t explain - do you start looking at DPC latency, VRAM limits, or hardware. Most stutter dies somewhere in the first four steps; the people who &amp;ldquo;tried everything&amp;rdquo; almost always tried them blind, in the wrong order, without ever looking at a frametime graph. If your system is &lt;em>freezing&lt;/em> outright rather than hitching, that&amp;rsquo;s a different problem - &lt;a href="https://techfuelhq.com/articles/computer-keeps-freezing-2026/">computer keeps freezing&lt;/a> covers hard locks - and if a specific game crashes to desktop instead of stuttering, start with the &lt;a href="https://techfuelhq.com/articles/gpu-driver-crash-fix-2026/">GPU driver crash fixes&lt;/a>.&lt;/p></description></item><item><title>Graphics Card Not Detected? Find Where It Disappears First (2026)</title><link>https://techfuelhq.com/articles/graphics-card-not-detected-2026/</link><pubDate>Thu, 09 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/graphics-card-not-detected-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-07-09 · ~9 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence what gets recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;p>Search &amp;ldquo;graphics card not detected&amp;rdquo; and the answer at the top of the page tells almost everyone the same thing: reinstall your graphics drivers. Sometimes that&amp;rsquo;s the fix. Just as often it does nothing — because a GPU that &amp;ldquo;isn&amp;rsquo;t detected&amp;rdquo; is actually &lt;strong>three completely different problems wearing the same symptom&lt;/strong>, and a driver reinstall only touches one of them.&lt;/p>
&lt;p>The question that decides everything: &lt;strong>where does the card disappear?&lt;/strong> A card that&amp;rsquo;s missing from the BIOS screen is a hardware problem. A card the BIOS sees but Windows doesn&amp;rsquo;t is a driver problem. A card that both see but games ignore is a &lt;em>configuration&lt;/em> problem. Answer that first and you&amp;rsquo;ve already thrown out two-thirds of the advice on the internet.&lt;/p>
&lt;h2 id="step-1-find-where-the-card-disappears">Step 1: Find where the card disappears&lt;/h2>
&lt;p>Before you change a single setting, do two things: &lt;strong>restart and open the BIOS/UEFI&lt;/strong> (tap Delete, F2, or F10 during boot — the key is on the splash screen), and note what you see there and in Windows. Then match your situation to the table. (This assumes you can actually see the screen — if the PC powers on but there&amp;rsquo;s &lt;em>no display at all&lt;/em> and you can&amp;rsquo;t even reach the BIOS, that&amp;rsquo;s a no-POST problem first: work through &lt;a href="https://techfuelhq.com/articles/pc-turns-on-but-no-display-2026/">PC turns on but no display&lt;/a> before worrying about detection.)&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">What you see&lt;/th>
&lt;th scope="col">Where the card disappears&lt;/th>
&lt;th scope="col">Where the problem lives&lt;/th>
&lt;th scope="col">Go to&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>No image at all, or the card isn&amp;rsquo;t listed in BIOS&lt;/td>
&lt;td>&lt;strong>BIOS/UEFI&lt;/strong>&lt;/td>
&lt;td>Hardware — seating, power, slot, or PSU&lt;/td>
&lt;td>Step 2&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Card missing in BIOS but board has integrated graphics giving you a picture&lt;/td>
&lt;td>&lt;strong>BIOS/UEFI&lt;/strong>&lt;/td>
&lt;td>Hardware or a BIOS setting forcing iGPU&lt;/td>
&lt;td>Steps 2 &amp;amp; 4&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>BIOS lists the card, but Windows shows &amp;ldquo;Microsoft Basic Display Adapter&amp;rdquo; or a yellow &lt;strong>Code 43&lt;/strong>&lt;/td>
&lt;td>&lt;strong>Windows / Device Manager&lt;/strong>&lt;/td>
&lt;td>Driver&lt;/td>
&lt;td>Step 3&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Windows sees the card, but games/apps run on the integrated graphics&lt;/td>
&lt;td>&lt;strong>In use (in games)&lt;/strong>&lt;/td>
&lt;td>Configuration — port or hybrid-GPU setting&lt;/td>
&lt;td>Step 5&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>One quick triage that resolves a surprising number of desktop cases before you go further: &lt;strong>make sure your monitor cable is plugged into the graphics card&amp;rsquo;s ports, not the motherboard&amp;rsquo;s.&lt;/strong> If it&amp;rsquo;s on the motherboard, you&amp;rsquo;re looking at the integrated graphics output, and a perfectly good card will look &amp;ldquo;not detected&amp;rdquo; for games and appear absent from the display. The card&amp;rsquo;s ports are the horizontal row lower on the back of the case; the motherboard&amp;rsquo;s are up in the I/O cluster with the USB ports.&lt;/p>
&lt;h2 id="step-2-not-detected-in-bios--the-hardware-branch">Step 2: Not detected in BIOS — the hardware branch&lt;/h2>
&lt;p>If the motherboard itself can&amp;rsquo;t see the card, drivers are irrelevant. Power the PC fully off and unplug it, then work these in order. &lt;strong>A classic case here is fans spinning (or RGB lit) but nothing detecting the card&lt;/strong> — spinning fans only prove standby power reached the board, not that the GPU core initialized. That symptom points straight at power and seating. (The mirror-image case — &lt;strong>fans dead &lt;em>and&lt;/em> no display&lt;/strong> — is the same power/seating branch seen from the other side; if that&amp;rsquo;s you, &lt;a href="https://techfuelhq.com/articles/gpu-fans-not-spinning-2026/">GPU Fans Not Spinning&lt;/a> walks it through, but the re-seating steps below apply either way.)&lt;/p>
&lt;h3 id="1-re-seat-the-card--until-it-clicks">1. Re-seat the card — until it clicks&lt;/h3>
&lt;p>Pull the card out and firmly press it back into the top &lt;strong>PCIe x16&lt;/strong> slot until the slot&amp;rsquo;s &lt;strong>retention clip snaps closed&lt;/strong>. A card that looks seated but isn&amp;rsquo;t clipped in is one of the most common causes, especially in a new build or after moving the PC. Blow out the slot with compressed air if it&amp;rsquo;s dusty.&lt;/p>
&lt;h3 id="2-re-seat-every-pcie-power-cable">2. Re-seat every PCIe power cable&lt;/h3>
&lt;p>Modern cards need supplemental power from the PSU, and a loose or partially inserted connector will let the fans spin while the core stays dark.&lt;/p>
&lt;ul>
&lt;li>Unplug and firmly re-seat &lt;strong>every 8-pin (or 6+2) PCIe power cable&lt;/strong> at &lt;strong>both&lt;/strong> ends — the card and the PSU.&lt;/li>
&lt;li>On an &lt;strong>RTX 40- or 50-series card&lt;/strong>, the single &lt;strong>12VHPWR / 12V-2×6 (16-pin)&lt;/strong> connector must be pushed in completely until it clicks flush. A connector seated even slightly proud is a well-documented cause of the card not powering up (and worse, of it overheating) — this is one of the most common failures on brand-new high-end cards.&lt;/li>
&lt;li>Don&amp;rsquo;t use a single daisy-chained cable to feed a power-hungry card from two connectors; run &lt;strong>separate cables&lt;/strong> from the PSU where the card asks for them.&lt;/li>
&lt;/ul>
&lt;h3 id="3-try-the-other-pcie-slot">3. Try the other PCIe slot&lt;/h3>
&lt;p>If the board has a second x16 slot, move the card there and boot. If it&amp;rsquo;s now detected, the first slot is faulty (or was disabled in BIOS). If nothing changes, the slot isn&amp;rsquo;t the problem.&lt;/p>
&lt;h3 id="4-rule-out-the-power-supply">4. Rule out the power supply&lt;/h3>
&lt;p>A PSU that&amp;rsquo;s too small, old, or failing can make a healthy GPU look dead the instant it draws load. Check the card maker&amp;rsquo;s recommended wattage against your PSU, and if you have a spare known-good unit, swap it in to test. A dying PSU is also a common cause of a machine that powers on, fans spin, and then nothing — the same signature as &lt;a href="https://techfuelhq.com/articles/computer-keeps-freezing-2026/">a PC that keeps restarting or won&amp;rsquo;t stay on&lt;/a>. If the card is detected in a different PC with an adequate PSU, your supply is the suspect.&lt;/p>
&lt;h2 id="step-3-in-bios-but-not-in-windows--the-driver-branch">Step 3: In BIOS but not in Windows — the driver branch&lt;/h2>
&lt;p>If the BIOS lists the card but Windows shows &lt;strong>&amp;ldquo;Microsoft Basic Display Adapter&amp;rdquo;&lt;/strong> in Device Manager, or the GPU appears with a yellow triangle and &lt;strong>Code 43&lt;/strong>, the hardware is fine and the driver is the problem.&lt;/p>
&lt;h3 id="1-do-a-clean-driver-reinstall-with-ddu">1. Do a clean driver reinstall with DDU&lt;/h3>
&lt;p>A half-installed, corrupted, or Windows-Update-stomped driver won&amp;rsquo;t fix itself with a plain reinstall. Use &lt;strong>Display Driver Uninstaller (DDU)&lt;/strong> to wipe it cleanly first:&lt;/p>
&lt;ol>
&lt;li>Download &lt;strong>DDU&lt;/strong> and the latest driver from &lt;strong>&lt;a href="https://www.nvidia.com/download/index.aspx" rel="noopener">NVIDIA&lt;/a>, &lt;a href="https://www.amd.com/en/support" rel="noopener">AMD&lt;/a>, or Intel&lt;/strong> &lt;em>before&lt;/em> you start (you&amp;rsquo;ll have no proper display driver mid-process).&lt;/li>
&lt;li>Boot into &lt;strong>Safe Mode&lt;/strong> (Settings → System → Recovery → Advanced startup → Troubleshoot → Startup Settings → Safe Mode).&lt;/li>
&lt;li>Run &lt;strong>DDU&lt;/strong>, choose your GPU vendor, and select &lt;strong>Clean and restart&lt;/strong>.&lt;/li>
&lt;li>Back in normal Windows, install the driver you downloaded.&lt;/li>
&lt;/ol>
&lt;h3 id="2-stop-windows-from-reinstalling-the-wrong-driver">2. Stop Windows from reinstalling the wrong driver&lt;/h3>
&lt;p>If Windows keeps replacing your good driver with a generic one, the freshly installed driver can start misbehaving again. After a clean install, keep the vendor&amp;rsquo;s app (NVIDIA App / AMD Software) set to manage updates.&lt;/p>
&lt;h3 id="3-quick-sanity-checks">3. Quick sanity checks&lt;/h3>
&lt;ul>
&lt;li>A hung — not missing — driver can sometimes be revived instantly with &lt;strong>Win + Ctrl + Shift + B&lt;/strong>, which restarts the graphics stack. If the screen blinks and the card comes back, you had a driver hang, not a detection failure (see our deeper walkthrough on &lt;a href="https://techfuelhq.com/articles/gpu-driver-crash-fix-2026/">GPU driver crashes&lt;/a>).&lt;/li>
&lt;li>In Device Manager, right-click the card → &lt;strong>Enable device&lt;/strong> if it&amp;rsquo;s disabled, and check &lt;strong>View → Show hidden devices&lt;/strong> for a ghosted duplicate to remove.&lt;/li>
&lt;/ul>
&lt;h2 id="step-4-bios-settings-that-hide-a-working-card">Step 4: BIOS settings that hide a working card&lt;/h2>
&lt;p>Sometimes the card is seated and healthy but a firmware setting keeps it from initializing. Enter BIOS/UEFI and check these:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Primary display / Initiate Graphic Adapter:&lt;/strong> set it to &lt;strong>PCIe / PEG&lt;/strong>, not &lt;strong>IGFX/Auto&lt;/strong>, so the board hands off to the discrete card.&lt;/li>
&lt;li>&lt;strong>Above 4G Decoding&lt;/strong> and &lt;strong>Resizable BAR:&lt;/strong> these help modern cards, but a mismatched combination can block detection on some boards. Try enabling &lt;strong>Above 4G Decoding&lt;/strong> (&lt;a href="https://techfuelhq.com/gaming/resizable-bar-on-or-off-2026/">Resizable BAR&lt;/a> needs it on and &lt;strong>CSM off&lt;/strong>). If a card vanished right after you toggled these, set them back.&lt;/li>
&lt;li>&lt;strong>CSM (Compatibility Support Module):&lt;/strong> newer UEFI GPUs sometimes won&amp;rsquo;t post with CSM in the wrong mode. Try it &lt;strong>disabled&lt;/strong> (full UEFI) for a modern card.&lt;/li>
&lt;li>&lt;strong>Update the BIOS.&lt;/strong> An older motherboard often needs a BIOS update to recognize a &lt;strong>newer-generation GPU&lt;/strong> at all — check the board maker&amp;rsquo;s support page for your exact model. This is a frequent fix when a new card in an older build simply doesn&amp;rsquo;t appear.&lt;/li>
&lt;li>If you&amp;rsquo;ve changed several things, &lt;strong>Load Optimized Defaults&lt;/strong> to get back to a known state, then set only the primary display to PCIe.&lt;/li>
&lt;/ul>
&lt;h2 id="step-5-detected-but-games-use-the-integrated-graphics">Step 5: Detected, but games use the integrated graphics&lt;/h2>
&lt;p>If Windows &lt;em>does&lt;/em> see the card but everything runs slow because it&amp;rsquo;s using the integrated GPU, nothing is broken — it&amp;rsquo;s a selection problem.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Desktop:&lt;/strong> the usual cause is the monitor plugged into the &lt;strong>motherboard&lt;/strong> port. Move it to the &lt;strong>graphics card&lt;/strong>. That single change routes the display through the discrete GPU.&lt;/li>
&lt;li>&lt;strong>Laptop (hybrid graphics):&lt;/strong> Windows runs the power-saving integrated GPU by default and only wakes the discrete card for apps you flag. Open &lt;strong>Settings → System → Display → Graphics&lt;/strong>, add your game or app, and set it to &lt;strong>High performance&lt;/strong>. You can also set the &lt;strong>preferred graphics processor&lt;/strong> per-app in the &lt;strong>NVIDIA Control Panel&lt;/strong> or &lt;strong>AMD Software&lt;/strong>.&lt;/li>
&lt;li>Confirm the discrete GPU isn&amp;rsquo;t &lt;strong>disabled&lt;/strong> in Device Manager or switched off in the BIOS (some laptops expose a &amp;ldquo;Discrete/Hybrid/Auto&amp;rdquo; graphics mode).&lt;/li>
&lt;/ul>
&lt;h2 id="when-its-actually-a-dead-card">When it&amp;rsquo;s actually a dead card&lt;/h2>
&lt;p>If you&amp;rsquo;ve re-seated the card and its power, given it enough wattage, tried both slots, and it still isn&amp;rsquo;t detected — test it in &lt;strong>another PC&lt;/strong>. A card that isn&amp;rsquo;t seen in &lt;em>any&lt;/em> system, with adequate power, is genuinely faulty. At that point:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>If it&amp;rsquo;s under warranty, RMA it.&lt;/strong> That&amp;rsquo;s almost always the right call — home board-level repair costs more than most cards are worth.&lt;/li>
&lt;li>&lt;strong>If it&amp;rsquo;s out of warranty and you need a replacement,&lt;/strong> match it to your PSU and case first; a mid-range &lt;a href="https://www.amazon.com/s?k=graphics+card&amp;tag=techfuelhq-20" rel="nofollow sponsored noopener" target="_blank">current-gen graphics card&lt;/a> is often a better value than repairing an old one. If your testing pointed at the power supply rather than the GPU, a quality &lt;a href="https://www.amazon.com/s?k=atx+power+supply+80+plus+gold&amp;tag=techfuelhq-20" rel="nofollow sponsored noopener" target="_blank">80 Plus Gold ATX power supply&lt;/a> sized above the card&amp;rsquo;s recommendation is the fix — and it protects the new card too.&lt;/li>
&lt;/ul>
&lt;p>Before you spend anything, though, be sure: a failing PSU can frame an innocent GPU, so confirm the card is dead in a second machine first.&lt;/p>
&lt;h2 id="the-quick-version">The quick version&lt;/h2>
&lt;ol>
&lt;li>&lt;strong>Open BIOS and find where the card disappears&lt;/strong> — BIOS, Windows, or only in games.&lt;/li>
&lt;li>&lt;strong>Missing in BIOS →&lt;/strong> re-seat the card until it clicks, re-seat every PCIe power cable (12VHPWR fully home on RTX 40/50), try the other x16 slot, and rule out the PSU. (Fans spinning but no detect = power/seating.)&lt;/li>
&lt;li>&lt;strong>In BIOS but not Windows →&lt;/strong> clean-reinstall the driver with DDU in Safe Mode; watch for Code 43 or &amp;ldquo;Basic Display Adapter.&amp;rdquo;&lt;/li>
&lt;li>&lt;strong>Still hidden →&lt;/strong> set BIOS primary display to PCIe, try Above 4G / Resizable BAR / CSM, and update the motherboard BIOS for a newer card.&lt;/li>
&lt;li>&lt;strong>Detected but games use the iGPU →&lt;/strong> move the monitor to the card&amp;rsquo;s port (desktop) or set the game to the high-performance GPU (laptop).&lt;/li>
&lt;/ol>
&lt;p>Find where it disappears first, and you stop reinstalling drivers for a card the motherboard was never seeing in the first place. The same layer-by-layer logic works for storage too — see &lt;a href="https://techfuelhq.com/articles/ssd-not-showing-up-2026/">SSD not showing up in BIOS or Windows&lt;/a> when a drive goes missing instead of the card.&lt;/p></description></item><item><title>WiFi Keeps Disconnecting? Isolate It First, Then Fix It (2026)</title><link>https://techfuelhq.com/articles/wifi-keeps-disconnecting-2026/</link><pubDate>Mon, 06 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/wifi-keeps-disconnecting-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-07-06 · ~9 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence what gets recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;p>Search &amp;ldquo;WiFi keeps disconnecting&amp;rdquo; and the answer at the top of the page — and most of the ISP pages under it — tell you the same thing: restart your router, move it to the middle of the room, done. Sometimes that&amp;rsquo;s the fix. Often it does nothing, because a Wi-Fi drop has &lt;strong>two completely different homes&lt;/strong>, and the fix for one is useless on the other.&lt;/p>
&lt;p>The single question that decides everything: &lt;strong>when the Wi-Fi drops, does it drop on &lt;em>every&lt;/em> device, or just &lt;em>this&lt;/em> one?&lt;/strong> Answer that first and you&amp;rsquo;ve already cut the problem in half.&lt;/p>
&lt;h2 id="step-1-isolate--one-device-or-the-whole-network">Step 1: Isolate — one device, or the whole network?&lt;/h2>
&lt;p>Before you change a single setting, watch what happens the next time it drops. Look at your phone, another laptop, a smart TV — anything else on the same Wi-Fi.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">What you see when it drops&lt;/th>
&lt;th scope="col">Where the problem lives&lt;/th>
&lt;th scope="col">Where to work&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Only this PC&lt;/strong> drops; phone and other devices stay online&lt;/td>
&lt;td>The device — its Wi-Fi adapter, driver, or power settings&lt;/td>
&lt;td>Step 2 (the Windows fixes)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Every device&lt;/strong> drops at the same moment&lt;/td>
&lt;td>The router, modem, or ISP&lt;/td>
&lt;td>Step 4 (the router fixes)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Drops only in &lt;strong>certain rooms&lt;/strong> / far from the router&lt;/td>
&lt;td>Signal / range&lt;/td>
&lt;td>Step 4, then the hardware section&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Drops at &lt;strong>predictable times&lt;/strong> (evenings, weekends)&lt;/td>
&lt;td>Congestion / interference&lt;/td>
&lt;td>Step 4 (channel + band)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>This one observation is what almost every guide skips — and it&amp;rsquo;s why &amp;ldquo;restart your router&amp;rdquo; so often fails. Restarting the router cannot fix a laptop whose Wi-Fi adapter is being switched off to save battery. If only your PC drops, &lt;strong>leave the router alone&lt;/strong> and go to Step 2.&lt;/p>
&lt;h2 id="step-2-if-its-only-this-pc--the-windows-fixes-in-order">Step 2: If it&amp;rsquo;s only this PC — the Windows fixes, in order&lt;/h2>
&lt;p>These are ordered by how often they actually solve it. Do them top to bottom and stop when the drops stop.&lt;/p>
&lt;h3 id="1-turn-off-adapter-power-saving-the-fix-windows-hides">1. Turn off adapter power saving (the fix Windows hides)&lt;/h3>
&lt;p>This is the number-one cause of a single Windows machine dropping Wi-Fi, and it&amp;rsquo;s buried where nobody looks. Windows has a power-saving feature that quietly switches the Wi-Fi adapter off to save energy — and sometimes it doesn&amp;rsquo;t switch it back on cleanly.&lt;/p>
&lt;ol>
&lt;li>Right-click &lt;strong>Start → Device Manager&lt;/strong>.&lt;/li>
&lt;li>Expand &lt;strong>Network adapters&lt;/strong>, right-click your &lt;strong>Wi-Fi adapter&lt;/strong>, choose &lt;strong>Properties&lt;/strong>.&lt;/li>
&lt;li>Open the &lt;strong>Power Management&lt;/strong> tab.&lt;/li>
&lt;li>&lt;strong>Uncheck&lt;/strong> &amp;ldquo;Allow the computer to turn off this device to save power,&amp;rdquo; and click OK.&lt;/li>
&lt;/ol>
&lt;p>That&amp;rsquo;s it. For a lot of people the drops stop here, in under five minutes. (On a laptop, also open &lt;strong>Settings → System → Power&lt;/strong> and make sure a battery-saver profile isn&amp;rsquo;t re-applying aggressive power limits.)&lt;/p>
&lt;h3 id="2-update--or-roll-back--the-wi-fi-driver">2. Update — or roll back — the Wi-Fi driver&lt;/h3>
&lt;p>A buggy or outdated Wi-Fi driver is the next most common cause, and Windows Update often installs a &lt;em>generic&lt;/em> driver that behaves worse than the one from the hardware maker.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>If the drops are long-running:&lt;/strong> get the latest Wi-Fi driver from your &lt;strong>laptop maker&amp;rsquo;s support page&lt;/strong> (Dell, HP, Lenovo, ASUS…) or the &lt;strong>adapter chipset maker&lt;/strong> (Intel, Realtek, MediaTek, Qualcomm). Install it over the top.&lt;/li>
&lt;li>&lt;strong>If the drops started right after a Windows or driver update:&lt;/strong> roll it back. Device Manager → your adapter → &lt;strong>Properties → Driver → Roll Back Driver&lt;/strong>. A regression in a new driver is a classic trigger.&lt;/li>
&lt;/ul>
&lt;h3 id="3-check-the-wlan-autoconfig-service">3. Check the WLAN AutoConfig service&lt;/h3>
&lt;p>Windows manages your Wi-Fi through a service called &lt;strong>WLAN AutoConfig&lt;/strong>. If it&amp;rsquo;s stopped or set to Manual, connections get flaky.&lt;/p>
&lt;ul>
&lt;li>Press &lt;strong>Windows Key + R&lt;/strong>, type &lt;strong>&lt;code>services.msc&lt;/code>&lt;/strong>, Enter.&lt;/li>
&lt;li>Find &lt;strong>WLAN AutoConfig&lt;/strong>, double-click it, set &lt;strong>Startup type: Automatic&lt;/strong>, and make sure it&amp;rsquo;s &lt;strong>Running&lt;/strong>.&lt;/li>
&lt;/ul>
&lt;h3 id="4-tame-roaming-aggressiveness-only-if-you-have-more-than-one-access-point">4. Tame roaming aggressiveness (only if you have more than one access point)&lt;/h3>
&lt;p>If you use a &lt;strong>mesh system or more than one router/AP&lt;/strong>, your adapter constantly decides whether to jump to a &amp;ldquo;better&amp;rdquo; signal. Set too aggressive, it hops back and forth and drops mid-hop.&lt;/p>
&lt;ul>
&lt;li>Device Manager → your Wi-Fi adapter → &lt;strong>Properties → Advanced&lt;/strong> tab → &lt;strong>Roaming Aggressiveness&lt;/strong> (some adapters call it Roaming Sensitivity).&lt;/li>
&lt;li>The default is usually &lt;strong>Medium (3)&lt;/strong>. If you&amp;rsquo;re getting drops as you move around a multi-AP home, try &lt;strong>Medium-Low&lt;/strong> or &lt;strong>Low&lt;/strong> so the PC stays put longer.&lt;/li>
&lt;li>On a single-router home this setting doesn&amp;rsquo;t matter — skip it.&lt;/li>
&lt;/ul>
&lt;h3 id="5-prefer-5-ghz-over-24-ghz">5. Prefer 5 GHz over 2.4 GHz&lt;/h3>
&lt;p>The 2.4 GHz band reaches farther but is slower and &lt;em>crowded&lt;/em> — it&amp;rsquo;s shared with neighbors, microwaves, Bluetooth, and smart-home gear. Where the signal is strong, 5 GHz is far more stable. In your adapter&amp;rsquo;s &lt;strong>Advanced&lt;/strong> tab you can set &lt;strong>Preferred Band&lt;/strong> to 5 GHz, or simply connect to the network&amp;rsquo;s 5 GHz name if the router broadcasts them separately.&lt;/p>
&lt;h3 id="6-reset-the-network-stack">6. Reset the network stack&lt;/h3>
&lt;p>If it still drops, flush Windows&amp;rsquo; networking state. Open &lt;strong>Command Prompt as administrator&lt;/strong> and run these one at a time, then reboot:&lt;/p>
&lt;pre tabindex="0">&lt;code>netsh winsock reset
netsh int ip reset
ipconfig /release
ipconfig /renew
ipconfig /flushdns
&lt;/code>&lt;/pre>&lt;h3 id="7-turn-off-fast-startup">7. Turn off Fast Startup&lt;/h3>
&lt;p>Fast Startup half-hibernates the PC instead of doing a clean shutdown, and it&amp;rsquo;s a frequent cause of Wi-Fi that won&amp;rsquo;t reconnect after a cold boot. &lt;strong>Control Panel → Power Options → &amp;ldquo;Choose what the power buttons do&amp;rdquo; → &amp;ldquo;Change settings that are currently unavailable&amp;rdquo; → uncheck &amp;ldquo;Turn on fast startup.&amp;rdquo;&lt;/strong>&lt;/p>
&lt;h2 id="step-3-read-the-report-windows-already-keeps">Step 3: Read the report Windows already keeps&lt;/h2>
&lt;p>Here&amp;rsquo;s the step that turns guessing into knowing — and, like reading Event Viewer for a &lt;a href="https://techfuelhq.com/articles/computer-keeps-freezing-2026/">freezing PC&lt;/a>, it&amp;rsquo;s the part almost every guide leaves out. Windows can generate a full &lt;strong>WLAN report&lt;/strong>: a timeline of every connect, disconnect, and the &lt;em>reason&lt;/em> for each.&lt;/p>
&lt;ol>
&lt;li>Open &lt;strong>Command Prompt as administrator&lt;/strong>.&lt;/li>
&lt;li>Run &lt;strong>&lt;code>netsh wlan show wlanreport&lt;/code>&lt;/strong>.&lt;/li>
&lt;li>It creates an HTML report — the command prints the path (usually &lt;code>C:\ProgramData\Microsoft\Windows\WlanReport\wlan-report-latest.html&lt;/code>). Open it in a browser.&lt;/li>
&lt;/ol>
&lt;p>The report shows a graph of your connection sessions with red markers on the disconnects, and for each one it lists a &lt;strong>reason code&lt;/strong> — whether you &lt;em>roamed&lt;/em> to another AP, whether the &lt;em>adapter&lt;/em> dropped the link, or whether you simply lost the IP/DNS lease. That distinction tells you which of the fixes above to trust:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&amp;ldquo;Roamed&amp;rdquo; / lots of session switches&lt;/strong> → it&amp;rsquo;s the roaming/signal problem (Step 2.4 and 2.5, or a range issue).&lt;/li>
&lt;li>&lt;strong>Adapter reset / driver events&lt;/strong> → it&amp;rsquo;s power management or the driver (Step 2.1–2.2).&lt;/li>
&lt;li>&lt;strong>DHCP/DNS failures&lt;/strong> → it&amp;rsquo;s the router handing out addresses, not the PC (Step 4).&lt;/li>
&lt;/ul>
&lt;p>You can also run &lt;strong>&lt;code>netsh wlan show interfaces&lt;/code>&lt;/strong> right before and after a drop to watch the signal strength and state change in real time.&lt;/p>
&lt;h2 id="step-4-if-every-device-drops--work-the-router">Step 4: If &lt;em>every&lt;/em> device drops — work the router&lt;/h2>
&lt;p>When the whole house loses Wi-Fi at once, no amount of PC tweaking will help. Work the network equipment instead:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Power-cycle properly.&lt;/strong> Unplug the &lt;strong>modem and router&lt;/strong>, wait 30 seconds, plug the &lt;strong>modem back first&lt;/strong>, let it fully sync, then the router. This clears the most common transient faults.&lt;/li>
&lt;li>&lt;strong>Fix channel congestion.&lt;/strong> In a dense area, several neighbors on the same 2.4 GHz channel will cause mutual drops. Log into your router and set the 2.4 GHz channel to &lt;strong>1, 6, or 11&lt;/strong> (the only non-overlapping ones), and enable 5 GHz for devices that support it.&lt;/li>
&lt;li>&lt;strong>Update the router firmware.&lt;/strong> Years-old firmware is a real source of instability; check the admin page for an update.&lt;/li>
&lt;li>&lt;strong>Check for overheating and placement.&lt;/strong> A router baking on top of a receiver, or crammed behind a TV, will drop connections when it gets hot. Give it air and a central, open spot away from thick walls, metal, and water (fish tanks, radiators).&lt;/li>
&lt;li>&lt;strong>Snug the cables.&lt;/strong> A slightly loose coax or WAN cable causes intermittent whole-network drops that look exactly like a Wi-Fi problem.&lt;/li>
&lt;/ul>
&lt;p>If every device still drops after all of that, the problem is likely &lt;strong>upstream&lt;/strong> — the modem, the line, or the ISP. Note the times it happened and call your provider with specifics.&lt;/p>
&lt;h2 id="when-the-real-fix-is-new-hardware">When the real fix is new hardware&lt;/h2>
&lt;p>Sometimes the adapter or router is simply old and struggling. A few honest upgrade paths once you&amp;rsquo;ve ruled out settings:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>A dead or ancient laptop/desktop adapter:&lt;/strong> a plug-in &lt;a href="https://www.amazon.com/s?k=usb+wifi+6+adapter&amp;tag=techfuelhq-20" rel="nofollow sponsored noopener" target="_blank">USB Wi-Fi 6 adapter&lt;/a> is the fastest way to bypass a flaky built-in card without opening anything. For a desktop with an open slot, a &lt;a href="https://www.amazon.com/s?k=pcie+wifi+6e+card&amp;tag=techfuelhq-20" rel="nofollow sponsored noopener" target="_blank">PCIe Wi-Fi 6E card&lt;/a> with real antennas gives a far stronger, more stable link than a tiny dongle.&lt;/li>
&lt;li>&lt;strong>Drops that are really a range problem&lt;/strong> (only in far rooms): a single router can&amp;rsquo;t cover every home. A mesh system fixes dead zones properly — and if you&amp;rsquo;re weighing whether the newest standard is worth it, our &lt;a href="https://techfuelhq.com/networking/wifi-7-homelab-home-network-2026/">Wi-Fi 7 for the home network guide&lt;/a> breaks down when it actually helps and when Wi-Fi 6E is the smarter buy.&lt;/li>
&lt;/ul>
&lt;h2 id="the-quick-version">The quick version&lt;/h2>
&lt;ol>
&lt;li>&lt;strong>Watch a drop.&lt;/strong> Only this PC, or every device?&lt;/li>
&lt;li>&lt;strong>Only this PC →&lt;/strong> turn off adapter power saving, update/roll back the driver, check WLAN AutoConfig, tame roaming, prefer 5 GHz, reset the network stack, disable Fast Startup.&lt;/li>
&lt;li>&lt;strong>Read &lt;code>netsh wlan show wlanreport&lt;/code>&lt;/strong> to see &lt;em>why&lt;/em> it dropped, and confirm which fix to trust.&lt;/li>
&lt;li>&lt;strong>Every device →&lt;/strong> power-cycle the modem+router, fix the channel, update firmware, cool and reposition the router, check cables — then call the ISP if it persists.&lt;/li>
&lt;/ol>
&lt;p>Isolate first, and you never waste an hour restarting a router for a problem that was living inside your PC the whole time.&lt;/p></description></item><item><title>Computer Keeps Freezing? Diagnose It by Freeze Type (2026)</title><link>https://techfuelhq.com/articles/computer-keeps-freezing-2026/</link><pubDate>Sun, 05 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/computer-keeps-freezing-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-07-05 · ~9 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence what gets recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;p>Most freezing guides — and the AI answer at the top of the results — hand you the same generic list: run &lt;code>sfc /scannow&lt;/code>, clear the dust, update Windows. Sometimes that works. Often it doesn&amp;rsquo;t, because a computer freezes for very different reasons, and the fix for one type does nothing for another. The move that actually saves time is to &lt;strong>sort the freeze first, then read what Windows already logged about it&lt;/strong> — and only then fix the specific thing.&lt;/p>
&lt;h2 id="step-1-sort-the-freeze-type-this-decides-everything">Step 1: Sort the freeze type (this decides everything)&lt;/h2>
&lt;p>Before you change a single setting, figure out which of these you have. The type points straight at the likely cause:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">What the freeze looks like&lt;/th>
&lt;th scope="col">Usually means&lt;/th>
&lt;th scope="col">Where to look&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Hard freeze&lt;/strong> — total lock, mouse won&amp;rsquo;t move, sound loops, only a power-button hold recovers it&lt;/td>
&lt;td>Hardware&lt;/td>
&lt;td>RAM, overheating, failing drive, PSU&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Soft hang&lt;/strong> — mouse still moves, apps go &amp;ldquo;Not responding,&amp;rdquo; recovers after several seconds&lt;/td>
&lt;td>Software / resource&lt;/td>
&lt;td>100% disk, low RAM, a driver&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Only under load / while gaming&lt;/strong>&lt;/td>
&lt;td>Heat or GPU&lt;/td>
&lt;td>Temps, GPU driver, PSU&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Only on idle, or right after waking from sleep&lt;/strong>&lt;/td>
&lt;td>Power / driver states&lt;/td>
&lt;td>Fast Startup, power plan, driver power management&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>If you&amp;rsquo;re not sure which you have, watch for one tell: &lt;strong>does the mouse cursor still move during the freeze?&lt;/strong> A cursor that moves while everything else is stuck is a soft hang (software). A cursor frozen solid with everything else is a hard freeze (hardware). That single observation rules out half the causes.&lt;/p>
&lt;p>Here&amp;rsquo;s the whole method on one grid. Find your freeze type on the left, and the bright cells are where to start — the dim ones are worth a look only if the bright ones come up clean. This is why sorting the type first saves hours: it crosses out most of the columns before you touch a screwdriver.&lt;/p>
&lt;!-- ========== SIGNATURE VISUAL A: THE FREEZE-TYPE x CAUSE PROBABILITY GRID ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0e1116;border:1px solid rgba(255,255,255,0.07);border-radius:10px;padding:26px 22px 18px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
&lt;div style="margin-bottom:16px;">
&lt;div style="font-size:19px;font-weight:700;color:#eceff4;letter-spacing:-0.3px;">Which freeze points at which cause&lt;/div>
&lt;div style="font-size:12.5px;color:#8b93a1;margin-top:5px;line-height:1.5;">A likelihood map, not a percentage chart &amp;mdash; the shading is the diagnostic odds from the freeze pattern, read down from Steps 3&amp;ndash;6. Start on the bright cells in your row.&lt;/div>
&lt;/div>
&lt;div style="overflow-x:auto;-webkit-overflow-scrolling:touch;">
&lt;table style="border-collapse:separate;border-spacing:4px;min-width:600px;width:100%;font-size:11px;">
&lt;thead>&lt;tr>
&lt;th style="text-align:left;padding:6px 8px;color:#8b93a1;font-weight:600;font-size:10.5px;min-width:150px;">FREEZE TYPE&lt;/th>
&lt;th style="padding:6px 4px;color:#b7c0cf;font-weight:700;font-size:10px;letter-spacing:0.3px;">RAM&lt;/th>
&lt;th style="padding:6px 4px;color:#b7c0cf;font-weight:700;font-size:10px;letter-spacing:0.3px;">HEAT&lt;/th>
&lt;th style="padding:6px 4px;color:#b7c0cf;font-weight:700;font-size:10px;letter-spacing:0.3px;">DRIVE&lt;/th>
&lt;th style="padding:6px 4px;color:#b7c0cf;font-weight:700;font-size:10px;letter-spacing:0.3px;">PSU&lt;/th>
&lt;th style="padding:6px 4px;color:#b7c0cf;font-weight:700;font-size:10px;letter-spacing:0.3px;">RESOURCE&lt;/th>
&lt;th style="padding:6px 4px;color:#b7c0cf;font-weight:700;font-size:10px;letter-spacing:0.3px;">GPU&amp;nbsp;DRIVER&lt;/th>
&lt;th style="padding:6px 4px;color:#b7c0cf;font-weight:700;font-size:10px;letter-spacing:0.3px;">POWER&amp;nbsp;STATE&lt;/th>
&lt;/tr>&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="padding:9px 8px;background:rgba(255,255,255,0.03);border-radius:6px;">&lt;div style="color:#eceff4;font-weight:700;font-size:12px;">Hard freeze&lt;/div>&lt;div style="color:#7a828f;font-size:9.5px;margin-top:1px;">mouse dead &amp;middot; Steps 2&amp;ndash;3&lt;/div>&lt;/td>
&lt;td style="text-align:center;background:#c8ff00;color:#0e1116;font-weight:800;border-radius:5px;font-size:9.5px;letter-spacing:0.5px;">START&lt;/td>
&lt;td style="text-align:center;background:rgba(232,176,74,0.24);color:#f0c56a;font-weight:700;border-radius:5px;font-size:9px;">likely&lt;/td>
&lt;td style="text-align:center;background:rgba(232,176,74,0.24);color:#f0c56a;font-weight:700;border-radius:5px;font-size:9px;">likely&lt;/td>
&lt;td style="text-align:center;background:rgba(232,176,74,0.24);color:#f0c56a;font-weight:700;border-radius:5px;font-size:9px;">likely&lt;/td>
&lt;td style="text-align:center;color:#3f454e;font-size:12px;">&amp;middot;&lt;/td>
&lt;td style="text-align:center;background:rgba(255,255,255,0.05);color:#6d7684;border-radius:5px;font-size:9px;">maybe&lt;/td>
&lt;td style="text-align:center;color:#3f454e;font-size:12px;">&amp;middot;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="padding:9px 8px;background:rgba(255,255,255,0.03);border-radius:6px;">&lt;div style="color:#eceff4;font-weight:700;font-size:12px;">Soft hang&lt;/div>&lt;div style="color:#7a828f;font-size:9.5px;margin-top:1px;">cursor moves &amp;middot; Step 4&lt;/div>&lt;/td>
&lt;td style="text-align:center;background:rgba(255,255,255,0.05);color:#6d7684;border-radius:5px;font-size:9px;">maybe&lt;/td>
&lt;td style="text-align:center;color:#3f454e;font-size:12px;">&amp;middot;&lt;/td>
&lt;td style="text-align:center;background:rgba(232,176,74,0.24);color:#f0c56a;font-weight:700;border-radius:5px;font-size:9px;">likely&lt;/td>
&lt;td style="text-align:center;color:#3f454e;font-size:12px;">&amp;middot;&lt;/td>
&lt;td style="text-align:center;background:#c8ff00;color:#0e1116;font-weight:800;border-radius:5px;font-size:9.5px;letter-spacing:0.5px;">START&lt;/td>
&lt;td style="text-align:center;color:#3f454e;font-size:12px;">&amp;middot;&lt;/td>
&lt;td style="text-align:center;color:#3f454e;font-size:12px;">&amp;middot;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="padding:9px 8px;background:rgba(255,255,255,0.03);border-radius:6px;">&lt;div style="color:#eceff4;font-weight:700;font-size:12px;">Only under load / gaming&lt;/div>&lt;div style="color:#7a828f;font-size:9.5px;margin-top:1px;">Step 5&lt;/div>&lt;/td>
&lt;td style="text-align:center;background:rgba(255,255,255,0.05);color:#6d7684;border-radius:5px;font-size:9px;">maybe&lt;/td>
&lt;td style="text-align:center;background:#c8ff00;color:#0e1116;font-weight:800;border-radius:5px;font-size:9.5px;letter-spacing:0.5px;">START&lt;/td>
&lt;td style="text-align:center;color:#3f454e;font-size:12px;">&amp;middot;&lt;/td>
&lt;td style="text-align:center;background:rgba(232,176,74,0.24);color:#f0c56a;font-weight:700;border-radius:5px;font-size:9px;">likely&lt;/td>
&lt;td style="text-align:center;color:#3f454e;font-size:12px;">&amp;middot;&lt;/td>
&lt;td style="text-align:center;background:#c8ff00;color:#0e1116;font-weight:800;border-radius:5px;font-size:9.5px;letter-spacing:0.5px;">START&lt;/td>
&lt;td style="text-align:center;color:#3f454e;font-size:12px;">&amp;middot;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="padding:9px 8px;background:rgba(255,255,255,0.03);border-radius:6px;">&lt;div style="color:#eceff4;font-weight:700;font-size:12px;">Only idle / after sleep&lt;/div>&lt;div style="color:#7a828f;font-size:9.5px;margin-top:1px;">Step 6&lt;/div>&lt;/td>
&lt;td style="text-align:center;color:#3f454e;font-size:12px;">&amp;middot;&lt;/td>
&lt;td style="text-align:center;color:#3f454e;font-size:12px;">&amp;middot;&lt;/td>
&lt;td style="text-align:center;color:#3f454e;font-size:12px;">&amp;middot;&lt;/td>
&lt;td style="text-align:center;background:rgba(255,255,255,0.05);color:#6d7684;border-radius:5px;font-size:9px;">maybe&lt;/td>
&lt;td style="text-align:center;color:#3f454e;font-size:12px;">&amp;middot;&lt;/td>
&lt;td style="text-align:center;background:rgba(255,255,255,0.05);color:#6d7684;border-radius:5px;font-size:9px;">maybe&lt;/td>
&lt;td style="text-align:center;background:#c8ff00;color:#0e1116;font-weight:800;border-radius:5px;font-size:9.5px;letter-spacing:0.5px;">START&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;div style="margin-top:14px;display:flex;flex-wrap:wrap;gap:14px;align-items:center;font-size:10px;color:#8b93a1;">
&lt;span style="display:inline-flex;align-items:center;gap:5px;">&lt;span style="width:11px;height:11px;background:#c8ff00;border-radius:3px;display:inline-block;">&lt;/span>start here&lt;/span>
&lt;span style="display:inline-flex;align-items:center;gap:5px;">&lt;span style="width:11px;height:11px;background:rgba(232,176,74,0.5);border-radius:3px;display:inline-block;">&lt;/span>likely, if the bright cell is clean&lt;/span>
&lt;span style="display:inline-flex;align-items:center;gap:5px;">&lt;span style="width:11px;height:11px;background:rgba(255,255,255,0.12);border-radius:3px;display:inline-block;">&lt;/span>possible, check last&lt;/span>
&lt;span style="display:inline-flex;align-items:center;gap:5px;">&lt;span style="color:#3f454e;">&amp;middot;&lt;/span> unlikely for this pattern&lt;/span>
&lt;span style="margin-left:auto;color:#5a626e;">RESOURCE = disk pinned at 100% or low free RAM &amp;middot; techfuelhq.com&lt;/span>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="step-2-read-what-windows-logged-the-step-everyone-skips">Step 2: Read what Windows logged (the step everyone skips)&lt;/h2>
&lt;p>Windows keeps a record of crashes and freezes. Reading it is faster than trying random fixes, and it&amp;rsquo;s the part almost every guide leaves out.&lt;/p>
&lt;p>Start with the friendly view:&lt;/p>
&lt;ol>
&lt;li>Press &lt;strong>Windows Key + R&lt;/strong>, type &lt;strong>&lt;code>perfmon /rel&lt;/code>&lt;/strong>, and press Enter to open &lt;strong>Reliability Monitor&lt;/strong>.&lt;/li>
&lt;li>You&amp;rsquo;ll see a timeline with red X marks on the days things went wrong. Click the day of a freeze to read a plain-English summary of what failed.&lt;/li>
&lt;/ol>
&lt;p>Then get the detail:&lt;/p>
&lt;ol>
&lt;li>Press &lt;strong>Windows Key + R&lt;/strong>, type &lt;strong>&lt;code>eventvwr.msc&lt;/code>&lt;/strong>, and press Enter.&lt;/li>
&lt;li>Go to &lt;strong>Windows Logs → System&lt;/strong>, and look at the events stamped at the &lt;strong>time of your freeze&lt;/strong>.&lt;/li>
&lt;/ol>
&lt;p>Three events tell you most of what you need:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Kernel-Power, Event ID 41&lt;/strong> — Windows lost power or was hard-reset without a clean shutdown. This is the fingerprint a hard freeze leaves when you had to hold the power button. It&amp;rsquo;s a &lt;em>symptom&lt;/em>, not the cause — but combined with &amp;ldquo;it only happens under load,&amp;rdquo; it points at &lt;strong>power or heat&lt;/strong>.&lt;/li>
&lt;li>&lt;strong>WHEA-Logger (Event ID 17, 18, or 19)&lt;/strong> — the hardware itself reported an error. This is a strong signal of &lt;strong>CPU, RAM, or memory-controller instability&lt;/strong> (often an unstable memory overclock/EXPO profile, or a genuinely failing part).&lt;/li>
&lt;li>&lt;strong>&amp;ldquo;Display driver stopped responding and has recovered&amp;rdquo; / LiveKernelEvent 141&lt;/strong> — the &lt;strong>graphics driver&lt;/strong> timed out and Windows reset it (a &amp;ldquo;TDR&amp;rdquo; event). Your fix lives in Step 5.&lt;/li>
&lt;/ul>
&lt;p>Match the event to the step below. If Event Viewer is empty at the freeze time, that itself is a clue: a freeze that logs &lt;em>nothing&lt;/em> is usually a dead-hard hardware or power cut.&lt;/p>
&lt;p>Here&amp;rsquo;s how to read the three fingerprints at a glance — the event name is the label Windows writes; the verdict is what it actually means; the arrow is where to go next.&lt;/p>
&lt;!-- ========== SIGNATURE VISUAL B: THE EVENT VIEWER FINGERPRINT DECODER ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0e1116;border:1px solid rgba(255,255,255,0.07);border-radius:10px;padding:26px 22px 20px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
&lt;div style="margin-bottom:18px;">
&lt;div style="font-size:19px;font-weight:700;color:#eceff4;letter-spacing:-0.3px;">Decode the log line&lt;/div>
&lt;div style="font-size:12.5px;color:#8b93a1;margin-top:5px;line-height:1.5;">Three event signatures cover most freezes. Find the one stamped at your freeze time in &lt;span style="font-family:ui-monospace,monospace;color:#b7c0cf;">System&lt;/span> &amp;mdash; each is a different culprit and a different fix.&lt;/div>
&lt;/div>
&lt;div style="display:flex;flex-direction:column;gap:10px;">
&lt;div style="background:rgba(224,101,58,0.06);border:1px solid rgba(224,101,58,0.28);border-left:3px solid #e0653a;border-radius:8px;padding:13px 15px;">
&lt;div style="font-family:ui-monospace,monospace;font-size:11.5px;color:#f0a070;font-weight:700;">Kernel-Power &amp;middot; &lt;span style="color:#f5c6ac;">Event ID 41&lt;/span>&lt;/div>
&lt;div style="font-size:12px;color:#cdd3dc;margin-top:7px;line-height:1.55;">The PC lost power or was hard-reset without a clean shutdown &amp;mdash; the fingerprint a hard freeze leaves after a power-button hold. A &lt;em>symptom&lt;/em>, not the cause.&lt;/div>
&lt;div style="font-size:11px;color:#8b93a1;margin-top:8px;">Paired with &amp;ldquo;only under load&amp;rdquo; &amp;rarr; &lt;strong style="color:#e0653a;">power or heat &amp;middot; Step 3&lt;/strong>&lt;/div>
&lt;/div>
&lt;div style="background:rgba(232,176,74,0.06);border:1px solid rgba(232,176,74,0.3);border-left:3px solid #e8b04a;border-radius:8px;padding:13px 15px;">
&lt;div style="font-family:ui-monospace,monospace;font-size:11.5px;color:#f0c56a;font-weight:700;">WHEA-Logger &amp;middot; &lt;span style="color:#f3d59a;">Event ID 17 / 18 / 19&lt;/span>&lt;/div>
&lt;div style="font-size:12px;color:#cdd3dc;margin-top:7px;line-height:1.55;">The hardware itself reported an error. A strong signal of CPU, RAM, or memory-controller instability &amp;mdash; very often an unstable memory overclock (EXPO/XMP), not a dead part.&lt;/div>
&lt;div style="font-size:11px;color:#8b93a1;margin-top:8px;">&amp;rarr; &lt;strong style="color:#e8b04a;">test RAM at JEDEC &amp;middot; Step 3&lt;/strong>&lt;/div>
&lt;/div>
&lt;div style="background:rgba(90,150,224,0.06);border:1px solid rgba(90,150,224,0.3);border-left:3px solid #5a96e0;border-radius:8px;padding:13px 15px;">
&lt;div style="font-family:ui-monospace,monospace;font-size:11.5px;color:#7fb0ee;font-weight:700;">Display driver stopped responding &amp;middot; &lt;span style="color:#a9caf3;">LiveKernelEvent 141&lt;/span>&lt;/div>
&lt;div style="font-size:12px;color:#cdd3dc;margin-top:7px;line-height:1.55;">The graphics driver timed out and Windows reset it &amp;mdash; a &amp;ldquo;TDR&amp;rdquo; event. The GPU driver, or heat/power showing up through it.&lt;/div>
&lt;div style="font-size:11px;color:#8b93a1;margin-top:8px;">&amp;rarr; &lt;strong style="color:#5a96e0;">clean-reinstall the GPU driver &amp;middot; Step 5&lt;/strong>&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:15px;padding-top:12px;border-top:1px solid rgba(255,255,255,0.06);font-size:10.5px;color:#6d7684;display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;">
&lt;span>&lt;strong style="color:#9aa2b0;">Nothing logged at the freeze time?&lt;/strong> A freeze that leaves no trace is usually a dead-hard power cut or hardware fault &amp;mdash; go straight to Step 3.&lt;/span>
&lt;span style="color:#5a626e;">techfuelhq.com&lt;/span>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="step-3-hard-freezes--check-the-hardware-in-order">Step 3: Hard freezes → check the hardware, in order&lt;/h2>
&lt;p>If it&amp;rsquo;s a total lock (and especially if you saw Kernel-Power 41 or WHEA-Logger), work these in order:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>RAM.&lt;/strong> Faulty or unstable memory is the classic cause of sudden hard freezes. Run the built-in &lt;strong>Windows Memory Diagnostic&lt;/strong> (Windows Key + R → &lt;code>mdsched.exe&lt;/code> → &amp;ldquo;Restart now and check for problems&amp;rdquo;), or &lt;strong>MemTest86&lt;/strong> from a USB stick for a thorough overnight pass. If you run an &lt;strong>EXPO/XMP&lt;/strong> profile, set memory back to its default JEDEC speed and test — an overclock the kit or controller can&amp;rsquo;t hold freezes a system that&amp;rsquo;s otherwise healthy. The same bad or unstable memory often blue-screens instead of hanging, most often as &lt;a href="https://techfuelhq.com/articles/page-fault-in-nonpaged-area-2026/">PAGE_FAULT_IN_NONPAGED_AREA&lt;/a>, which is worked in the same RAM-first order.&lt;/li>
&lt;li>&lt;strong>Heat.&lt;/strong> A CPU or GPU parked at its thermal limit can stall the whole system. Check load temps with HWiNFO; our &lt;a href="https://techfuelhq.com/articles/safe-cpu-temp-2026/">safe CPU temperature guide&lt;/a> covers what&amp;rsquo;s actually too hot (Ryzen to ~95 °C, X3D ~89 °C, Intel ~100 °C). Clear dust from fans and heatsinks with a &lt;a href="https://www.amazon.com/s?k=compressed+air+duster+can&amp;tag=techfuelhq-20" rel="nofollow sponsored noopener" target="_blank">can of compressed air&lt;/a>, and if the paste is a few years old, a fresh tube of &lt;a href="https://www.amazon.com/dp/B07L9BDY3T?tag=techfuelhq-20" rel="nofollow sponsored noopener" target="_blank">Arctic MX-4&lt;/a> often drops load temps several degrees.&lt;/li>
&lt;li>&lt;strong>Storage.&lt;/strong> A failing or nearly-full system drive causes hangs and hard freezes. Check the drive&amp;rsquo;s &lt;strong>SMART health&lt;/strong> with CrystalDiskInfo (anything but &amp;ldquo;Good&amp;rdquo; is your answer), and make sure the system drive has at least &lt;strong>15–20 GB free&lt;/strong> — Windows freezes when it can&amp;rsquo;t page or write.&lt;/li>
&lt;li>&lt;strong>Power.&lt;/strong> If freezes are load-related and log nothing, suspect the PSU. Reseat every power cable (including all pins on a &lt;strong>12VHPWR/12V-2×6&lt;/strong> GPU connector), and if a hungry GPU sits on an old supply, that&amp;rsquo;s a common cause. This overlaps heavily with reboots — if it sometimes &lt;em>restarts&lt;/em> instead of freezing, work our &lt;a href="https://techfuelhq.com/articles/pc-keeps-restarting-2026/">PC keeps restarting guide&lt;/a> alongside this one.&lt;/li>
&lt;/ul>
&lt;h2 id="step-4-soft-hangs--free-the-stuck-resource">Step 4: Soft hangs → free the stuck resource&lt;/h2>
&lt;p>If the cursor still moves and apps go &amp;ldquo;Not responding,&amp;rdquo; you&amp;rsquo;re waiting on a resource. Open &lt;strong>Task Manager&lt;/strong> (Ctrl+Shift+Esc) &lt;em>before&lt;/em> the next hang, or right after, and watch the columns:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Disk pinned at 100%.&lt;/strong> The usual culprits are &lt;strong>SysMain&lt;/strong> (SuperFetch) and &lt;strong>Windows Search&lt;/strong> indexing thrashing the drive — common on systems with a hard drive or an aging SSD. Open &lt;code>services.msc&lt;/code>, find &lt;strong>SysMain&lt;/strong>, set Startup type to &lt;strong>Disabled&lt;/strong>, and stop it; do the same for &lt;strong>Windows Search&lt;/strong> as a test. If the hangs stop, that was it.&lt;/li>
&lt;li>&lt;strong>Memory near 100%.&lt;/strong> Too little free RAM for what&amp;rsquo;s open forces constant paging and stutter. Close heavy background apps and browser tabs; if it&amp;rsquo;s chronic, add memory. On a 8 GB machine in 2026, a browser plus a game will do this on its own. (If the game &lt;em>hitches&lt;/em> rather than locking up the whole PC, that&amp;rsquo;s frame-pacing, not a freeze — see &lt;a href="https://techfuelhq.com/articles/pc-stuttering-in-games-2026/">why your PC stutters in games&lt;/a>.)&lt;/li>
&lt;li>&lt;strong>A specific process spiking.&lt;/strong> Sort by CPU or Disk to catch a misbehaving background app or a stuck update. A stuck Windows Update or a runaway antivirus scan freezes weak systems until it finishes.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>A special case — brief freezes &lt;em>every few seconds&lt;/em>, in a rhythm.&lt;/strong> If the machine hitches for a second or two on a repeating beat (the mouse catches up, then stalls again), that pattern points somewhere specific, not at general resource starvation. Check two things in order. First, the &lt;strong>drive&lt;/strong>: a disk with failing or pending sectors stalls the whole system while it retries a read, and the stalls come in waves — run CrystalDiskInfo (look for a &amp;ldquo;Caution&amp;rdquo; SMART status or reallocated/pending sector counts) and, on a mechanical drive, listen for repeated clicking. Second, &lt;strong>driver latency (DPC)&lt;/strong>: a badly-behaved driver — most often network (Wi-Fi/Ethernet), audio, or a Bluetooth/USB device — can hog the CPU in short bursts and freeze the desktop periodically even when Task Manager looks idle. The free tool &lt;strong>LatencyMon&lt;/strong> names the offending driver directly; a network or audio driver at the top of its list is your lead. Update or roll back that specific driver rather than reinstalling Windows.&lt;/p>
&lt;h2 id="step-5-load--gaming-freezes--the-graphics-driver">Step 5: Load / gaming freezes → the graphics driver&lt;/h2>
&lt;p>If it only freezes under a game or GPU load — or Event Viewer showed a &amp;ldquo;display driver stopped responding&amp;rdquo; / TDR event — the graphics driver is the prime suspect:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Clean-reinstall the GPU driver.&lt;/strong> A plain reinstall often isn&amp;rsquo;t enough; do a full clean removal with DDU and a fresh driver. The complete process is in our &lt;a href="https://techfuelhq.com/articles/gpu-driver-crash-fix-2026/">GPU driver crash fix guide&lt;/a>.&lt;/li>
&lt;li>&lt;strong>Confirm it&amp;rsquo;s not heat or power in disguise.&lt;/strong> Load freezes are also how a marginal PSU or an overheating GPU shows up — check GPU temps and hotspot in HWiNFO while you play. If temps are fine and a clean driver doesn&amp;rsquo;t fix it, treat it as power (Step 3).&lt;/li>
&lt;/ul>
&lt;h2 id="step-6-idle-or-after-sleep-freezes--power-states">Step 6: Idle or after-sleep freezes → power states&lt;/h2>
&lt;p>A PC that&amp;rsquo;s fine while you use it but freezes on idle, or locks up right after waking from sleep, is almost always a power-state or driver-power problem:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Turn off Fast Startup.&lt;/strong> Control Panel → &lt;strong>Power Options&lt;/strong> → &amp;ldquo;Choose what the power buttons do&amp;rdquo; → &amp;ldquo;Change settings that are currently unavailable&amp;rdquo; → &lt;strong>uncheck &amp;ldquo;Turn on fast startup.&amp;rdquo;&lt;/strong> Fast Startup half-hibernates the PC and is a frequent cause of post-wake freezes and cold-boot lockups.&lt;/li>
&lt;li>&lt;strong>Set the power plan to Balanced or High performance&lt;/strong> (not a third-party or aggressive custom plan), and in the plan&amp;rsquo;s advanced settings, turn &lt;strong>PCI Express Link State Power Management&lt;/strong> to Off and disable &lt;strong>USB selective suspend&lt;/strong> if a USB device wakes the system badly.&lt;/li>
&lt;li>&lt;strong>Update chipset and storage drivers&lt;/strong> from your motherboard maker — idle freezes often trace to a power-management bug in an old chipset or NVMe driver.&lt;/li>
&lt;/ol>
&lt;h2 id="step-7-the-basics-worth-doing-anyway">Step 7: The basics worth doing anyway&lt;/h2>
&lt;p>Regardless of type, these are cheap and occasionally the whole fix:&lt;/p>
&lt;ul>
&lt;li>Run &lt;strong>&lt;code>sfc /scannow&lt;/code>&lt;/strong>, then &lt;strong>&lt;code>DISM /Online /Cleanup-Image /RestoreHealth&lt;/code>&lt;/strong>, to repair corrupt system files.&lt;/li>
&lt;li>Install pending &lt;strong>Windows updates&lt;/strong> (and optional driver/firmware updates), then reboot.&lt;/li>
&lt;li>&lt;strong>Scan for malware&lt;/strong> — a hidden miner or bad process freezes a system under its own load.&lt;/li>
&lt;li>Keep &lt;strong>15–20 GB free&lt;/strong> on the system drive.&lt;/li>
&lt;/ul>
&lt;h2 id="the-fix-order-in-one-list">The fix order, in one list&lt;/h2>
&lt;ol>
&lt;li>&lt;strong>Sort the freeze type&lt;/strong> — hard lock (hardware) vs soft hang (software) vs load vs idle. Cursor still moving = soft.&lt;/li>
&lt;li>&lt;strong>Read the logs&lt;/strong> — &lt;code>perfmon /rel&lt;/code> then Event Viewer → System. Kernel-Power 41 (power/heat), WHEA-Logger (CPU/RAM), display-driver-stopped (GPU).&lt;/li>
&lt;li>&lt;strong>Hard freeze&lt;/strong> → RAM (mdsched/MemTest86, test at JEDEC), temps, drive SMART + free space, PSU cables.&lt;/li>
&lt;li>&lt;strong>Soft hang&lt;/strong> → Task Manager: 100% disk (disable SysMain/Search), low RAM (close/add), a spiking process.&lt;/li>
&lt;li>&lt;strong>Load/gaming&lt;/strong> → clean-reinstall the GPU driver (DDU), recheck GPU temps/power.&lt;/li>
&lt;li>&lt;strong>Idle/after sleep&lt;/strong> → turn off Fast Startup, fix the power plan, update chipset/NVMe drivers.&lt;/li>
&lt;li>&lt;strong>Basics&lt;/strong> → sfc/DISM, updates, malware scan, free space.&lt;/li>
&lt;/ol>
&lt;p>Work it in that order and the freeze type plus the logged event usually points you straight to the right step — no guessing, no parts-cannon.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>The diagnostics and fixes use Microsoft&amp;rsquo;s built-in tools — Reliability Monitor (&lt;code>perfmon /rel&lt;/code>), Event Viewer (&lt;code>eventvwr.msc&lt;/code>), Windows Memory Diagnostic (&lt;code>mdsched.exe&lt;/code>), &lt;code>services.msc&lt;/code>, Power Options, and &lt;code>sfc /scannow&lt;/code> + &lt;code>DISM /Online /Cleanup-Image /RestoreHealth&lt;/code> — all standard and self-verifiable on any Windows 10/11 PC. The event signatures (Kernel-Power 41 = unclean shutdown/hard-reset; WHEA-Logger 17/18/19 = hardware-reported error; LiveKernelEvent 141 / &amp;ldquo;display driver stopped responding&amp;rdquo; = a graphics TDR event) are documented by Microsoft and cross-corroborated across community troubleshooting threads (Microsoft Q&amp;amp;A, Tom&amp;rsquo;s Hardware forums). A few widely used third-party diagnostics are named where the built-in tools don&amp;rsquo;t cover the job: &lt;strong>CrystalDiskInfo&lt;/strong> and &lt;strong>MemTest86&lt;/strong> for drive-SMART and memory testing, &lt;strong>HWiNFO&lt;/strong> for load temperatures, and &lt;strong>LatencyMon&lt;/strong> for pinpointing the driver behind rhythmic, every-few-seconds micro-freezes (a DPC-latency pattern the generic &amp;ldquo;close some tabs&amp;rdquo; advice never catches).&lt;/li>
&lt;li>Thermal limits and what &amp;ldquo;too hot&amp;rdquo; means: our &lt;a href="https://techfuelhq.com/articles/safe-cpu-temp-2026/">safe CPU temperature guide&lt;/a> (first-party). Graphics-driver clean reinstall: our &lt;a href="https://techfuelhq.com/articles/gpu-driver-crash-fix-2026/">GPU driver crash fix guide&lt;/a> (first-party). When it reboots instead of freezing: our &lt;a href="https://techfuelhq.com/articles/pc-keeps-restarting-2026/">PC keeps restarting guide&lt;/a> (first-party). When it&amp;rsquo;s the network dropping rather than the whole PC locking up: our &lt;a href="https://techfuelhq.com/articles/wifi-keeps-disconnecting-2026/">WiFi keeps disconnecting guide&lt;/a> (first-party). When a game closes to the desktop instead of the whole PC freezing: our &lt;a href="https://techfuelhq.com/articles/games-keep-crashing-pc-2026/">games keep crashing on PC guide&lt;/a> (first-party).&lt;/li>
&lt;/ul>
&lt;p>&lt;em>Steps are for Windows 10 and 11 in 2026; menu names vary slightly by version. Found an error? Email &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a> with the article URL.&lt;/em>&lt;/p></description></item><item><title>Keyboard Not Working? Fix It by What Actually Broke (2026)</title><link>https://techfuelhq.com/articles/keyboard-not-working-2026/</link><pubDate>Sun, 05 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/keyboard-not-working-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-07-05 · ~7 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence what gets recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;p>&amp;ldquo;Keyboard not working&amp;rdquo; is really three different problems that people lump together, and the reason so many fix-lists fail is that they jump straight to &amp;ldquo;reinstall the driver&amp;rdquo; no matter which one you have. Sort your problem into one of these first, then jump to that section:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Dead&lt;/strong> — nothing types at all.&lt;/li>
&lt;li>&lt;strong>Typing, but wrong or laggy&lt;/strong> — characters are swapped, doubled, missing quick taps, or letters come out as numbers.&lt;/li>
&lt;li>&lt;strong>Partly working&lt;/strong> — some keys respond, others don&amp;rsquo;t.&lt;/li>
&lt;/ol>
&lt;p>The good news: in every case the keyboard itself is usually fine. Most of these are a setting or a driver, not dead hardware — the &lt;a href="https://support.microsoft.com/en-us/windows/hardware/input-devices/mouse-and-keyboard-problems-in-windows" rel="noopener">Microsoft support page for mouse and keyboard problems&lt;/a> confirms the same order (checks, then drivers). Work your section top to bottom and stop when it types.&lt;/p>
&lt;h2 id="first-which-of-the-three-is-it">First: which of the three is it?&lt;/h2>
&lt;p>Open Notepad and try to type. If &lt;strong>nothing&lt;/strong> appears, you&amp;rsquo;re in the Dead section. If characters appear but they&amp;rsquo;re &lt;strong>wrong, doubled, or laggy&lt;/strong>, you&amp;rsquo;re in the Typing-but-wrong section — and that&amp;rsquo;s good news, because it&amp;rsquo;s almost never hardware. If &lt;strong>some keys work and others don&amp;rsquo;t&lt;/strong>, skip to Partly-working.&lt;/p>
&lt;p>One 15-second test settles the biggest question: plug the keyboard into &lt;strong>another computer&lt;/strong> (or, for a laptop, plug in any cheap USB keyboard). If it works elsewhere, the fault is your PC&amp;rsquo;s software or ports — not the keyboard. If it fails everywhere, the keyboard is the suspect.&lt;/p>
&lt;h2 id="if-its-dead-nothing-types-at-all">If it&amp;rsquo;s dead: nothing types at all&lt;/h2>
&lt;p>&lt;strong>Give yourself a way to type first.&lt;/strong> You can&amp;rsquo;t do most fixes without input, so open the on-screen keyboard: press &lt;strong>Windows Key + Ctrl + O&lt;/strong>, or click Start, type &lt;code>osk&lt;/code>, and open On-Screen Keyboard with your mouse. Now you can click keys and work through the menus below while you fix the physical one.&lt;/p>
&lt;p>&lt;strong>Try a different port and cable (wired).&lt;/strong> Plug the keyboard directly into a &lt;strong>rear USB port&lt;/strong> on a desktop — not a front-panel port or a hub — and try another cable if it&amp;rsquo;s detachable. A different port also rules out a single dead port.&lt;/p>
&lt;p>&lt;strong>Fresh batteries and a re-pair (wireless).&lt;/strong> Swap batteries, re-seat the USB receiver in a different port, and for Bluetooth remove the keyboard under Settings &amp;gt; Bluetooth &amp;amp; devices and pair it again.&lt;/p>
&lt;p>&lt;strong>Reinstall the keyboard driver.&lt;/strong> This clears the single most common &amp;ldquo;dead after an update&amp;rdquo; cause. Open Device Manager (&lt;strong>Windows Key + X &amp;gt; Device Manager&lt;/strong>), expand &lt;strong>Keyboards&lt;/strong>, right-click your keyboard, choose &lt;strong>Uninstall device&lt;/strong>, and &lt;strong>restart&lt;/strong>. Windows reinstalls the driver automatically on boot.&lt;/p>
&lt;p>&lt;strong>Disable Fast Startup.&lt;/strong> If the keyboard is dead on a cold boot but works after a full restart, Fast Startup is leaving the input stack half-initialized. Go to &lt;strong>Control Panel &amp;gt; Power Options &amp;gt; Choose what the power buttons do &amp;gt; Change settings that are currently unavailable&lt;/strong>, then uncheck &lt;strong>Turn on fast startup&lt;/strong> and save. (This is the same fix that resolves a lot of &lt;a href="https://techfuelhq.com/articles/usb-device-not-recognized-2026/">USB-device-not-recognized cases&lt;/a> — a keyboard is just a USB device.)&lt;/p>
&lt;p>&lt;strong>Run the keyboard troubleshooter if your build has one.&lt;/strong> Settings &amp;gt; System &amp;gt; Troubleshoot &amp;gt; Other troubleshooters — if a &lt;strong>Keyboard&lt;/strong> entry is listed, click Run. (Microsoft has removed several legacy troubleshooters in recent Windows 11 24H2 builds, so don&amp;rsquo;t be surprised if it isn&amp;rsquo;t there — the steps above cover what it did anyway.)&lt;/p>
&lt;p>&lt;strong>Broke right after a Windows Update?&lt;/strong> That&amp;rsquo;s the most-reported trigger. Use the on-screen keyboard to reinstall the driver as above; if it started with a specific update, you can also roll that update back under Settings &amp;gt; Windows Update &amp;gt; Update history &amp;gt; Uninstall updates.&lt;/p>
&lt;h2 id="if-its-typing-but-wrong-or-laggy">If it&amp;rsquo;s typing but wrong or laggy&lt;/h2>
&lt;p>This is the section people miss, and it&amp;rsquo;s almost never hardware.&lt;/p>
&lt;p>&lt;strong>Filter Keys — the &amp;ldquo;it suddenly feels broken&amp;rdquo; cause.&lt;/strong> If quick taps get ignored and you have to hold keys down for them to register, Filter Keys is on. Holding the &lt;strong>right Shift key for about eight seconds&lt;/strong> is a built-in Windows shortcut that enables it — easy to trigger by accident. Filter Keys tells Windows to ignore brief or repeated key presses, which makes normal typing feel laggy or dead. Fix: &lt;strong>Settings &amp;gt; Accessibility &amp;gt; Keyboard&lt;/strong>, and turn &lt;strong>Sticky keys, Filter keys, and Toggle keys&lt;/strong> all off. While you&amp;rsquo;re there, turn off the keyboard-shortcut option so you can&amp;rsquo;t re-trigger it by leaning on Shift.&lt;/p>
&lt;p>&lt;strong>Wrong symbols (@ and &amp;quot; swapped, £ where # should be) — it&amp;rsquo;s the layout.&lt;/strong> Your keyboard language got switched, usually by &lt;strong>Windows Key + Space&lt;/strong> or a stray hotkey. Press &lt;strong>Windows Key + Space&lt;/strong> to cycle back to your correct layout (for example US), then remove the extra one under &lt;strong>Settings &amp;gt; Time &amp;amp; language &amp;gt; Language &amp;amp; region&lt;/strong> so it can&amp;rsquo;t come back.&lt;/p>
&lt;p>&lt;strong>Laptop typing numbers instead of letters (u=4, i=5, o=6, j=1&amp;hellip;).&lt;/strong> On laptops without a separate number pad, &lt;strong>Num Lock&lt;/strong> overlays a number pad onto part of the letter keys. Press &lt;strong>Fn + Num Lock&lt;/strong> (sometimes labeled &lt;strong>NumLk&lt;/strong>) to switch it off and the letters return.&lt;/p>
&lt;h2 id="if-only-some-keys-work">If only some keys work&lt;/h2>
&lt;p>Isolated dead keys after the settings above are usually physical. Power off, tip the keyboard, and clean under and around the stuck keys with a &lt;a href="https://www.amazon.com/s?k=compressed+air+duster+can&amp;tag=techfuelhq-20" rel="nofollow sponsored noopener" target="_blank">can of compressed air&lt;/a> — crumbs and dust under a keycap are a common cause. If a cluster of keys died after a spill, that&amp;rsquo;s liquid damage to the membrane or switches, and the board usually needs replacing.&lt;/p>
&lt;h2 id="when-it-really-is-the-keyboard">When it really is the keyboard&lt;/h2>
&lt;p>If it failed the another-PC test, cleaning didn&amp;rsquo;t help, and the settings above are all clear, the keyboard (or its cable) is the fault. A dead laptop keyboard is also the one case where you need an external one to keep working — and a cheap wired backup is worth having regardless. An inexpensive &lt;a href="https://www.amazon.com/s?k=wired+usb+keyboard&amp;tag=techfuelhq-20" rel="nofollow sponsored noopener" target="_blank">wired USB keyboard&lt;/a> plugs in with no drivers or pairing, which also makes it the perfect tool for doing the Device Manager fixes above when your main keyboard is dead.&lt;/p>
&lt;h2 id="the-short-version">The short version&lt;/h2>
&lt;ul>
&lt;li>Sort the problem first: &lt;strong>dead&lt;/strong>, &lt;strong>typing-wrong/laggy&lt;/strong>, or &lt;strong>partly working&lt;/strong> — the fix depends on it.&lt;/li>
&lt;li>Dead: on-screen keyboard (&lt;strong>Win + Ctrl + O&lt;/strong>) → different port/cable → &lt;strong>reinstall the driver&lt;/strong> in Device Manager → &lt;strong>disable Fast Startup&lt;/strong>.&lt;/li>
&lt;li>Typing but wrong: it&amp;rsquo;s &lt;strong>Filter Keys&lt;/strong> (hold right Shift 8s turns it on) or the &lt;strong>wrong layout&lt;/strong> (&lt;strong>Win + Space&lt;/strong>), not broken hardware. Laptops typing numbers = &lt;strong>Fn + Num Lock&lt;/strong>.&lt;/li>
&lt;li>The another-PC test tells you in 15 seconds whether it&amp;rsquo;s your PC or the keyboard.&lt;/li>
&lt;/ul>
&lt;p>Still fighting Windows peripherals? See our fixes for &lt;a href="https://techfuelhq.com/articles/usb-device-not-recognized-2026/">USB devices not recognized&lt;/a>, &lt;a href="https://techfuelhq.com/gaming/xbox-controller-not-connecting-to-pc-fix-2026/">an Xbox controller that won&amp;rsquo;t connect&lt;/a>, and &lt;a href="https://techfuelhq.com/articles/gpu-driver-crash-fix-2026/">GPU driver crashes&lt;/a>.&lt;/p>
&lt;p>&lt;strong>Source:&lt;/strong> &lt;a href="https://support.microsoft.com/en-us/windows/hardware/input-devices/mouse-and-keyboard-problems-in-windows" rel="noopener">Mouse and keyboard problems in Windows — Microsoft Support&lt;/a>. Filter Keys, Fast Startup, the on-screen keyboard, and Device Manager are all standard built-in Windows features; the steps above use their default locations in Windows 11 and 10.&lt;/p></description></item><item><title>NetBird vs Tailscale (2026): The Self-Hosted Mesh VPN Question</title><link>https://techfuelhq.com/networking/netbird-vs-tailscale-2026/</link><pubDate>Sun, 05 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/networking/netbird-vs-tailscale-2026/</guid><description>&lt;p>If you have already decided a WireGuard mesh is how you will reach your homelab from anywhere, the next fork in the road in 2026 is often &lt;strong>NetBird vs Tailscale&lt;/strong> - and the way it usually gets framed (&amp;ldquo;which mesh VPN is faster/better?&amp;rdquo;) points you at the wrong thing. Both are mesh VPNs built on WireGuard. Under the hood, when the connection is direct, they are running the &lt;em>same&lt;/em> encryption at the &lt;em>same&lt;/em> speed. The real difference is not the tunnel. It is &lt;strong>who owns the control plane.&lt;/strong>&lt;/p>
&lt;p>This is the focused two-way version of that decision, aimed at homelabbers. If you are still one step earlier - deciding between a managed mesh and raw WireGuard at all - start with &lt;a href="https://techfuelhq.com/networking/tailscale-vs-wireguard-2026/">Tailscale vs WireGuard&lt;/a> or &lt;a href="https://techfuelhq.com/networking/wireguard-vs-openvpn-homelab-2026/">WireGuard vs OpenVPN for the homelab&lt;/a>. If you want the Layer 2 virtual-switch option in the mix, see &lt;a href="https://techfuelhq.com/networking/zerotier-vs-tailscale-2026/">ZeroTier vs Tailscale&lt;/a>. If you have landed on a mesh and just want the two leading options compared honestly, keep reading.&lt;/p>
&lt;h2 id="the-20-second-answer">The 20-second answer&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>You are one person, you want it working in 15 minutes, and you never want to run a server:&lt;/strong> &lt;strong>Tailscale.&lt;/strong> Its free Personal plan and zero-maintenance SaaS control plane are the right default for most homelabs in 2026.&lt;/li>
&lt;li>&lt;strong>You want to self-host the entire stack - control plane included - as an officially supported path, not a community workaround:&lt;/strong> &lt;strong>NetBird.&lt;/strong> It ships its own open-source coordination server as a first-class product.&lt;/li>
&lt;li>&lt;strong>You are scaling to a team and per-user cost matters:&lt;/strong> lean &lt;strong>NetBird.&lt;/strong> Self-hosting is free, and its cloud Team plan undercuts Tailscale per user.&lt;/li>
&lt;/ul>
&lt;p>Neither choice is a mistake. What follows is where they actually diverge.&lt;/p>
&lt;h2 id="same-engine-different-brain">Same engine, different brain&lt;/h2>
&lt;p>Both products share the same &lt;strong>data plane&lt;/strong>: WireGuard, the small, fast, modern tunnel that has been the standard for point-to-point encrypted links since it landed in the mainline Linux kernel. Both also add the same category of things WireGuard deliberately leaves out - automatic key distribution, NAT traversal, stable addressing, and access policy. That shared &amp;ldquo;coordination layer&amp;rdquo; is why people compare them at all.&lt;/p>
&lt;p>Where they split is the &lt;strong>control plane&lt;/strong> - the coordination server that brokers keys, tracks which device is where, and distributes your policy:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Tailscale&lt;/strong> runs that control plane as a &lt;strong>proprietary, fully managed service.&lt;/strong> You never operate a server. The client is open source; the brain is not. If you want the brain on your own hardware, the community answer is &lt;a href="https://github.com/juanfont/headscale" rel="noopener">Headscale&lt;/a>, a separate open-source reimplementation of Tailscale&amp;rsquo;s control server.&lt;/li>
&lt;li>&lt;strong>NetBird&lt;/strong> ships its &lt;strong>own coordination server as open source&lt;/strong>, as a supported part of the product. You can use NetBird&amp;rsquo;s hosted cloud &lt;em>or&lt;/em> self-host the complete stack, and self-hosting is a documented first-class path rather than a reverse-engineered one.&lt;/li>
&lt;/ul>
&lt;p>So &amp;ldquo;NetBird vs Tailscale&amp;rdquo; really means: &lt;strong>do you want a managed brain you never touch, or the option to own the brain yourself without leaving the supported path?&lt;/strong>&lt;/p>
&lt;h2 id="the-one-question-that-usually-decides-it-do-you-want-to-run-the-control-plane">The one question that usually decides it: do you want to run the control plane?&lt;/h2>
&lt;p>This is the axis everything else hangs on.&lt;/p>
&lt;p>If the honest answer is &lt;strong>&amp;ldquo;no, I never want to run or secure another server,&amp;rdquo;&lt;/strong> Tailscale is built for you. You install clients, log in with an identity you already have, and the tailnet coordinates itself forever. There is no control server in your life. For a huge share of homelabbers - one person, a NAS, a couple of Pis, a laptop and a phone - that is exactly the right trade, and the free tier covers it completely.&lt;/p>
&lt;p>If the answer is &lt;strong>&amp;ldquo;yes, I want the coordination server on my own hardware,&amp;rdquo;&lt;/strong> the comparison tilts toward NetBird. You &lt;em>can&lt;/em> get there with Tailscale by running Headscale, and many people happily do. But Headscale is a third-party project chasing a moving proprietary target: feature parity lags, and you are on your own for support. NetBird self-hosting is the vendor&amp;rsquo;s own supported stack. If owning the control plane is a hard requirement rather than a nice-to-have, that distinction matters.&lt;/p>
&lt;h2 id="what-self-hosting-netbird-actually-asks-of-you">What self-hosting NetBird actually asks of you&lt;/h2>
&lt;p>Self-hosting is easy to say and real to run, so be clear-eyed about it. A self-hosted NetBird deployment is &lt;strong>three services&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Management service&lt;/strong> - holds network state, assigns peer IPs, and distributes configuration updates.&lt;/li>
&lt;li>&lt;strong>Signal service&lt;/strong> - brokers peer negotiation by relaying encrypted connection candidates so peers can find each other.&lt;/li>
&lt;li>&lt;strong>Relay service&lt;/strong> - provides fallback connectivity (a TURN-style relay) when two peers cannot establish a direct path.&lt;/li>
&lt;/ul>
&lt;p>You also wire in an identity provider for login. NetBird documents a Docker-based install that stands all of this up together, so it is well within reach for anyone already running &lt;a href="https://techfuelhq.com/articles/self-hosting-essentials/">self-hosted apps&lt;/a> - but it is a service you now own, patch, back up, and keep reachable. The upside is total control and no external dependency in your remote-access path. The downside is that if your management server is down when you are away from home, you cannot bring &lt;em>new&lt;/em> peers online until it is back (existing tunnels keep flowing).&lt;/p>
&lt;p>Tailscale&amp;rsquo;s equivalent operational cost is simply &lt;strong>zero&lt;/strong> - unless you choose Headscale, at which point you have taken on a very similar self-hosting burden as NetBird, just with a less-supported control server.&lt;/p>
&lt;h2 id="policy-and-day-to-day-ui-vs-acl-file">Policy and day-to-day: UI vs ACL file&lt;/h2>
&lt;p>For daily driving, the biggest felt difference is how you express access rules.&lt;/p>
&lt;p>&lt;strong>NetBird&lt;/strong> leans on a &lt;strong>web UI with groups and policies&lt;/strong> - you build access rules with dropdowns and toggles, and assign peers to groups that automate routing and permissions. For people who do not want to think in config syntax, this is friendlier, and it scales cleanly as the number of peers grows.&lt;/p>
&lt;p>&lt;strong>Tailscale&lt;/strong> centers on the &lt;strong>tailnet policy file&lt;/strong>, written in HuJSON (JSON with comments). It is powerful and version-controllable, and infrastructure-minded users often prefer having their whole access model as code in a file. But it does ask for comfort with ACL syntax, and a fat-fingered rule is edited in text, not clicked.&lt;/p>
&lt;p>Neither is objectively better - it is a genuine UI-vs-config-file preference. If you like GitOps-style policy-as-code, Tailscale fits your hands. If you want to hand a teammate a console and dropdowns, NetBird does.&lt;/p>
&lt;h2 id="performance-effectively-a-tie-where-it-matters">Performance: effectively a tie where it matters&lt;/h2>
&lt;p>When either product establishes a &lt;strong>direct&lt;/strong> peer-to-peer connection - which both do the large majority of the time - you are running WireGuard in both cases, so throughput and latency are essentially the same. NetBird&amp;rsquo;s own engineering write-ups concede this: on a shared regional network path, direct P2P WireGuard performance is functionally identical across these tools.&lt;/p>
&lt;p>The only honest performance caveats are at the edges:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>NAT traversal reliability.&lt;/strong> Both use STUN/ICE-style hole punching plus a relay fallback. In a hard CGNAT environment, how often each achieves a &lt;em>direct&lt;/em> path (versus relaying) is the thing that actually affects your speed, and it varies by network more than by product.&lt;/li>
&lt;li>&lt;strong>Relay fallback.&lt;/strong> When a direct path is impossible and traffic rides a relay, expect added latency and reduced throughput on that link until a direct route is found. This is true of both.&lt;/li>
&lt;/ol>
&lt;p>Bottom line: for SSH, web UIs, file transfers, and media streaming - the actual homelab workload - &lt;strong>performance is not the deciding factor between these two.&lt;/strong> Do not pick on benchmarks; pick on control-plane ownership and cost.&lt;/p>
&lt;h2 id="cost-especially-at-scale">Cost, especially at scale&lt;/h2>
&lt;p>For a single user, both are free and cost is a non-issue: Tailscale&amp;rsquo;s Personal plan is free for up to 6 users with a generous device allowance, and NetBird&amp;rsquo;s cloud free tier covers up to 5 users and 100 machines. Self-hosted NetBird is free at any size.&lt;/p>
&lt;p>The gap opens when you &lt;strong>grow a team on the hosted clouds.&lt;/strong> NetBird&amp;rsquo;s paid Team plan starts around &lt;strong>$6 per user per month&lt;/strong>; Tailscale&amp;rsquo;s Standard plan is &lt;strong>$8 per user per month&lt;/strong>, and its Premium tier (which is where some advanced identity features live) is &lt;strong>$18 per user per month&lt;/strong>. NetBird also puts SSO and advanced policy on lower-cost tiers than Tailscale does. If you are outfitting a company rather than a homelab, that per-seat difference compounds - and self-hosting NetBird takes the per-seat cost to zero, trading it for the operational cost of running the stack.&lt;/p>
&lt;h2 id="the-extras-that-can-tip-a-close-call">The extras that can tip a close call&lt;/h2>
&lt;p>If control-plane philosophy and cost leave you undecided, two NetBird features can break the tie:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Post-quantum encryption via Rosenpass.&lt;/strong> NetBird can layer &lt;a href="https://rosenpass.eu/" rel="noopener">Rosenpass&lt;/a> in front of WireGuard to defend against future quantum &amp;ldquo;harvest now, decrypt later&amp;rdquo; attacks. It is opt-in and off by default. Tailscale does not currently expose a comparable option. For almost every homelab this is theoretical, but if it is on your list, it is a real point for NetBird.&lt;/li>
&lt;li>&lt;strong>Built-in reverse proxy with automatic TLS.&lt;/strong> NetBird includes ingress that can expose an internal service over a custom domain with auto-issued Let&amp;rsquo;s Encrypt certificates. Tailscale&amp;rsquo;s nearest analog is Funnel, which exposes a node to the public internet more simply but with less of a full reverse-proxy story. If publishing a self-hosted app is part of your goal, NetBird bundles more of that in one place.&lt;/li>
&lt;/ul>
&lt;h2 id="side-by-side">Side-by-side&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">&lt;/th>
&lt;th scope="col">NetBird&lt;/th>
&lt;th scope="col">Tailscale&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Data plane&lt;/td>
&lt;td>WireGuard&lt;/td>
&lt;td>WireGuard&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Control plane&lt;/td>
&lt;td>Open source, self-host or cloud&lt;/td>
&lt;td>Proprietary, managed (or Headscale to self-host)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Officially supported self-hosting&lt;/td>
&lt;td>Yes (management + signal + relay)&lt;/td>
&lt;td>No (Headscale is community)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>License&lt;/td>
&lt;td>BSD-3-Clause; server dirs AGPLv3&lt;/td>
&lt;td>Client open source; control plane closed&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Free tier&lt;/td>
&lt;td>5 users, 100 machines (cloud); free self-hosted&lt;/td>
&lt;td>6 users, generous device allowance&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Paid entry price&lt;/td>
&lt;td>~$6 / user / mo (Team)&lt;/td>
&lt;td>$8 / user / mo (Standard)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Policy model&lt;/td>
&lt;td>Web UI, groups + dropdowns&lt;/td>
&lt;td>HuJSON ACL policy file&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Post-quantum option&lt;/td>
&lt;td>Yes (Rosenpass, opt-in)&lt;/td>
&lt;td>Not currently&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Built-in reverse proxy&lt;/td>
&lt;td>Yes (auto-TLS ingress)&lt;/td>
&lt;td>Funnel (simpler exposure)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Direct-connection performance&lt;/td>
&lt;td>WireGuard (tie)&lt;/td>
&lt;td>WireGuard (tie)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Best for&lt;/td>
&lt;td>Owning the whole stack, cheaper team scaling&lt;/td>
&lt;td>Zero-maintenance homelab, fastest time-to-working&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;h2 id="so-which-should-you-run">So which should you run?&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Pick Tailscale&lt;/strong> if you are one person or a small household, you want remote access working today with nothing to operate, and you value time-to-working over owning infrastructure. For most homelabbers in 2026, the free Personal plan is the correct default, and Headscale is there later if you ever want the brain on your own hardware.&lt;/li>
&lt;li>&lt;strong>Pick NetBird&lt;/strong> if self-hosting the control plane is a real requirement and you want it on a supported path rather than a community reimplementation, if you are scaling a team where per-user cost matters, or if features like its reverse proxy or Rosenpass post-quantum tip the balance.&lt;/li>
&lt;li>&lt;strong>Consider Tailscale plus Headscale&lt;/strong> if independence from a SaaS control plane is the &lt;em>only&lt;/em> reason NetBird was appealing - it keeps the polished Tailscale clients while moving the brain to your hardware, at the cost of running a less-supported server.&lt;/li>
&lt;/ul>
&lt;p>Whichever you land on, the encryption underneath is the same WireGuard, and the raw speed is a tie. You are really choosing &lt;strong>who runs the coordination server&lt;/strong> - a managed service, a community control plane, or you.&lt;/p></description></item><item><title>ZeroTier vs Tailscale (2026): Layer 2 Switch or Plug-and-Play Mesh?</title><link>https://techfuelhq.com/networking/zerotier-vs-tailscale-2026/</link><pubDate>Sun, 05 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/networking/zerotier-vs-tailscale-2026/</guid><description>&lt;p>If you want your devices to reach each other from anywhere in 2026 - your NAS from a coffee shop, your desktop from your phone, a friend&amp;rsquo;s server across the country - &lt;strong>Tailscale&lt;/strong> and &lt;strong>ZeroTier&lt;/strong> are the two mesh networks you keep running into. Both create a private overlay where every device gets a fixed address and can talk to every other device without port forwarding, even behind carrier-grade NAT.&lt;/p>
&lt;p>They look interchangeable from the outside. They are not. The difference sits one layer down in the network stack, and it decides which one is right for you. This is the focused two-way version of that decision, written for homelabbers rather than enterprise network teams.&lt;/p>
&lt;h2 id="the-20-second-answer">The 20-second answer&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>You want the simplest possible secure remote access across a pile of roaming devices, with as little setup as possible:&lt;/strong> &lt;strong>Tailscale.&lt;/strong> It is the right default for most people in 2026, and its free tier now stretches further than ZeroTier&amp;rsquo;s.&lt;/li>
&lt;li>&lt;strong>You need a real flat LAN across the internet - broadcasts, multicast, Wake-on-LAN, legacy LAN apps, or bridging - or you run MikroTik gear:&lt;/strong> &lt;strong>ZeroTier.&lt;/strong> Its Layer 2 design does things Tailscale structurally cannot.&lt;/li>
&lt;li>&lt;strong>You want to own the entire control plane on your own hardware:&lt;/strong> lean toward &lt;strong>Headscale&lt;/strong> (self-hosted Tailscale control server) or &lt;strong>&lt;a href="https://techfuelhq.com/networking/netbird-vs-tailscale-2026/">NetBird&lt;/a>&lt;/strong> rather than either default, because ZeroTier&amp;rsquo;s self-hosting story got more restrictive in 2026.&lt;/li>
&lt;/ul>
&lt;p>Neither is a mistake. What follows is where they actually diverge.&lt;/p>
&lt;h2 id="the-one-thing-that-explains-every-other-difference-layer-3-vs-layer-2">The one thing that explains every other difference: Layer 3 vs Layer 2&lt;/h2>
&lt;p>This is the root of the whole comparison, so it is worth getting right.&lt;/p>
&lt;p>&lt;strong>Tailscale is a Layer 3 (IP-level) VPN.&lt;/strong> It is built on the &lt;a href="https://techfuelhq.com/networking/wireguard-vs-openvpn-homelab-2026/">WireGuard&lt;/a> protocol and adds a coordination layer on top: it distributes keys between your devices automatically, punches through NAT so they find each other, hands every device a stable &lt;code>100.x.x.x&lt;/code> address plus a MagicDNS name, and enforces access policy. It moves &lt;strong>IP packets&lt;/strong> between devices that now know how to reach each other. It does not stretch your local network across the internet - each device is its own island that can route to the others.&lt;/p>
&lt;p>&lt;strong>ZeroTier is a Layer 2 (Ethernet-level) virtual switch.&lt;/strong> Instead of routing IP packets, it emulates a physical network switch in software: every device you join to a ZeroTier network behaves as if it were plugged into the same switch, on the same flat LAN, even when the machines are in different countries. Because it works at the Ethernet layer, it carries the things a real switch carries - broadcasts, multicast, ARP, and non-IP protocols - not just IP traffic.&lt;/p>
&lt;p>That single architectural choice cascades into everything else:&lt;/p>
&lt;ul>
&lt;li>Need broadcast or multicast (LAN game discovery, some IoT protocols, Wake-on-LAN across sites, legacy software that assumes one subnet)? That is Layer 2 - &lt;strong>ZeroTier&lt;/strong>.&lt;/li>
&lt;li>Just need &amp;ldquo;my devices can reach each other by IP or name, securely, from anywhere&amp;rdquo;? That is Layer 3, and it is simpler - &lt;strong>Tailscale&lt;/strong>.&lt;/li>
&lt;/ul>
&lt;p>Everything below is a consequence of this.&lt;/p>
&lt;h2 id="setup-and-day-to-day-ease-tailscale-wins-clearly">Setup and day-to-day ease: Tailscale wins clearly&lt;/h2>
&lt;p>Every strand of community feedback lands the same way here. On the &lt;a href="https://www.reddit.com/r/zerotier/" rel="noopener">r/zerotier&lt;/a> thread comparing the two, the recurring line from people who use both is that Tailscale &amp;ldquo;just works&amp;rdquo; and that non-networking users get it running in minutes.&lt;/p>
&lt;p>Tailscale&amp;rsquo;s onboarding is: install the client, sign in with an existing identity provider (Google, Microsoft, GitHub, and others), and the device is on your tailnet. NAT traversal, key exchange, and DNS are handled for you. There is very little to misconfigure.&lt;/p>
&lt;p>ZeroTier is more hands-on. You create a network, get a 16-digit network ID, join devices with that ID, and then &lt;strong>manually authorize&lt;/strong> each device in the controller. Its power lives in a flow-rules engine and managed IP assignment that give you fine control - but that control is also more to learn and more to get wrong. As one longtime ZeroTier user put it, it is &amp;ldquo;more complicated, both the language and the stateless nature of the rules engine,&amp;rdquo; but that complexity buys flexibility.&lt;/p>
&lt;p>If your priority is minimal friction, Tailscale is the easier tool by a wide margin. If you enjoy - or need - to shape the network by hand, ZeroTier gives you more surface to work with.&lt;/p>
&lt;h2 id="speed-close-enough-that-it-rarely-decides-anything">Speed: close enough that it rarely decides anything&lt;/h2>
&lt;p>Both establish direct peer-to-peer links when they can and fall back to relays when they cannot. Tailscale&amp;rsquo;s WireGuard data plane has marginally less overhead than ZeroTier&amp;rsquo;s custom protocol, and Tailscale&amp;rsquo;s own comparison notes throughput is &amp;ldquo;similar&amp;rdquo; in most environments with the theoretical edge to WireGuard rarely noticeable in practice.&lt;/p>
&lt;p>The more real-world distinction from the community: Tailscale is generally a little better at &lt;em>finding a direct connection&lt;/em> through difficult NAT rather than routing you through a relay, which makes it feel faster more often. ZeroTier, on the other hand, is reported to be &lt;strong>less blocked in countries that filter VPNs&lt;/strong> and to offer connection aggregation - edges that matter for specific situations more than raw benchmarks.&lt;/p>
&lt;p>Bottom line: on an established tunnel over a normal home connection, treat them as a tie. Do not pick on speed alone.&lt;/p>
&lt;h2 id="the-free-tier-this-is-where-the-story-changed-in-2026">The free tier: this is where the story changed in 2026&lt;/h2>
&lt;p>This is the single fact most existing comparisons - and Google&amp;rsquo;s own AI summary - still get wrong, because both tools moved their free tiers.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Tailscale Personal (free):&lt;/strong> up to &lt;strong>6 users&lt;/strong> with an &lt;strong>unlimited device&lt;/strong> allowance for non-commercial use, including peer-to-peer connections, subnet routers, exit nodes, and MagicDNS. For a solo homelab that keeps adding machines, this is effectively uncapped.&lt;/li>
&lt;li>&lt;strong>ZeroTier (free):&lt;/strong> &lt;strong>10 devices&lt;/strong>, &lt;strong>1 network&lt;/strong>, &lt;strong>1 administrator&lt;/strong> - down from the more generous caps of earlier years. Its paid &lt;strong>Essential&lt;/strong> tier starts at &lt;strong>18 dollars per month&lt;/strong> (10 devices plus 2 dollars per extra device), and &lt;strong>Scale&lt;/strong> jumps to &lt;strong>179 dollars per month&lt;/strong> for 100 devices.&lt;/li>
&lt;/ul>
&lt;p>For comparison, Tailscale&amp;rsquo;s paid plans are &lt;strong>Standard&lt;/strong> at 8 dollars per user per month and &lt;strong>Premium&lt;/strong> at 18 dollars per user per month - but most homelabbers never leave the free Personal plan.&lt;/p>
&lt;p>The practical takeaway: if you are a single person adding your eleventh device, ZeroTier&amp;rsquo;s free tier now stops you and Tailscale&amp;rsquo;s does not. A ZeroTier user on r/zerotier summed up the direction bluntly - they wanted to move away because &amp;ldquo;their free tier is getting restrictive.&amp;rdquo; Verify the current numbers on each vendor&amp;rsquo;s pricing page before you commit, since this is exactly the kind of limit that changes.&lt;/p>
&lt;h2 id="self-hosting-and-the-2026-licensing-worry">Self-hosting and the 2026 licensing worry&lt;/h2>
&lt;p>If you like to own your infrastructure, read this section carefully, because the ground shifted under ZeroTier.&lt;/p>
&lt;p>Historically, ZeroTier&amp;rsquo;s appeal for the self-hosting crowd was that you could run your own controller and even your own root nodes (moons) and depend on nobody. In recent 2026 releases that story tightened: the client remains open source, but running your own controller for organizational use has moved toward &lt;strong>paid licensing&lt;/strong>, and moons have been curtailed. The r/zerotier discussion is full of longtime users who are, in their words, worried about the direction and actively looking at alternatives - NetBird and Netmaker come up repeatedly as the WireGuard-based landing spots.&lt;/p>
&lt;p>Tailscale&amp;rsquo;s control plane is proprietary as a service, but the escape hatch is healthier: &lt;strong>Headscale&lt;/strong> is a mature open-source implementation of the Tailscale coordination server, so you can keep the polished Tailscale clients and run the brains on your own box. If self-hosting the whole stack matters to you, that combination - or a fully open project like &lt;a href="https://techfuelhq.com/networking/netbird-vs-tailscale-2026/">NetBird&lt;/a> - is currently the more predictable bet than pinning your future to ZeroTier&amp;rsquo;s controller licensing.&lt;/p>
&lt;h2 id="where-zerotier-still-genuinely-wins">Where ZeroTier still genuinely wins&lt;/h2>
&lt;p>Do not read the above as &amp;ldquo;just use Tailscale.&amp;rdquo; ZeroTier holds real, structural advantages that Tailscale cannot match by design:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>True Layer 2 features:&lt;/strong> broadcast, multicast, and non-IP traffic ride the ZeroTier network as if every device were on one switch. Wake-on-LAN across sites, LAN-discovery-dependent apps, and bridging a remote device onto your home subnet are ZeroTier&amp;rsquo;s home turf.&lt;/li>
&lt;li>&lt;strong>MikroTik native support:&lt;/strong> ZeroTier runs natively on MikroTik routers, so the RouterOS crowd can run the controller and client directly on the router. This came up again and again from the &amp;ldquo;full MikroTik&amp;rdquo; homelabbers, and it is a real reason to choose ZeroTier if that is your gear.&lt;/li>
&lt;li>&lt;strong>No forced identity provider:&lt;/strong> you can sign up with any email. Several people specifically prefer ZeroTier because it does not require linking machines to a Google, Microsoft, or Apple account - a genuine privacy and independence angle that Tailscale&amp;rsquo;s SSO-first model does not offer out of the box.&lt;/li>
&lt;li>&lt;strong>Simultaneous multi-network membership:&lt;/strong> a device can belong to several ZeroTier networks at once natively; doing the equivalent on Tailscale takes more work.&lt;/li>
&lt;li>&lt;strong>CGNAT resilience:&lt;/strong> ZeroTier is reliable behind carrier-grade NAT and, per community reports, is sometimes less aggressively blocked in restrictive networks.&lt;/li>
&lt;/ul>
&lt;p>If any of those describe your situation - especially the Layer 2 requirements or MikroTik hardware - ZeroTier is not just viable, it is the correct answer.&lt;/p>
&lt;h2 id="side-by-side">Side-by-side&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Factor&lt;/th>
&lt;th scope="col">Tailscale&lt;/th>
&lt;th scope="col">ZeroTier&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Network layer&lt;/td>
&lt;td>Layer 3 (IP VPN)&lt;/td>
&lt;td>Layer 2 (virtual Ethernet switch)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Protocol&lt;/td>
&lt;td>WireGuard&lt;/td>
&lt;td>Custom ZeroTier protocol&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Setup ease&lt;/td>
&lt;td>Very easy, SSO, zero-config&lt;/td>
&lt;td>More technical, manual authorization + rules&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Free tier (2026)&lt;/td>
&lt;td>6 users, unlimited devices&lt;/td>
&lt;td>10 devices, 1 network&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Paid entry&lt;/td>
&lt;td>8 dollars/user/mo (Standard)&lt;/td>
&lt;td>18 dollars/mo (Essential)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Broadcast / multicast / WoL&lt;/td>
&lt;td>No (Layer 3)&lt;/td>
&lt;td>Yes (Layer 2)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>MikroTik native&lt;/td>
&lt;td>No&lt;/td>
&lt;td>Yes&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Auth&lt;/td>
&lt;td>Identity provider (SSO) required&lt;/td>
&lt;td>Any email; machine keys&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Self-host control plane&lt;/td>
&lt;td>Headscale (open source)&lt;/td>
&lt;td>Controller, now more restricted&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Best at&lt;/td>
&lt;td>Simplest secure remote access&lt;/td>
&lt;td>Flexible flat-LAN emulation&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;h2 id="who-should-pick-which">Who should pick which&lt;/h2>
&lt;p>&lt;strong>Choose Tailscale if&lt;/strong> you want secure remote access to your devices with the least possible effort, you are happy signing in through an identity provider, you keep adding devices (that free tier), or you want a clean self-hosting escape hatch via Headscale. For the majority of homelabbers whose goal is &amp;ldquo;reach my stuff from anywhere, securely, without fuss,&amp;rdquo; this is the default. Our &lt;a href="https://techfuelhq.com/tutorials/tailscale-remote-access-homelab-2026/">Tailscale remote-access homelab guide&lt;/a> walks the full setup.&lt;/p>
&lt;p>&lt;strong>Choose ZeroTier if&lt;/strong> you need Layer 2 behavior (broadcasts, multicast, Wake-on-LAN, legacy LAN apps, bridging), you run MikroTik gear, you want to avoid a forced identity provider, or you specifically want a flat LAN stretched across sites. Just go in aware of the smaller free tier and the tightening self-hosting story.&lt;/p>
&lt;p>&lt;strong>Choose neither, and look at Headscale or &lt;a href="https://techfuelhq.com/networking/netbird-vs-tailscale-2026/">NetBird&lt;/a>, if&lt;/strong> owning the complete control plane on your own hardware is non-negotiable - that is the cleanest path in 2026.&lt;/p>
&lt;p>Still weighing the underlying options rather than these two managed meshes? Start with &lt;a href="https://techfuelhq.com/networking/tailscale-vs-wireguard-2026/">Tailscale vs WireGuard&lt;/a> for the raw-protocol-versus-coordination-layer decision, or the broader &lt;a href="https://techfuelhq.com/networking/homelab-firewall-router-stack-2026/">homelab firewall and router stack&lt;/a> if you are planning the whole edge.&lt;/p></description></item><item><title>1440p vs 4K Gaming in 2026: Is 4K Worth It?</title><link>https://techfuelhq.com/articles/1440p-vs-4k-gaming-2026/</link><pubDate>Sat, 04 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/1440p-vs-4k-gaming-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-07-04 · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/articles/hero-1440p-vs-4k-2026.svg" alt="1440p vs 4K gaming in 2026: 1440p is the sweet spot for most gamers on a 27-inch screen with a mid-range GPU, while 4K is worth it on 32-inch-plus with a flagship RTX 5080-class card - 4K is 2.25x the pixels of 1440p" width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;" />
&lt;p>The short answer: &lt;strong>1440p is the sweet spot for most gamers in 2026, and 4K is worth it only if you have both a flagship GPU and a big screen.&lt;/strong> 1440p at 27 inches gives you sharp image quality that a mainstream card can actually drive at high frame rates; 4K rewards a 32-inch-plus panel and an RTX 5080-class GPU. This guide gives the real pixel math behind the gap, the GPU you need for each resolution, and exactly when 4K earns its cost.&lt;/p>
&lt;h2 id="why-4k-is-so-much-harder-to-run">Why 4K is so much harder to run&lt;/h2>
&lt;p>Start with the numbers, because they explain everything downstream:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>1080p&lt;/strong> = 1920 x 1080 = &lt;strong>2.07 million pixels&lt;/strong>&lt;/li>
&lt;li>&lt;strong>1440p&lt;/strong> = 2560 x 1440 = &lt;strong>3.69 million pixels&lt;/strong> (1.78x of 1080p)&lt;/li>
&lt;li>&lt;strong>4K&lt;/strong> = 3840 x 2160 = &lt;strong>8.29 million pixels&lt;/strong> (2.25x of 1440p, 4x of 1080p)&lt;/li>
&lt;/ul>
&lt;p>Your GPU has to shade every one of those pixels every frame, so &lt;strong>4K asks for roughly 2.25 times the graphics work of 1440p&lt;/strong> for the same frame rate. That&amp;rsquo;s not a small tax - it&amp;rsquo;s the difference between a card cruising and a card struggling. In practice a demanding ray-traced game that a flagship like the RTX 5080 runs at well over 100 fps at 1440p can fall to roughly half that at native 4K on the very same card. The resolution alone - not a slower GPU - is what moved the frame rate.&lt;/p>
&lt;h2 id="the-gpu-you-need-for-each-resolution">The GPU you need for each resolution&lt;/h2>
&lt;p>This is where most &amp;ldquo;which resolution&amp;rdquo; advice goes wrong: it treats the monitor as the decision when the &lt;em>GPU&lt;/em> is the real gate. Here&amp;rsquo;s the 2026 mapping:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Resolution&lt;/th>
&lt;th scope="col">GPU class you want&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>1440p high-refresh&lt;/td>
&lt;td>RTX 5070 / RX 9070 XT (the sweet spot)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>4K upscaled (DLSS 4 / FSR 4)&lt;/td>
&lt;td>RTX 4080 / RTX 5070 and up&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>4K native, high frame rate&lt;/td>
&lt;td>RTX 5080 or better&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Cards like the RTX 4070 and RX 7800 XT are fundamentally &lt;strong>1440p GPUs&lt;/strong> - they can output a 4K signal, they just can&amp;rsquo;t hold the settings and frame rates most players want there. Pair a mid-range card with a 4K monitor and you&amp;rsquo;ll end up either dropping settings hard or leaning entirely on upscaling. To see where a specific card lands, the &lt;a href="https://techfuelhq.com/tools/gpu-comparison/">GPU Comparison Tool&lt;/a> and the &lt;a href="https://techfuelhq.com/articles/best-gpu-4k-gaming-2026/">best GPUs for 4K gaming&lt;/a> guide put the raw performance next to the resolution it&amp;rsquo;s meant for.&lt;/p>
&lt;h2 id="when-4k-is-worth-it---and-when-1440p-wins">When 4K is worth it - and when 1440p wins&lt;/h2>
&lt;p>&lt;strong>Choose 4K if you:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Own a flagship GPU (RTX 5080 or better).&lt;/li>
&lt;li>Use a 32-inch or larger screen, where the extra sharpness is clearly visible.&lt;/li>
&lt;li>Prioritize visual fidelity, HDR impact, and single-player immersion over maximum frame rate.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Choose 1440p if you:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Have a mid-range GPU (RTX 5060-5070 class).&lt;/li>
&lt;li>Use a 27-inch monitor - the size where 1440p already looks sharp.&lt;/li>
&lt;li>Value high refresh rates and competitive frame rates, or want your GPU to last longer before it feels slow.&lt;/li>
&lt;/ul>
&lt;p>Screen size is the quiet deciding factor. On a 27-inch panel at a normal desk distance, 1440p&amp;rsquo;s pixels are already small enough that 4K&amp;rsquo;s upgrade is subtle; on a 32-inch-plus screen, 4K&amp;rsquo;s extra density is obvious. You can check the exact pixel density for any size and resolution with the &lt;a href="https://techfuelhq.com/tools/ppi-calculator/">PPI Calculator&lt;/a> before you buy.&lt;/p>
&lt;h2 id="upscaling-changes-the-math-a-bit">Upscaling changes the math (a bit)&lt;/h2>
&lt;p>DLSS 4 and FSR 4 render the game at a lower internal resolution and reconstruct it up to 4K, which cuts the GPU cost meaningfully and is what makes 4K practical on an RTX 4080/5070 rather than only a flagship. It&amp;rsquo;s genuinely good in 2026 - but it doesn&amp;rsquo;t erase the gap, and native 4K still asks for a top-tier card. If you&amp;rsquo;re counting on upscaling to make 4K work on a mid-range GPU, treat it as a helpful boost, not a magic fix; the &lt;a href="https://techfuelhq.com/articles/dlss-vs-fsr-2026/">DLSS vs FSR breakdown&lt;/a> covers what each does well.&lt;/p>
&lt;h2 id="dont-forget-vram-and-the-monitor-cost">Don&amp;rsquo;t forget VRAM and the monitor cost&lt;/h2>
&lt;p>Two costs beyond the GPU core:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>VRAM.&lt;/strong> 4K&amp;rsquo;s high-resolution frame buffer and textures eat graphics memory - 16GB is the sensible minimum for 4K, where 1440p is comfortable on 12GB. A fast card starved of VRAM stutters at 4K; the &lt;a href="https://techfuelhq.com/articles/how-much-vram-do-you-need-2026/">how much VRAM you need&lt;/a> guide has the full breakdown.&lt;/li>
&lt;li>&lt;strong>The monitor.&lt;/strong> 4K panels cost more than equivalent 1440p ones, and a high-refresh 4K monitor plus the GPU to feed it is a serious combined spend. 1440p high-refresh is the value sweet spot on the display side too.&lt;/li>
&lt;/ul>
&lt;h2 id="the-verdict">The verdict&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Most gamers:&lt;/strong> 1440p at 27 inches with an RTX 5070 / RX 9070 XT-class card. Best balance of sharpness, frame rate, and cost.&lt;/li>
&lt;li>&lt;strong>Visual-fidelity-first, big screen:&lt;/strong> 4K at 32 inches-plus with an RTX 5080 or better (16GB+ VRAM). Worth it when the hardware matches.&lt;/li>
&lt;li>&lt;strong>Competitive / budget:&lt;/strong> 1080p is still fine for 240Hz+ esports or a tight budget.&lt;/li>
&lt;li>&lt;strong>The rule:&lt;/strong> pick the resolution your GPU is built for, not the biggest number. A 1440p card on a 4K screen is a worse experience than the same card on the 1440p screen it was made for.&lt;/li>
&lt;/ul>
&lt;p>4K is more attainable than ever in 2026, but &amp;ldquo;attainable&amp;rdquo; still means a flagship GPU and a big screen. For the money most people spend, 1440p delivers the better all-round result - which is exactly why it&amp;rsquo;s the resolution to beat.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>2026 resolution/GPU-class guidance (1440p sweet spot, 4K GPU tiers, upscaling break-even) synthesized from current testing roundups. The ~2.25x 4K-over-1440p GPU cost is exact pixel-count arithmetic (8.29M vs 3.69M pixels); the real-world frame-rate hit scales roughly with it.&lt;/li>
&lt;li>First-party tools and guides: &lt;a href="https://techfuelhq.com/tools/gpu-comparison/">GPU Comparison&lt;/a>, &lt;a href="https://techfuelhq.com/articles/best-gpu-4k-gaming-2026/">best GPUs for 4K gaming&lt;/a>, &lt;a href="https://techfuelhq.com/articles/how-much-vram-do-you-need-2026/">how much VRAM you need&lt;/a>, and the &lt;a href="https://techfuelhq.com/tools/ppi-calculator/">PPI Calculator&lt;/a>.&lt;/li>
&lt;/ul>
&lt;p>&lt;em>Guidance is for mid-2026; GPU classes and monitor prices shift, so confirm current benchmarks for the specific card and games you play. Found an error? Email &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a> with the article URL.&lt;/em>&lt;/p></description></item><item><title>Forgejo vs Gitea 2026: Which Self-Hosted Git to Pick</title><link>https://techfuelhq.com/homelab/forgejo-vs-gitea-2026/</link><pubDate>Sat, 04 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/homelab/forgejo-vs-gitea-2026/</guid><description>&lt;p>If you&amp;rsquo;re standing up a self-hosted Git server in 2026, the two names you&amp;rsquo;ll weigh are &lt;strong>Forgejo&lt;/strong> and &lt;strong>Gitea&lt;/strong> — and they&amp;rsquo;re no longer the same thing wearing different logos. Forgejo began as a friendly fork of Gitea, became a &lt;strong>hard fork in early 2024&lt;/strong>, and has been diverging ever since. So the real question isn&amp;rsquo;t &amp;ldquo;which logo do I like,&amp;rdquo; it&amp;rsquo;s &amp;ldquo;which project do I want to run for the next five years.&amp;rdquo; Here&amp;rsquo;s how they actually compare in 2026 on the things that decide it — governance, licensing, federation, and migration — verified against each project&amp;rsquo;s own documentation.&lt;/p>
&lt;img src="https://techfuelhq.com/images/homelab/forgejo-vs-gitea-2026.svg" width="1200" height="800" loading="lazy" decoding="async" alt="Comparison of Forgejo and Gitea self-hosted Git forges in 2026 across governance, license, federation, CI/CD, and migration: Forgejo is Codeberg e.V. non-profit and GPLv3+ with ActivityPub federation in development, Gitea is a for-profit Open Core company with an MIT license and no federation; migration runs one-way from Gitea v1.22 to Forgejo v10." style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;h2 id="the-two-at-a-glance">The two at a glance&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">&lt;/th>
&lt;th scope="col">Forgejo&lt;/th>
&lt;th scope="col">Gitea&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Governance&lt;/td>
&lt;td>&lt;strong>Codeberg e.V.&lt;/strong> (non-profit, community-led)&lt;/td>
&lt;td>For-profit company (&lt;strong>Gitea Ltd&lt;/strong>), Open Core&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>License&lt;/td>
&lt;td>&lt;strong>GPLv3+&lt;/strong> (since v9.0; MIT before)&lt;/td>
&lt;td>&lt;strong>MIT&lt;/strong> + commercial edition&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Fork status&lt;/td>
&lt;td>Hard fork since &lt;strong>early 2024&lt;/strong>&lt;/td>
&lt;td>Original project&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Federation (ActivityPub)&lt;/td>
&lt;td>&lt;strong>In active development&lt;/strong>&lt;/td>
&lt;td>None (as of Dec 2024)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>CI/CD&lt;/td>
&lt;td>Forgejo Actions&lt;/td>
&lt;td>Gitea Actions&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Upgrade / accessibility tests&lt;/td>
&lt;td>&lt;strong>Yes&lt;/strong> (e2e + browser a11y)&lt;/td>
&lt;td>Not as of mid-2025&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Migration&lt;/td>
&lt;td>Drop-in from &lt;strong>Gitea ≤ v1.22 → Forgejo v10&lt;/strong>&lt;/td>
&lt;td>—&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Best for&lt;/td>
&lt;td>Community governance, federation, homelab&lt;/td>
&lt;td>MIT license, Gitea Enterprise features&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Both are lightweight, single-binary Git forges that run happily on a mini PC or a small VM, both do issues/PRs/wiki/releases/CI, and both are far lighter than GitLab. The differences below are about &lt;em>who controls the project and where it&amp;rsquo;s going&lt;/em>, not about whether it can host your repos — either one can.&lt;/p>
&lt;h2 id="why-forgejo-exists-the-governance-split">Why Forgejo exists: the governance split&lt;/h2>
&lt;p>This is the part that started everything. In &lt;strong>2022&lt;/strong>, the Gitea project&amp;rsquo;s domain name and trademark were transferred to a newly-formed for-profit company (Gitea Ltd) — by the community&amp;rsquo;s account, without prior knowledge or approval. A group of maintainers and contributors who wanted the project to stay community-governed responded by creating &lt;strong>Forgejo&lt;/strong> in &lt;strong>December 2022&lt;/strong>, hosted under &lt;strong>Codeberg e.V.&lt;/strong>, a registered German non-profit. Forgejo&amp;rsquo;s stated priority is &amp;ldquo;the interest of the general public&amp;rdquo;; its criticism of Gitea is that a for-profit owner makes decisions &amp;ldquo;to maximize profit rather than favor the interest of the general public.&amp;rdquo;&lt;/p>
&lt;p>In 2026, Forgejo governance is a formal, documented structure — community elections, transparent roadmap, public decision-making. Gitea, by contrast, runs an &lt;strong>&amp;ldquo;Open Core&amp;rdquo;&lt;/strong> model: the core is MIT-licensed, but the company also develops non-free components and (per Forgejo&amp;rsquo;s comparison) requires &lt;strong>copyright assignment even for MIT-licensed contributions&lt;/strong>. Neither model is inherently wrong — a company-backed project can ship features and support that a volunteer non-profit can&amp;rsquo;t always match — but they pull in different directions, which is exactly why the fork became a &lt;em>hard&lt;/em> fork.&lt;/p>
&lt;h2 id="licensing-mit-vs-gplv3-and-why-it-probably-doesnt-affect-you">Licensing: MIT vs GPLv3+ (and why it probably doesn&amp;rsquo;t affect you)&lt;/h2>
&lt;p>Gitea is &lt;strong>MIT-licensed&lt;/strong> — maximally permissive, meaning anyone (including a company) can take the code, modify it, and ship it in a closed product. Forgejo was MIT too, up to and including its v8 series. &lt;strong>Starting with its v9.0 release (2024), Forgejo relicensed to GPLv3-or-later&lt;/strong> — a copyleft license. Every version up to and including the v8 series was MIT.&lt;/p>
&lt;p>The stated reason: to keep Forgejo&amp;rsquo;s code from being pulled back into a commercially-controlled Gitea. So the license divergence is really the governance dispute expressed in legal terms.&lt;/p>
&lt;p>For a &lt;strong>homelab user, this is invisible.&lt;/strong> GPLv3 only creates obligations when you &lt;em>distribute a modified version&lt;/em> of the software — running Forgejo for yourself, your family, or your team triggers none of them. The license matters if you&amp;rsquo;re a business planning to build and sell a closed product on top of the code (MIT lets you; GPLv3 doesn&amp;rsquo;t), or if you have a philosophical preference for copyleft over permissive. Otherwise, both are genuinely Free/Open-Source and you can ignore this section.&lt;/p>
&lt;h2 id="where-they-actually-differ-now">Where they actually differ now&lt;/h2>
&lt;p>Since the hard fork, the codebases have drifted. The concrete, verifiable differences in 2026:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Forge federation (Forgejo&amp;rsquo;s flagship bet).&lt;/strong> Forgejo is actively implementing &lt;strong>ActivityPub-based forge federation&lt;/strong> — the ability for issues, pull requests, and stars to work across independent instances, the way Mastodon federates social posts. Progress is public with monthly reports. Gitea has no federation effort. If a &amp;ldquo;self-hosted but not isolated&amp;rdquo; future appeals to you, this is Forgejo&amp;rsquo;s single biggest differentiator.&lt;/li>
&lt;li>&lt;strong>CI/CD.&lt;/strong> Both ship a GitHub-Actions-compatible runner — &lt;strong>Forgejo Actions&lt;/strong> and &lt;strong>Gitea Actions&lt;/strong> — so your &lt;code>.github&lt;/code>/&lt;code>.forgejo&lt;/code> workflows and existing actions largely just run. Forgejo notably &lt;em>develops and releases itself&lt;/em> using Forgejo Actions (dogfooding); Gitea develops on GitHub.&lt;/li>
&lt;li>&lt;strong>Testing and accessibility.&lt;/strong> Per Forgejo&amp;rsquo;s own comparison, Forgejo maintains end-to-end tests, upgrade tests, and browser tests that include &lt;strong>accessibility checks&lt;/strong>; Gitea, as of mid-2025, did not have end-to-end or upgrade tests and only an example browser test. For an app you&amp;rsquo;ll upgrade for years, upgrade-test coverage is a quiet but real reliability signal.&lt;/li>
&lt;li>&lt;strong>Development stack.&lt;/strong> Forgejo is developed on Codeberg (itself Forgejo) with localization via Weblate; Gitea is developed on GitHub with localization via Crowdin. A values signal more than a feature, but it&amp;rsquo;s real.&lt;/li>
&lt;/ul>
&lt;p>What has &lt;em>not&lt;/em> meaningfully diverged: the core self-hosting experience. Repo hosting, the web UI, issues, PRs, wiki, packages, and releases are still very similar, because they share the same origin. This is why the choice is about trajectory, not day-one features.&lt;/p>
&lt;h2 id="compatibility-and-migration--the-practical-part">Compatibility and migration — the practical part&lt;/h2>
&lt;p>Here&amp;rsquo;s the reassuring news for anyone already on Gitea: &lt;strong>Forgejo is still designed to be a drop-in replacement.&lt;/strong> The projects remain compatible at the database and API level, and Forgejo publishes an official Gitea-migration guide. The supported path is:&lt;/p>
&lt;blockquote>
&lt;p>Upgrade from any Gitea version &lt;strong>up to and including v1.22.x&lt;/strong> to &lt;strong>Forgejo v10.0.x&lt;/strong> — done in two steps.&lt;/p>&lt;/blockquote>
&lt;p>In practice that means: back up your Gitea database and data directory, then run the matching Forgejo release pointed at the same data — no re-cloning repositories, no re-creating users. If you&amp;rsquo;re on a newer Gitea than v1.22, upgrade within Gitea to a compatible point first, then cross over.&lt;/p>
&lt;p>The honest caveat: this is &lt;strong>effectively a one-way door&lt;/strong> now. Because Forgejo has diverged (and relicensed) since the hard fork, there&amp;rsquo;s no supported route to migrate a modern Forgejo instance &lt;em>back&lt;/em> to Gitea. That&amp;rsquo;s not a reason to avoid the move — it&amp;rsquo;s a reason to make the decision deliberately and keep a backup of your pre-migration state. If you&amp;rsquo;re running Gitea as part of a &lt;a href="https://techfuelhq.com/tutorials/docker-compose-starter-stack-homelab-2026/">Docker Compose homelab stack&lt;/a>, the swap is mostly a change of image and a data backup.&lt;/p>
&lt;h2 id="which-should-you-run">Which should you run?&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>New homelab or small-team forge, no existing instance →&lt;/strong> &lt;strong>Forgejo.&lt;/strong> You get the same lightweight experience plus non-profit governance, copyleft licensing, upgrade/accessibility testing, and the federation roadmap. It&amp;rsquo;s the lower-risk long-term bet for a project you don&amp;rsquo;t want a company to be able to close.&lt;/li>
&lt;li>&lt;strong>You specifically need Gitea&amp;rsquo;s commercial &amp;ldquo;Enterprise&amp;rdquo; features, or you&amp;rsquo;re building a product on top and want the permissive MIT license →&lt;/strong> &lt;strong>Gitea.&lt;/strong>&lt;/li>
&lt;li>&lt;strong>You already run a stable Gitea and nothing hurts →&lt;/strong> there&amp;rsquo;s no urgency. Gitea is still open and maintained. Migrate when you next do a major upgrade, or when a Forgejo feature (federation, an Actions improvement) actually pulls you.&lt;/li>
&lt;/ul>
&lt;p>Self-hosted Git is one of the highest-value things you can pull off SaaS — it&amp;rsquo;s a core piece of the &lt;a href="https://techfuelhq.com/articles/self-hosted-apps-replace-saas-2026/">self-hosted stack that replaces rented tools&lt;/a>, and it runs fine in a container next to everything else. Whichever you pick, you&amp;rsquo;re keeping your code on infrastructure you control, and deciding whether to run it in a &lt;a href="https://techfuelhq.com/articles/proxmox-vs-docker-2026/">container or a VM&lt;/a> is the next call.&lt;/p>
&lt;h2 id="the-honest-verdict">The honest verdict&lt;/h2>
&lt;p>In 2026 this is a &lt;strong>good-vs-good&lt;/strong> decision, not a rescue. Both Forgejo and Gitea are excellent, lightweight, genuinely open self-hosted Git forges, and either will serve a homelab well. The tiebreakers are about &lt;em>governance and direction&lt;/em>: Forgejo is the pick if you want a community-controlled, non-profit-governed project with copyleft protection and a federated future, and it&amp;rsquo;s my default recommendation for anyone starting fresh. Gitea remains the right call if you need its commercial features or the permissive MIT license, or if you&amp;rsquo;re simply happy where you are.&lt;/p>
&lt;p>One thing I won&amp;rsquo;t fake: &lt;strong>resource footprint.&lt;/strong> Because Forgejo and Gitea share a common Go codebase, their memory and CPU use are effectively identical — both idle in the low hundreds of megabytes and scale with your repo count and CI usage, not with the logo. Anyone quoting a dramatic footprint gap between the two is guessing; run whichever you choose and watch it on your own box.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>Forgejo — official comparison with Gitea (governance, license, federation, testing): &lt;a href="https://forgejo.org/compare-to-gitea/" rel="noopener">https://forgejo.org/compare-to-gitea/&lt;/a>&lt;/li>
&lt;li>Forgejo — Gitea migration guide (supported Gitea ≤ v1.22 → Forgejo v10 path): &lt;a href="https://forgejo.org/docs/v10.0/admin/gitea-migration/" rel="noopener">https://forgejo.org/docs/v10.0/admin/gitea-migration/&lt;/a>&lt;/li>
&lt;li>Forgejo relicenses to GPLv3+ (v9.0; rationale): &lt;a href="https://lwn.net/Articles/986998/" rel="noopener">LWN.net&lt;/a> · &lt;a href="https://forgejo.org/2024-02-forking-forward/" rel="noopener">https://forgejo.org/2024-02-forking-forward/&lt;/a>&lt;/li>
&lt;li>Forgejo becomes a hard fork of Gitea (governance record): &lt;a href="https://codeberg.org/forgejo/governance/issues/58" rel="noopener">https://codeberg.org/forgejo/governance/issues/58&lt;/a>&lt;/li>
&lt;li>Forgejo — Wikipedia (origin December 2022, Codeberg e.V.): &lt;a href="https://en.wikipedia.org/wiki/Forgejo" rel="noopener">https://en.wikipedia.org/wiki/Forgejo&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>How Much RAM Do You Need in 2026? Gaming, Work, and the Shortage</title><link>https://techfuelhq.com/articles/how-much-ram-do-you-need-2026/</link><pubDate>Sat, 04 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/how-much-ram-do-you-need-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-07-04 · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence which products get recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;img src="https://techfuelhq.com/images/articles/hero-how-much-ram-2026.svg" alt="How much RAM do you need in 2026: 16GB is the budget floor, 32GB is the new baseline for gaming and multitasking, and 64GB is for VMs, content creation, and local AI" width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;" />
&lt;p>The short answer for a new PC in 2026: &lt;strong>32GB is the baseline, 16GB is the budget floor, and 64GB is for specific heavy workloads&lt;/strong> - VMs, serious content creation, or local AI. That is the same conclusion Microsoft, PC Gamer, and most of the build community landed on this year. The honest complication is that a DRAM shortage has tripled RAM prices, so the real question is no longer &amp;ldquo;how much can I afford&amp;rdquo; - it is &amp;ldquo;how much do I actually need, so I do not overpay for capacity I will never use.&amp;rdquo;&lt;/p>
&lt;p>This guide answers that by use case, with the reasoning behind each number, so you can size RAM for your build instead of guessing. Here is the whole decision as a ladder — find the rung that matches what you actually do.&lt;/p>
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;padding:26px 22px 22px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;border-radius:8px;">
&lt;div style="text-align:center;margin-bottom:22px;">&lt;div style="font-size:18px;font-weight:600;letter-spacing:-0.3px;">The 2026 RAM ladder&lt;/div>&lt;div style="font-size:12px;color:#9a9ab5;margin-top:5px;">Buy for the rung you live on — not the one above it.&lt;/div>&lt;/div>
&lt;div style="max-width:560px;margin:0 auto;display:flex;flex-direction:column;gap:12px;">
&lt;div style="display:flex;align-items:stretch;gap:14px;background:rgba(229,160,13,0.08);border:1px solid rgba(229,160,13,0.28);border-radius:10px;padding:14px 16px;">
&lt;div style="flex:0 0 62px;text-align:center;">&lt;div style="font-size:24px;font-weight:800;color:#e0b050;line-height:1;">16&lt;span style="font-size:12px;">GB&lt;/span>&lt;/div>&lt;div style="font-size:9.5px;color:#8a8aa5;text-transform:uppercase;letter-spacing:0.06em;margin-top:4px;">Floor&lt;/div>&lt;/div>
&lt;div style="flex:1;border-left:1px solid rgba(255,255,255,0.06);padding-left:14px;">&lt;div style="font-size:13.5px;font-weight:600;color:#e8e8f0;">Office, web, streaming video, light use&lt;/div>&lt;div style="font-size:12px;color:#9a9ab5;margin-top:3px;">Still playable for esports and older games with a clean background. The budget-shortage choice, not the comfortable one.&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="display:flex;align-items:stretch;gap:14px;background:rgba(200,255,0,0.07);border:1.5px solid rgba(200,255,0,0.4);border-radius:10px;padding:16px;box-shadow:0 0 22px rgba(200,255,0,0.06);">
&lt;div style="flex:0 0 62px;text-align:center;">&lt;div style="font-size:28px;font-weight:800;color:#c8ff00;line-height:1;">32&lt;span style="font-size:13px;">GB&lt;/span>&lt;/div>&lt;div style="font-size:9.5px;color:#c8ff00;text-transform:uppercase;letter-spacing:0.06em;margin-top:4px;font-weight:600;">Baseline ★&lt;/div>&lt;/div>
&lt;div style="flex:1;border-left:1px solid rgba(200,255,0,0.15);padding-left:14px;">&lt;div style="font-size:13.5px;font-weight:700;color:#f4ffd0;">Gaming builds · gaming + streaming · heavy multitasking&lt;/div>&lt;div style="font-size:12px;color:#c8c8dc;margin-top:3px;">The 2026 default. Absorbs the OS, background apps, and modern engines without swapping — and smooths the 1% lows you actually feel. The tier worth paying for even in the shortage.&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="display:flex;align-items:stretch;gap:14px;background:rgba(80,144,224,0.07);border:1px solid rgba(80,144,224,0.28);border-radius:10px;padding:14px 16px;">
&lt;div style="flex:0 0 62px;text-align:center;">&lt;div style="font-size:24px;font-weight:800;color:#5090e0;line-height:1;">64&lt;span style="font-size:12px;">GB+&lt;/span>&lt;/div>&lt;div style="font-size:9.5px;color:#8a8aa5;text-transform:uppercase;letter-spacing:0.06em;margin-top:4px;">Specialist&lt;/div>&lt;/div>
&lt;div style="flex:1;border-left:1px solid rgba(255,255,255,0.06);padding-left:14px;">&lt;div style="font-size:13.5px;font-weight:600;color:#e8e8f0;">VMs · 4K video / big photo catalogs · local AI in system RAM&lt;/div>&lt;div style="font-size:12px;color:#9a9ab5;margin-top:3px;">Bought for a workload that genuinely pins &amp;gt;32GB — never for gaming, where it sits idle. Priciest and scarcest tier in the shortage.&lt;/div>&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="text-align:center;margin-top:16px;font-size:12px;color:#8a8aa5;">Gaming alone tops out its usefulness at &lt;strong style="color:#c8ff00;">32GB&lt;/strong>. Everything above is a non-gaming workload decision.&lt;/div>
&lt;div style="text-align:right;margin-top:10px;font-size:10px;color:#44445a;">techfuelhq.com · 2026&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="the-2026-baseline-and-why-it-moved">The 2026 baseline, and why it moved&lt;/h2>
&lt;p>For years the answer to &amp;ldquo;how much RAM do I need&amp;rdquo; was 16GB, and it was a comfortable answer. It stopped being comfortable in 2026 for three reasons that have nothing to do with raw frame rate:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Windows got hungrier.&lt;/strong> A clean Windows 11 install idles at roughly &lt;strong>3 to 4GB&lt;/strong> with nothing open, and in normal use - a browser, Discord, a few tray apps - the OS and background overhead commonly sit around &lt;strong>4 to 6GB&lt;/strong> before you launch a game.&lt;/li>
&lt;li>&lt;strong>Game engines got hungrier.&lt;/strong> Modern titles across every big engine now reserve well over 16GB at high settings. Testing outlets through 2026 have measured demanding releases such as &lt;em>Indiana Jones and the Great Circle&lt;/em> (id Tech 7) and &lt;em>Dragon Age: The Veilguard&lt;/em> (Frostbite) using comfortably past 16GB of system RAM at high settings and 1440p — and Unreal Engine 5 titles trend the same way.&lt;/li>
&lt;li>&lt;strong>The messaging caught up.&lt;/strong> In 2026 Microsoft published a Windows gaming support doc calling 16GB the &amp;ldquo;practical starting point&amp;rdquo; and 32GB the &amp;ldquo;no-worries&amp;rdquo; upgrade for anyone running Discord, a browser, or a stream alongside their games - then removed it within days after backlash that pushing 32GB during a price spike was tone-deaf (&lt;a href="https://www.windowslatest.com/2026/05/04/microsoft-deletes-windows-11-32gb-ram-recommendation-doc-for-gaming-after-outrage/" rel="noopener">Windows Latest&lt;/a>). The recommendation was sound; the timing collided with the shortage.&lt;/li>
&lt;/ul>
&lt;p>So the baseline moved to 32GB not because games suddenly need double the frame-rate memory, but because the &lt;em>headroom&lt;/em> math changed: subtract 4-6GB for the OS and 12-20GB for a modern game, and a 16GB machine is out of room while a 32GB machine still has slack. It is easier to see than to describe.&lt;/p>
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;padding:26px 22px 20px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;border-radius:8px;">
&lt;div style="text-align:center;margin-bottom:22px;">&lt;div style="font-size:18px;font-weight:600;letter-spacing:-0.3px;">Where your RAM actually goes&lt;/div>&lt;div style="font-size:12px;color:#9a9ab5;margin-top:5px;">Same load: Windows 11 + a modern game + Discord, a browser, and a stream (~21GB).&lt;/div>&lt;/div>
&lt;div style="overflow-x:auto;">&lt;div style="min-width:330px;max-width:360px;margin:0 auto;">
&lt;div style="display:flex;align-items:center;gap:10px;margin-bottom:18px;">
&lt;div style="flex:0 0 40px;font-size:14px;font-weight:800;color:#c8ff00;">32&lt;span style="font-size:10px;">GB&lt;/span>&lt;/div>
&lt;div style="display:flex;height:36px;width:320px;border-radius:6px;overflow:hidden;border:1px solid rgba(255,255,255,0.12);">
&lt;div style="width:50px;background:#3a3a55;display:flex;align-items:center;justify-content:center;font-size:9.5px;color:#c8c8dc;">OS&lt;/div>
&lt;div style="width:160px;background:#5090e0;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;color:#0a0a23;">Modern game&lt;/div>
&lt;div style="width:110px;background:rgba(93,202,122,0.4);display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:600;color:#8ff0aa;">Free · 11GB&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="display:flex;align-items:center;gap:10px;">
&lt;div style="flex:0 0 40px;font-size:14px;font-weight:800;color:#e0b050;">16&lt;span style="font-size:10px;">GB&lt;/span>&lt;/div>
&lt;div style="display:flex;height:36px;">
&lt;div style="display:flex;width:160px;border-radius:6px 0 0 6px;overflow:hidden;border:1px solid rgba(255,255,255,0.12);border-right:none;">
&lt;div style="width:50px;background:#3a3a55;display:flex;align-items:center;justify-content:center;font-size:9.5px;color:#c8c8dc;">OS&lt;/div>
&lt;div style="width:110px;background:#5090e0;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:600;color:#0a0a23;">Game&lt;/div>
&lt;/div>
&lt;div style="width:50px;height:36px;background:repeating-linear-gradient(45deg,#e0574a,#e0574a 5px,#b8382f 5px,#b8382f 10px);border-radius:0 6px 6px 0;display:flex;align-items:center;justify-content:center;font-size:8.5px;font-weight:700;color:#fff;text-align:center;line-height:1.1;">SSD&lt;br>swap&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:8px;font-size:10px;color:#e0574a;text-align:right;padding-right:2px;">&amp;#9650; over capacity &amp;rarr; stutter&lt;/div>
&lt;/div>&lt;/div>
&lt;div style="max-width:440px;margin:16px auto 0;font-size:12.5px;color:#c8c8dc;line-height:1.5;text-align:center;">The workload is identical. A &lt;strong style="color:#c8ff00;">32GB&lt;/strong> machine still has ~11GB of slack; a &lt;strong style="color:#e0b050;">16GB&lt;/strong> machine runs out and spills the overflow to the SSD — which you feel as micro-stutter and pop-in, not as a lower average FPS.&lt;/div>
&lt;div style="text-align:right;margin-top:10px;font-size:10px;color:#44445a;">techfuelhq.com · OS ~5GB, modern game ~16GB (figures from this guide)&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="how-much-ram-by-use-case">How much RAM by use case&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Use case&lt;/th>
&lt;th scope="col">Buy&lt;/th>
&lt;th scope="col">Why&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Office, web, streaming video, light use&lt;/td>
&lt;td>16GB&lt;/td>
&lt;td>Comfortable for everyday tasks and the OS overhead.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Gaming (new build, 2026)&lt;/td>
&lt;td>&lt;strong>32GB&lt;/strong>&lt;/td>
&lt;td>The baseline. Absorbs the OS, background apps, and modern engines without swapping.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Gaming + streaming / heavy multitasking&lt;/td>
&lt;td>32GB&lt;/td>
&lt;td>Streaming, a browser, and a game at once is exactly what fills 16GB.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Content creation (video, large photo catalogs)&lt;/td>
&lt;td>32-64GB&lt;/td>
&lt;td>Editors and large projects benefit past 32GB; 64GB for 4K timelines and big catalogs.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Virtual machines / homelab workstation&lt;/td>
&lt;td>64GB+&lt;/td>
&lt;td>Each VM reserves real RAM; a &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">homelab box&lt;/a> fills fast.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Local AI models in system RAM&lt;/td>
&lt;td>64-128GB&lt;/td>
&lt;td>Model weights live in RAM when they do not fit in VRAM.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The pattern: &lt;strong>gaming alone tops out its usefulness around 32GB&lt;/strong>, and everything above that is bought for a specific non-gaming workload, not for frames.&lt;/p>
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">The 32GB kit to buy&lt;/p>
&lt;p style="margin:0 0 0.6rem 0;">For a gaming or all-round build, a &lt;strong>32GB (2 × 16GB) DDR5-6000 CL30&lt;/strong> kit is the pick — the AM5 sweet spot that's also fine on Intel. Proven options on the AMD QVL:&lt;/p>
&lt;ul style="margin:0.25rem 0 0.5rem 0;padding-left:1.25rem;line-height:1.7;">
&lt;li>&lt;strong>G.Skill Flare X5 32GB DDR5-6000 CL30 EXPO&lt;/strong> — the AM5 default pick. &lt;a href="https://www.amazon.com/dp/B0C1TKSDKR?tag=techfuelhq-20" rel="nofollow sponsored">Check price on Amazon →&lt;/a>&lt;/li>
&lt;li>&lt;strong>Corsair Vengeance 32GB DDR5-6000&lt;/strong> — broad compatibility, RGB option. &lt;a href="https://www.amazon.com/dp/B0CJ8ZHMVF?tag=techfuelhq-20" rel="nofollow sponsored">Check price →&lt;/a>&lt;/li>
&lt;/ul>
&lt;p style="margin:0.5rem 0 0 0;font-size:0.9rem;color:#a0a0b8;">Prices move week to week in the 2026 RAM shortage, so check current pricing before buying. For 64GB, Intel-tuned kits, or the full breakdown, see the &lt;a href="https://techfuelhq.com/articles/ddr5-ram-buying-guide-2025/">DDR5 RAM buying guide&lt;/a>.&lt;/p>
&lt;/div>
&lt;h2 id="is-32gb-of-ram-enough">Is 32GB of RAM enough?&lt;/h2>
&lt;p>For almost everyone building or upgrading in 2026, yes. Gaming, everyday work, and heavy multitasking all sit comfortably inside 32GB, and it is the tier worth paying for even with the shortage inflating prices. The reason is headroom, not raw speed: after Windows 11 and background apps take their 4-6GB and a modern game reserves 12-20GB, a 32GB machine still has slack for Discord, a browser, and a stream at the same time - the exact load that pushes 16GB into swapping.&lt;/p>
&lt;p>It also holds up over time. Because 16GB became the floor game developers design around, system-RAM demand from new titles has crept up slowly rather than doubling, so &lt;strong>32GB should stay comfortable for gaming for years&lt;/strong>. What actually pushes people past 32GB is not newer games - it is a change in &lt;em>workload&lt;/em>: running several virtual machines, editing 4K video or large photo catalogs, or loading local AI models into system RAM. Those are the cases where 32GB stops being enough and 64GB earns its price (covered in the next section). If none of them describe you, 32GB is the ceiling worth buying - and the money above it is better spent on the &lt;a href="https://techfuelhq.com/gpu-reviews/">GPU&lt;/a> or a faster CPU.&lt;/p>
&lt;h2 id="is-16gb-enough-for-gaming-in-2026">Is 16GB enough for gaming in 2026?&lt;/h2>
&lt;p>It depends on what else is running. For pure gaming at 1080p in esports titles and older games, with a clean background, 16GB still plays fine. Two things break it:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Modern AAA, especially Unreal Engine 5.&lt;/strong> These engines reserve more system RAM than older ones. On 16GB the system fills up and starts swapping to the SSD, which shows up as texture pop-in, micro-stutter, and &amp;ldquo;alt-tab lag&amp;rdquo; - not as a lower average FPS.&lt;/li>
&lt;li>&lt;strong>Multitasking.&lt;/strong> Discord, a browser with tabs, a second monitor with a YouTube video, or a stream - each takes a bite, and on 16GB the game is competing for what is left.&lt;/li>
&lt;/ol>
&lt;p>This is the key nuance the benchmark headlines miss: &lt;strong>16GB and 32GB post similar &lt;em>average&lt;/em> FPS in most games, but 32GB has clearly better 1% and 0.1% lows&lt;/strong> - the frame-time consistency you actually feel. If you want to see how your specific CPU and GPU balance out at your resolution, the &lt;a href="https://techfuelhq.com/tools/pc-bottleneck-calculator/">PC Bottleneck Calculator&lt;/a> shows which part limits you first; RAM headroom is the quiet third factor underneath it.&lt;/p>
&lt;p>Bottom line: 16GB is enough to &lt;em>start&lt;/em>, and it is a defensible budget choice in the shortage. It is not the comfortable choice for a new 2026 build.&lt;/p>
&lt;h2 id="32gb-vs-64gb-where-more-stops-helping">32GB vs 64GB: where more stops helping&lt;/h2>
&lt;p>For gaming, 64GB shows essentially no benefit over 32GB - the extra capacity sits idle. 64GB earns its price only for workloads that genuinely reserve more than 32GB:&lt;/p>
&lt;ul>
&lt;li>Running several &lt;strong>virtual machines&lt;/strong> at once (a Proxmox or homelab workstation).&lt;/li>
&lt;li>&lt;strong>Video editing&lt;/strong> 4K timelines, or large &lt;strong>Lightroom / photo catalogs&lt;/strong>.&lt;/li>
&lt;li>&lt;strong>Compiling&lt;/strong> large codebases.&lt;/li>
&lt;li>Loading &lt;strong>local AI models&lt;/strong> into system RAM when they do not fit in GPU VRAM.&lt;/li>
&lt;/ul>
&lt;p>If none of those describe you, 32GB is the ceiling worth paying for. And in 2026 specifically, 64GB kits carry a disproportionate shortage premium and are frequently out of stock, so &amp;ldquo;buy 64GB to be safe&amp;rdquo; is the expensive mistake this year - buy it for a real workload, not a hunch.&lt;/p>
&lt;h2 id="the-part-nobody-wants-to-talk-about-the-price">The part nobody wants to talk about: the price&lt;/h2>
&lt;p>Sizing RAM in 2026 is really a budgeting decision, because a DRAM shortage - the same one raising &lt;a href="https://techfuelhq.com/articles/ram-ssd-price-crisis-2026/">hard-drive and SSD prices&lt;/a> - has pushed memory to roughly &lt;strong>three to four times&lt;/strong> its 2024-2025 lows. A 32GB DDR5-6000 kit that ran around $95-130 in early 2026 now sits closer to $420-480, and 64GB kits are scarcer and pricier still (verified pricing and specific kit picks are in the &lt;a href="https://techfuelhq.com/articles/ddr5-ram-buying-guide-2025/">DDR5 RAM buying guide&lt;/a>).&lt;/p>
&lt;p>That changes the advice in two practical ways:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Do not over-buy.&lt;/strong> The old &amp;ldquo;just get 64GB for future-proofing&amp;rdquo; logic doesn&amp;rsquo;t hold when 64GB costs what a GPU used to. Buy the tier your workload actually uses.&lt;/li>
&lt;li>&lt;strong>A staged 16-to-32 plan is legitimate.&lt;/strong> On a tight budget, a single 16GB stick now and a matching second stick later is a reasonable way to spread the cost - as long as you buy a board with a free slot and a kit you can match. (One caveat on AMD: four DIMMs can drop your stable memory speed, so prefer a 2x16GB kit over 4x8GB when you get to 32GB.)&lt;/li>
&lt;/ul>
&lt;p>If you are speccing a whole system around your RAM budget, the &lt;a href="https://techfuelhq.com/articles/gaming-pc-build-2026/">2026 gaming PC build guide&lt;/a> and the &lt;a href="https://techfuelhq.com/tools/pc-builder/">PC Builder&lt;/a> balance the memory decision against the CPU and GPU so you don&amp;rsquo;t starve the parts that move frame rates most.&lt;/p>
&lt;h2 id="the-verdict">The verdict&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Everyday / office use:&lt;/strong> 16GB is comfortable.&lt;/li>
&lt;li>&lt;strong>New gaming build in 2026:&lt;/strong> 32GB. It is the baseline for a reason - headroom for the OS, background apps, and modern engines, with far smoother 1% lows than 16GB.&lt;/li>
&lt;li>&lt;strong>Tight budget:&lt;/strong> 16GB now is defensible in the shortage; plan a matching second kit later and leave a slot open.&lt;/li>
&lt;li>&lt;strong>VMs, heavy content creation, local AI:&lt;/strong> 64GB, and only 96-128GB if a real workload pins it.&lt;/li>
&lt;li>&lt;strong>Gaming and nothing else:&lt;/strong> 64GB is overkill - the money is better spent on the &lt;a href="https://techfuelhq.com/gpu-reviews/">GPU&lt;/a> or a faster CPU.&lt;/li>
&lt;/ul>
&lt;p>The 2026 twist is cost, not capability. RAM is expensive right now, so the win is buying &lt;em>exactly&lt;/em> what your use case needs - which for most people building to game is 32GB, and for most people upgrading on a budget is a smart 16GB-to-32GB path - and putting the savings where you will actually feel them.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>Microsoft Windows gaming guidance (the 2026 &amp;ldquo;Gaming Features&amp;rdquo; support doc, later removed after backlash), as reported by &lt;a href="https://www.tomshardware.com/software/windows/microsoft-now-recommends-32gb-of-ram-as-the-future-proof-no-worries-config-for-gaming-16gb-becomes-the-new-practical-starting-point-during-the-ramageddon" rel="noopener">Tom&amp;rsquo;s Hardware&lt;/a>, &lt;a href="https://www.windowslatest.com/2026/05/01/microsoft-says-32gb-of-ram-is-the-no-worries-upgrade-for-windows-11-gaming/" rel="noopener">Windows Latest (recommendation)&lt;/a>, and &lt;a href="https://www.windowslatest.com/2026/05/04/microsoft-deletes-windows-11-32gb-ram-recommendation-doc-for-gaming-after-outrage/" rel="noopener">Windows Latest (removal)&lt;/a>.&lt;/li>
&lt;li>PC Gamer and TechSpot 2026 RAM testing (16GB vs 32GB average FPS vs 1% lows; UE5 memory use).&lt;/li>
&lt;li>First-party pricing and kit selection: the &lt;a href="https://techfuelhq.com/articles/ddr5-ram-buying-guide-2025/">TechFuelHQ DDR5 RAM buying guide&lt;/a> and &lt;a href="https://techfuelhq.com/articles/ram-ssd-price-crisis-2026/">2026 RAM &amp;amp; SSD price crisis&lt;/a>.&lt;/li>
&lt;/ul>
&lt;p>&lt;em>Guidance is for a US audience in mid-2026; RAM prices move week to week during the shortage - check current retailer pricing before buying. Found an error? Email &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a> with the article URL.&lt;/em>&lt;/p></description></item><item><title>How Much VRAM Do You Need in 2026? Is 8GB Still Enough?</title><link>https://techfuelhq.com/articles/how-much-vram-do-you-need-2026/</link><pubDate>Sat, 04 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/how-much-vram-do-you-need-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-07-04 · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/articles/hero-how-much-vram-2026.svg" alt="How much VRAM you need in 2026: 8GB for 1080p, 12GB for 1440p, 16GB for 4K - and what happens when a GPU runs out of VRAM" width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;" />
&lt;p>The short answer, by resolution: &lt;strong>8GB of VRAM for 1080p, 12GB for 1440p, 16GB for 4K.&lt;/strong> The endless &amp;ldquo;is 8GB enough&amp;rdquo; argument only makes sense once you attach a resolution to it - 8GB is genuinely fine at 1080p and genuinely a wall at 1440p Ultra. This guide gives the honest amount for your resolution, shows what actually breaks an 8GB card, and explains why running low on VRAM feels worse than the benchmark averages suggest.&lt;/p>
&lt;h2 id="vram-is-not-the-same-as-system-ram">VRAM is not the same as system RAM&lt;/h2>
&lt;p>Quick clarification, because the two get confused: &lt;strong>VRAM&lt;/strong> is the memory on your graphics card, used for textures, frame buffers, and shaders. &lt;strong>System RAM&lt;/strong> is separate - that&amp;rsquo;s the &lt;a href="https://techfuelhq.com/articles/how-much-ram-do-you-need-2026/">how much RAM you need&lt;/a> question. A GPU can be plenty fast and still stutter if it runs out of &lt;em>VRAM&lt;/em> specifically, because it then has to shuffle texture data over the slow PCIe bus to system memory. That&amp;rsquo;s the failure mode this whole debate is about.&lt;/p>
&lt;h2 id="how-much-vram-by-resolution-2026">How much VRAM by resolution (2026)&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Resolution&lt;/th>
&lt;th scope="col">Buy&lt;/th>
&lt;th scope="col">Notes&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>1080p&lt;/td>
&lt;td>&lt;strong>8GB&lt;/strong> (10-12GB for Ultra/RT)&lt;/td>
&lt;td>Fine for the large majority of games; a wall only in a few unoptimized titles + RT at Ultra.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>1440p&lt;/td>
&lt;td>&lt;strong>12GB minimum, 16GB comfortable&lt;/strong>&lt;/td>
&lt;td>The 2026 baseline. 8GB cards fill up at Ultra and stutter.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>4K&lt;/td>
&lt;td>&lt;strong>16GB minimum&lt;/strong> (24GB future-proof)&lt;/td>
&lt;td>High-res textures + frame buffer eat memory; RT open-world can approach/exceed 16GB.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>That ladder - 8/12/16 by resolution - is the consensus across 2026 testing outlets, and it maps to how memory use actually scales: the processor-side work is fixed, but every step up in resolution and texture detail costs VRAM.&lt;/p>
&lt;h2 id="what-actually-breaks-an-8gb-card">What actually breaks an 8GB card&lt;/h2>
&lt;p>8GB doesn&amp;rsquo;t fail everywhere - it fails in specific, predictable places. Multiple 2026 benchmark rundowns put several current AAA titles - Cyberpunk 2077, Monster Hunter Wilds, and Hogwarts Legacy among them - at or past &lt;strong>12GB&lt;/strong> of VRAM use at 1440p Ultra, and turning on full ray tracing on an 8GB card at 1440p tends to blow past the limit immediately (&lt;a href="https://wccftech.com/is-8-gb-of-vram-enough-heading-into-2026-sapphire-pulse-9060-xt-8gb-benchmarked/" rel="noopener">wccftech&lt;/a>). At 4K, AAA open-world games with ray tracing can approach or exceed 16GB.&lt;/p>
&lt;p>The pattern: &lt;strong>it&amp;rsquo;s textures and ray tracing that eat VRAM, not raw resolution alone.&lt;/strong> You can often keep an 8GB card happy at 1440p by dropping texture quality one notch and skipping ray tracing - but that&amp;rsquo;s exactly the compromise a 12GB or 16GB card lets you avoid.&lt;/p>
&lt;h2 id="why-running-out-of-vram-feels-worse-than-the-numbers">Why running out of VRAM feels worse than the numbers&lt;/h2>
&lt;p>This is the part benchmark headlines miss. When a card runs out of VRAM, it usually does &lt;strong>not&lt;/strong> just post a lower average FPS. Instead it swaps texture data over the slow PCIe bus, and you get:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Texture pop-in&lt;/strong> - surfaces load in blurry, then sharpen a beat later.&lt;/li>
&lt;li>&lt;strong>Stutter and frame-time spikes&lt;/strong> - sudden hitches even when the average looks fine.&lt;/li>
&lt;li>&lt;strong>Collapsing 1% lows&lt;/strong> - the smoothness metric craters while the average barely moves.&lt;/li>
&lt;/ul>
&lt;p>That&amp;rsquo;s why PC Gamer&amp;rsquo;s 2026 real-world testing found 8GB cards &amp;ldquo;still enough&amp;rdquo; on averages yet the 16GB versions &amp;ldquo;surprisingly faster&amp;rdquo; in practice (&lt;a href="https://www.pcgamer.com/hardware/graphics-cards/my-real-world-testing-shows-8-gb-gpus-are-still-enough-for-gaming-in-2026-but-im-surprised-at-just-how-much-faster-the-16-gb-versions-are/" rel="noopener">PC Gamer&lt;/a>) - the gap shows up in frame-time consistency, not the average. If you only read the average-FPS bar chart, you&amp;rsquo;ll underestimate how much VRAM matters. The &lt;a href="https://techfuelhq.com/tools/pc-bottleneck-calculator/">PC Bottleneck Calculator&lt;/a> helps you see where the GPU sits relative to your CPU; VRAM is the quiet third factor that a pure FPS number won&amp;rsquo;t show.&lt;/p>
&lt;h2 id="8gb-vs-16gb-bigger-gap-than-the-debate-suggests">8GB vs 16GB: bigger gap than the debate suggests&lt;/h2>
&lt;p>The &amp;ldquo;8GB is fine&amp;rdquo; and &amp;ldquo;8GB is dead&amp;rdquo; camps are both half right, and the honest read is in the middle: &lt;strong>8GB is fine for 1080p and a liability above it.&lt;/strong> Where people go wrong is treating it as a 1440p amount. In 2026, current 8GB cards like the RTX 5060 Ti 8GB and RX 9060 XT 8GB are strong 1080p performers but are the early casualties at 1440p with ray tracing or maxed textures. If you&amp;rsquo;re spending real money on a 1440p or 4K card, the VRAM number is not where to save - a fast GPU starved of VRAM spends its life stuttering. Size the whole card to your resolution; the &lt;a href="https://techfuelhq.com/tools/gpu-comparison/">GPU Comparison Tool&lt;/a> and the &lt;a href="https://techfuelhq.com/articles/best-gpu-4k-gaming-2026/">best GPUs for 4K gaming&lt;/a> guide put the raw performance next to the memory.&lt;/p>
&lt;p>Upscaling and frame generation change the picture slightly but don&amp;rsquo;t erase it - &lt;a href="https://techfuelhq.com/articles/dlss-vs-fsr-2026/">DLSS and FSR&lt;/a> render at a lower internal resolution, which trims VRAM use, while &lt;a href="https://techfuelhq.com/articles/frame-generation-explained-2026/">frame generation&lt;/a> actually adds a little memory overhead. Neither turns an 8GB card into a 1440p-Ultra card.&lt;/p>
&lt;h2 id="the-verdict">The verdict&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>1080p gaming:&lt;/strong> 8GB is enough for most games in 2026; 10-12GB if you want Ultra textures and ray tracing headroom.&lt;/li>
&lt;li>&lt;strong>1440p gaming:&lt;/strong> 12GB is the floor, 16GB is the target - do not buy an 8GB card for 1440p Ultra.&lt;/li>
&lt;li>&lt;strong>4K gaming:&lt;/strong> 16GB minimum, 24GB if you want future-proofing or heavy ray tracing.&lt;/li>
&lt;li>&lt;strong>The rule:&lt;/strong> match VRAM to resolution. A fast GPU with too little VRAM doesn&amp;rsquo;t run slower on average - it stutters, and that&amp;rsquo;s the worse experience.&lt;/li>
&lt;/ul>
&lt;p>VRAM is one of the few GPU specs where the marketing number genuinely matters, because the failure mode is invisible on an average-FPS chart and obvious the moment you play. Buy the amount your resolution needs, and put any savings toward a faster GPU core rather than shaving VRAM you&amp;rsquo;ll feel the lack of.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>8GB VRAM benchmarks and the 1440p ceiling: &lt;a href="https://wccftech.com/is-8-gb-of-vram-enough-heading-into-2026-sapphire-pulse-9060-xt-8gb-benchmarked/" rel="noopener">wccftech&lt;/a> (Sapphire Pulse 9060 XT 8GB testing; Hardware Unboxed podcast comments), &lt;a href="https://www.pcgamer.com/hardware/graphics-cards/my-real-world-testing-shows-8-gb-gpus-are-still-enough-for-gaming-in-2026-but-im-surprised-at-just-how-much-faster-the-16-gb-versions-are/" rel="noopener">PC Gamer&lt;/a> real-world 8GB vs 16GB testing.&lt;/li>
&lt;li>VRAM-by-resolution consensus (8/12/16): 2026 testing roundups including &lt;a href="https://tech4gamers.com/vram-in-2026-why-12gb-is-the-new-minimum-for-1440p/" rel="noopener">Tech4Gamers&lt;/a> on 12GB as the 1440p minimum.&lt;/li>
&lt;li>Related first-party guides: &lt;a href="https://techfuelhq.com/articles/how-much-ram-do-you-need-2026/">how much RAM you need&lt;/a>, &lt;a href="https://techfuelhq.com/articles/best-gpu-4k-gaming-2026/">best GPUs for 4K gaming&lt;/a>, and the &lt;a href="https://techfuelhq.com/tools/gpu-comparison/">GPU Comparison Tool&lt;/a>.&lt;/li>
&lt;/ul>
&lt;p>&lt;em>Guidance is for mid-2026; game VRAM demands keep rising, so treat these as floors, not ceilings. Found an error? Email &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a> with the article URL.&lt;/em>&lt;/p></description></item><item><title>How to Fix Monitor Ghosting (2026): Overdrive Done Right</title><link>https://techfuelhq.com/articles/how-to-fix-monitor-ghosting-2026/</link><pubDate>Sat, 04 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/how-to-fix-monitor-ghosting-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-07-04 · ~8 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence what gets recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;p>The most common advice for monitor ghosting — &amp;ldquo;buy a new cable&amp;rdquo; — is usually wrong. Ghosting is not a cable problem. It&amp;rsquo;s a &lt;strong>pixel response-time&lt;/strong> problem happening inside the panel, and the real fix is one setting most people either never touch or turn up too far. This guide explains what ghosting actually is, how to find your monitor&amp;rsquo;s overdrive sweet spot without creating the &lt;em>worse&lt;/em> problem (inverse ghosting), and which kinds of ghosting genuinely can&amp;rsquo;t be fixed.&lt;/p>
&lt;h2 id="what-monitor-ghosting-actually-is">What monitor ghosting actually is&lt;/h2>
&lt;p>Ghosting is a faint trail or duplicate that follows moving objects across the screen. It happens because the monitor&amp;rsquo;s pixels change color too slowly: the next frame arrives before the previous pixel transition has finished, so you briefly see the old image fading behind the new one.&lt;/p>
&lt;p>The spec that governs this is &lt;strong>gray-to-gray (GtG) response time&lt;/strong> — how long a pixel takes to change from one shade to another, measured in milliseconds. Lower is better. Ghosting shows up whenever GtG is slower than the time between frames. And here&amp;rsquo;s the part that trips people up: &lt;strong>refresh rate and response time are different things.&lt;/strong> A 144Hz monitor refreshes every 6.9ms and a 240Hz one every 4.2ms, but if the panel&amp;rsquo;s pixels take longer than that to switch, you&amp;rsquo;ll still get trails. A high refresh rate does not guarantee fast pixels.&lt;/p>
&lt;p>The quickest way to confirm you actually have ghosting is the &lt;a href="https://testufo.com/" rel="noopener">Blur Busters UFO test&lt;/a> — the same free tool monitor reviewers use. A UFO slides across the screen; a faint UFO trailing behind it is ghosting.&lt;/p>
&lt;h2 id="fix-1-set-overdrive-correctly-the-sweet-spot-not-the-max">Fix #1: Set overdrive correctly (the sweet spot, not the max)&lt;/h2>
&lt;p>This is the fix that solves most ghosting, and it&amp;rsquo;s already built into your monitor. &lt;strong>Overdrive&lt;/strong> applies extra voltage to force pixels to switch faster, shrinking the response time so transitions fit inside the frame window. Depending on the brand, it&amp;rsquo;s in your monitor&amp;rsquo;s on-screen display (OSD) menu under one of these names:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Overdrive&lt;/strong> (generic)&lt;/li>
&lt;li>&lt;strong>Response Time&lt;/strong> (Samsung, many others)&lt;/li>
&lt;li>&lt;strong>OD&lt;/strong> (short form)&lt;/li>
&lt;li>&lt;strong>Trace Free&lt;/strong> (ASUS)&lt;/li>
&lt;li>&lt;strong>Overshoot / AMA&lt;/strong> (some BenQ/Acer)&lt;/li>
&lt;/ul>
&lt;p>The mistake almost everyone makes is setting it to maximum. Too much overdrive causes &lt;strong>inverse ghosting&lt;/strong> (overshoot): instead of lagging behind the target shade, the pixel &lt;em>overshoots&lt;/em> it and settles back, leaving a bright halo, a dark outline, or a purple &amp;ldquo;corona&amp;rdquo; around moving objects. That looks worse than the ghosting you started with.&lt;/p>
&lt;p>&lt;strong>How to find your sweet spot:&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>Open the &lt;a href="https://testufo.com/" rel="noopener">testufo.com&lt;/a> UFO test in your browser at your monitor&amp;rsquo;s native refresh rate.&lt;/li>
&lt;li>Open your monitor&amp;rsquo;s OSD and find the overdrive setting.&lt;/li>
&lt;li>Cycle through the levels one at a time — Off → Low/Normal → Medium → High — watching the UFO after each change.&lt;/li>
&lt;li>Pick the &lt;strong>highest level that still has clean trails with no bright/dark overshoot halo&lt;/strong> leading or following the UFO.&lt;/li>
&lt;/ol>
&lt;p>On most monitors the correct answer is the &lt;strong>middle setting&lt;/strong>, not the top one. The maximum is there for marketing, not for you.&lt;/p>
&lt;h2 id="fix-2-run-your-native-refresh-rate">Fix #2: Run your native refresh rate&lt;/h2>
&lt;p>If your monitor isn&amp;rsquo;t actually running at its advertised refresh rate, motion looks worse and ghosting is more noticeable. Windows often defaults a new display to 60Hz.&lt;/p>
&lt;p>Go to &lt;strong>Settings → System → Display → Advanced display&lt;/strong>, and set &lt;strong>Choose a refresh rate&lt;/strong> to the highest value your monitor supports. If your top refresh rate isn&amp;rsquo;t listed, you&amp;rsquo;re likely bandwidth-limited by your cable or port (more on that below). Running at native refresh gives the panel the shortest frame window and lets a correct overdrive setting do its job. This is also the foundation for &lt;a href="https://techfuelhq.com/articles/fix-screen-tearing-2026/">fixing screen tearing&lt;/a>, which is a related but separate motion problem.&lt;/p>
&lt;h2 id="fix-3-rule-out-in-game-motion-blur-its-not-really-ghosting">Fix #3: Rule out in-game motion blur (it&amp;rsquo;s not really ghosting)&lt;/h2>
&lt;p>If you only see &amp;ldquo;ghosting&amp;rdquo; inside games and not on your desktop, it may not be your monitor at all. Many games ship with a &lt;strong>Motion Blur&lt;/strong> effect enabled on purpose, and it&amp;rsquo;s easy to mistake for panel ghosting. Open the game&amp;rsquo;s video/graphics settings and turn &lt;strong>Motion Blur&lt;/strong> off (and &lt;strong>Film Grain&lt;/strong> while you&amp;rsquo;re there). If the trailing disappears, it was a software effect, not your hardware — no monitor tweaking needed.&lt;/p>
&lt;h2 id="fix-4-know-your-panel-type-va-black-smear-cant-be-fully-fixed">Fix #4: Know your panel type (VA &amp;ldquo;black smear&amp;rdquo; can&amp;rsquo;t be fully fixed)&lt;/h2>
&lt;p>Not all ghosting is fixable, and it&amp;rsquo;s important to be honest about that. If you have a &lt;strong>VA (Vertical Alignment)&lt;/strong> panel, you&amp;rsquo;ll likely see &lt;strong>black smearing&lt;/strong> — a dark trailing smear behind objects moving over dark backgrounds. This is an inherent characteristic of how VA pixels transition in dark scenes, and overdrive only partly helps. You can lessen it by nudging &lt;strong>brightness&lt;/strong> and &lt;strong>gamma&lt;/strong> up slightly in the OSD, but you can&amp;rsquo;t eliminate it the way you can on an IPS or OLED panel.&lt;/p>
&lt;p>If dark-scene smearing genuinely bothers you and you game in a dark room, the fix isn&amp;rsquo;t a setting — it&amp;rsquo;s a different panel technology. IPS ghosts far less, and OLED effectively has none. If you&amp;rsquo;re weighing an upgrade, our guide on &lt;a href="https://techfuelhq.com/articles/oled-tv-as-pc-monitor-2026/">using an OLED as a PC monitor&lt;/a> covers the motion-clarity trade-offs, and the &lt;a href="https://techfuelhq.com/articles/1440p-vs-4k-gaming-2026/">1440p vs 4K gaming breakdown&lt;/a> helps you match the panel to the GPU you actually have.&lt;/p>
&lt;h2 id="the-cable-question--answered-honestly">The cable question — answered honestly&lt;/h2>
&lt;p>You&amp;rsquo;ll see &amp;ldquo;replace your cable&amp;rdquo; as the top fix everywhere. For &lt;strong>true ghosting, a cable won&amp;rsquo;t help&lt;/strong> — ghosting is a response-time problem inside the panel, full stop.&lt;/p>
&lt;p>Where a cable &lt;em>does&lt;/em> matter is a different symptom that gets confused with ghosting: &lt;strong>signal artifacts.&lt;/strong> A failing, damaged, or under-spec cable can cause random sparkles, brief black flashes, or your monitor silently dropping to a lower refresh rate — and a monitor stuck at 60Hz when it should run 144Hz will look far worse in motion. If the artifact is instead steady vertical or horizontal &lt;a href="https://techfuelhq.com/articles/lines-on-monitor-screen-2026/">lines on the screen&lt;/a>, the monitor&amp;rsquo;s own OSD menu settles the cable-versus-panel question in one press. If you see those symptoms, or your native refresh rate won&amp;rsquo;t appear in Windows, then ruling out the cable is worthwhile: a properly rated &lt;a href="https://www.amazon.com/s?k=VESA+certified+DisplayPort+2.1+cable&amp;tag=techfuelhq-20" rel="nofollow sponsored noopener" target="_blank">VESA-certified DisplayPort cable&lt;/a> or an &lt;a href="https://www.amazon.com/s?k=ultra+high+speed+HDMI+2.1+cable&amp;tag=techfuelhq-20" rel="nofollow sponsored noopener" target="_blank">Ultra High Speed HDMI 2.1 cable&lt;/a> guarantees the bandwidth for high-refresh signals. But do this to fix &lt;em>signal artifacts or a capped refresh rate&lt;/em>, not trailing-behind-motion ghosting — for that, go back to overdrive.&lt;/p>
&lt;h2 id="the-fix-ladder">The fix ladder&lt;/h2>
&lt;p>In order, this is how to kill monitor ghosting:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Confirm it&amp;rsquo;s ghosting&lt;/strong> with the &lt;a href="https://testufo.com/" rel="noopener">testufo.com&lt;/a> UFO test (trailing = ghosting; leading halo = too much overdrive).&lt;/li>
&lt;li>&lt;strong>Set overdrive to the sweet spot&lt;/strong> — the highest level with no overshoot halo, usually the middle option.&lt;/li>
&lt;li>&lt;strong>Run your native refresh rate&lt;/strong> in Windows display settings.&lt;/li>
&lt;li>&lt;strong>Turn off in-game Motion Blur&lt;/strong> if you only see it in games.&lt;/li>
&lt;li>&lt;strong>Accept VA black smear&lt;/strong> as inherent, or move to IPS/OLED if it bothers you.&lt;/li>
&lt;li>&lt;strong>Only then consider the cable&lt;/strong>, and only if you also have signal artifacts or a capped refresh rate.&lt;/li>
&lt;/ol>
&lt;p>Most people fix ghosting entirely at step 2. It&amp;rsquo;s a five-minute setting, not a hardware purchase — which is exactly why &amp;ldquo;buy a new cable&amp;rdquo; is such bad first advice.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>Pixel overdrive, response time, and inverse ghosting/overshoot mechanics: &lt;a href="https://us.ktcplay.com/blogs/technology-hub/pixel-overdrive-inverse-ghosting-guide" rel="noopener">KTC — Pixel Overdrive &amp;amp; Inverse Ghosting&lt;/a> and &lt;a href="https://www.howtogeek.com/what-is-inverse-ghosting-and-how-do-i-get-rid-of-it/" rel="noopener">How-To Geek — What Is Inverse Ghosting&lt;/a>&lt;/li>
&lt;li>Gray-to-gray (GtG) response time vs. refresh rate, and ghosting causes: &lt;a href="https://www.howtogeek.com/858707/what-is-monitor-ghosting/" rel="noopener">How-To Geek — What Is Monitor Ghosting&lt;/a> and &lt;a href="https://www.corsair.com/us/en/explorer/gamer/monitors/what-is-monitor-ghosting-and-how-to-fix-it/" rel="noopener">Corsair — What is monitor ghosting and how to fix it&lt;/a>&lt;/li>
&lt;li>Motion/ghosting test tool: &lt;a href="https://testufo.com/" rel="noopener">Blur Busters UFO Test (testufo.com)&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>&lt;em>Figures and behavior described are general to LCD (IPS/VA/TN) monitors in 2026; your exact overdrive labels and levels vary by brand. Found an error? Email &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a> with the article URL.&lt;/em>&lt;/p></description></item><item><title>Monitor Keeps Going Black? Fix the Random Blackouts (2026)</title><link>https://techfuelhq.com/articles/monitor-keeps-going-black-2026/</link><pubDate>Sat, 04 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/monitor-keeps-going-black-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-07-04 · ~9 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence what gets recommended - see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;p>A monitor that keeps cutting to black - usually for a second or two, then recovering - is one of the most common and most misdiagnosed PC problems. People assume the monitor is dying and start shopping for a new one, when the actual cause is almost always a cable, a driver, or a power setting. The good news is that you already have the single most useful clue and probably haven&amp;rsquo;t used it: &lt;strong>the &lt;em>rhythm&lt;/em> of the blackout - how it drops and how it comes back - tells you which of five very different faults you&amp;rsquo;re looking at.&lt;/strong> Read the rhythm first, and you fix it at the cheapest step instead of replacing hardware that&amp;rsquo;s fine.&lt;/p>
&lt;!-- ========== SIGNATURE VISUAL A: OSCILLOSCOPE TIMING DIAGRAM (the blackout's rhythm) ========== -->
&lt;div class="visual-block">
&lt;div style="background:#060b0e;border:1px solid rgba(94,234,212,0.16);border-radius:10px;padding:24px 20px 18px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
&lt;div style="margin-bottom:14px;">
&lt;div style="display:flex;align-items:center;gap:9px;">
&lt;span style="width:8px;height:8px;border-radius:50%;background:#5eead4;box-shadow:0 0 8px #5eead4;">&lt;/span>
&lt;div style="font-size:19px;font-weight:700;color:#e9f6f2;letter-spacing:-0.3px;">Read the blackout's rhythm&lt;/div>
&lt;/div>
&lt;div style="font-size:12.5px;color:#8aa39c;margin-top:6px;line-height:1.5;">Think of the video signal as a trace on a scope: &lt;span style="color:#cfe7e0;">up&lt;/span> is a live picture, the dotted floor is black. &lt;em>How&lt;/em> it drops and whether it climbs back names the fault - before you touch a cable.&lt;/div>
&lt;/div>
&lt;div style="display:flex;flex-direction:column;gap:13px;">
&lt;div style="display:flex;flex-wrap:wrap;align-items:center;gap:12px;min-width:0;">
&lt;div style="flex:1.15;min-width:180px;">
&lt;svg viewBox="0 0 320 64" width="100%" style="display:block;background:repeating-linear-gradient(90deg,transparent 0 39px,rgba(94,234,212,0.06) 39px 40px),repeating-linear-gradient(0deg,transparent 0 15px,rgba(94,234,212,0.05) 15px 16px);border-radius:5px;">
&lt;line x1="0" y1="50" x2="320" y2="50" stroke="rgba(255,255,255,0.18)" stroke-width="1" stroke-dasharray="2 4"/>
&lt;polyline points="0,16 70,16 76,50 82,16 170,16 176,50 182,16 320,16" fill="none" stroke="#5eead4" stroke-width="6" opacity="0.18" stroke-linejoin="round"/>
&lt;polyline points="0,16 70,16 76,50 82,16 170,16 176,50 182,16 320,16" fill="none" stroke="#5eead4" stroke-width="2.4" stroke-linejoin="round"/>
&lt;/svg>
&lt;/div>
&lt;div style="flex:1;min-width:180px;">
&lt;div style="font-size:13px;font-weight:700;color:#eaf6f2;">Flickers, then recovers&lt;/div>
&lt;div style="font-size:11.5px;color:#93aca5;line-height:1.5;margin-top:3px;">A signal &lt;strong style="color:#5eead4;">dropout&lt;/strong>: a cable that can't hold your res/refresh, a driver crash-and-recover (TDR), or PCIe link power. &lt;span style="color:#cfe7e0;">Steps 1-3.&lt;/span>&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;align-items:center;gap:12px;min-width:0;">
&lt;div style="flex:1.15;min-width:180px;">
&lt;svg viewBox="0 0 320 64" width="100%" style="display:block;background:repeating-linear-gradient(90deg,transparent 0 39px,rgba(94,234,212,0.06) 39px 40px),repeating-linear-gradient(0deg,transparent 0 15px,rgba(94,234,212,0.05) 15px 16px);border-radius:5px;">
&lt;line x1="0" y1="50" x2="320" y2="50" stroke="rgba(255,255,255,0.18)" stroke-width="1" stroke-dasharray="2 4"/>
&lt;polyline points="0,16 165,16 173,50 320,50" fill="none" stroke="#f6a94a" stroke-width="6" opacity="0.18" stroke-linejoin="round"/>
&lt;polyline points="0,16 165,16 173,50 320,50" fill="none" stroke="#f6a94a" stroke-width="2.4" stroke-linejoin="round"/>
&lt;/svg>
&lt;/div>
&lt;div style="flex:1;min-width:180px;">
&lt;div style="font-size:13px;font-weight:700;color:#eaf6f2;">Drops and stays black&lt;/div>
&lt;div style="font-size:11.5px;color:#93aca5;line-height:1.5;margin-top:3px;">A &lt;strong style="color:#f6a94a;">hard fault&lt;/strong> that needs a reboot or power-cycle to clear: heat, a loose GPU, or power delivery. &lt;span style="color:#cfe7e0;">Step 4.&lt;/span>&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;align-items:center;gap:12px;min-width:0;">
&lt;div style="flex:1.15;min-width:180px;">
&lt;svg viewBox="0 0 320 64" width="100%" style="display:block;background:repeating-linear-gradient(90deg,transparent 0 39px,rgba(94,234,212,0.06) 39px 40px),repeating-linear-gradient(0deg,transparent 0 15px,rgba(94,234,212,0.05) 15px 16px);border-radius:5px;">
&lt;rect x="150" y="0" width="170" height="64" fill="rgba(107,182,255,0.10)"/>
&lt;text x="156" y="12" font-family="ui-monospace,monospace" font-size="8" fill="#6bb6ff" letter-spacing="0.5">LOAD&lt;/text>
&lt;line x1="0" y1="50" x2="320" y2="50" stroke="rgba(255,255,255,0.18)" stroke-width="1" stroke-dasharray="2 4"/>
&lt;polyline points="0,16 210,16 218,50 320,50" fill="none" stroke="#6bb6ff" stroke-width="6" opacity="0.18" stroke-linejoin="round"/>
&lt;polyline points="0,16 210,16 218,50 320,50" fill="none" stroke="#6bb6ff" stroke-width="2.4" stroke-linejoin="round"/>
&lt;/svg>
&lt;/div>
&lt;div style="flex:1;min-width:180px;">
&lt;div style="font-size:13px;font-weight:700;color:#eaf6f2;">Fine at idle, drops under load&lt;/div>
&lt;div style="font-size:11.5px;color:#93aca5;line-height:1.5;margin-top:3px;">Not the cable - it's &lt;strong style="color:#6bb6ff;">heat, power stability, or VRR&lt;/strong> flicker that only shows when games push the GPU. &lt;span style="color:#cfe7e0;">Step 4 + the VRR check.&lt;/span>&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:15px;padding-top:12px;border-top:1px solid rgba(94,234,212,0.10);font-size:11px;color:#7f968f;line-height:1.5;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;">
&lt;span>A fourth rhythm - &lt;strong style="color:#cbe0da;">only black coming back from sleep&lt;/strong> - isn't on the scope because it's not random: that's DisplayPort's hot-plug behavior. &lt;a href="#after-sleep" style="color:#5eead4;">Jump to it.&lt;/a>&lt;/span>
&lt;span style="font-family:ui-monospace,monospace;font-size:10px;color:#4f6a63;">time &amp;#8594;&amp;nbsp;&amp;nbsp;techfuelhq.com&lt;/span>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="first-read-the-symptom">First, read the symptom&lt;/h2>
&lt;p>The scope trace above, in words - the exact behavior tells you where to look:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Goes black and recovers on its own&lt;/strong> (a flicker to black, then the picture returns) → a signal or driver dropout. Cable, driver, or power settings. Start at step 1.&lt;/li>
&lt;li>&lt;strong>Goes black and stays black&lt;/strong> until you reboot or power-cycle → a harder fault. More likely overheating, an unstable overclock, a loose GPU, or power delivery. Jump to step 4.&lt;/li>
&lt;li>&lt;strong>Only goes black in games / under load&lt;/strong> → heat, power stability, or VRR flicker, not the cable. Go to step 4, and check the &lt;a href="#vrr-flicker">VRR section&lt;/a>.&lt;/li>
&lt;li>&lt;strong>Only goes black waking from sleep&lt;/strong> → DisplayPort hot-plug behavior, not a dying monitor. See &lt;a href="#after-sleep">the after-sleep section&lt;/a>.&lt;/li>
&lt;li>&lt;strong>Never displayed at all&lt;/strong> (black from the moment you power on, and it never showed a picture this session) → that&amp;rsquo;s not an intermittent-blackout problem, it&amp;rsquo;s a no-POST one. See &lt;a href="https://techfuelhq.com/articles/pc-turns-on-but-no-display-2026/">PC turns on but no display&lt;/a> instead.&lt;/li>
&lt;/ul>
&lt;h2 id="step-1-the-cable-the-1-cause-of-intermittent-blackouts">Step 1: The cable (the #1 cause of intermittent blackouts)&lt;/h2>
&lt;p>Most &amp;ldquo;keeps going black&amp;rdquo; cases are a video cable that can&amp;rsquo;t reliably carry your signal - and it gets worse the higher your resolution and refresh rate. There&amp;rsquo;s a real physics reason for that, and it&amp;rsquo;s worth seeing, because it explains why a cable that &amp;ldquo;works&amp;rdquo; can still cut to black at 144Hz or 4K.&lt;/p>
&lt;!-- ========== SIGNATURE VISUAL B: BANDWIDTH HEADROOM METER (why a cable drops at high res/refresh) ========== -->
&lt;div class="visual-block">
&lt;div style="background:#081016;border:1px solid rgba(107,182,255,0.16);border-radius:10px;padding:24px 20px 18px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
&lt;div style="margin-bottom:16px;">
&lt;div style="font-size:19px;font-weight:700;color:#eaf1f9;letter-spacing:-0.3px;">Why a cable drops to black at 1440p or 4K&lt;/div>
&lt;div style="font-size:12.5px;color:#93a3b6;margin-top:6px;line-height:1.5;">The more resolution and refresh you ask for, the more raw bandwidth the signal needs. A cable rated below it - or a marginal, damaged, or uncertified one - passes a basic picture but &lt;strong style="color:#e8edf5;">cuts to black exactly at the top&lt;/strong>. Bars are approximate uncompressed 8-bit data rates; the dashed lines are what each connector standard can carry.&lt;/div>
&lt;/div>
&lt;div style="overflow-x:auto;">
&lt;div style="min-width:340px;position:relative;">
&lt;!-- ceiling markers (full-height dashed lines behind the bars) -->
&lt;div style="position:absolute;top:20px;bottom:22px;left:18%;border-left:1px dashed rgba(246,169,74,0.55);">&lt;/div>
&lt;div style="position:absolute;top:20px;bottom:22px;left:32.4%;border-left:1px dashed rgba(246,169,74,0.55);">&lt;/div>
&lt;div style="position:absolute;top:20px;bottom:22px;left:53.25%;border-left:1px dashed rgba(107,182,255,0.55);">&lt;/div>
&lt;div style="position:absolute;top:20px;bottom:22px;left:96.75%;border-left:1px dashed rgba(126,224,160,0.55);">&lt;/div>
&lt;!-- ceiling labels -->
&lt;div style="position:relative;height:18px;font-family:ui-monospace,monospace;font-size:8.5px;font-weight:700;letter-spacing:0.2px;">
&lt;span style="position:absolute;left:18%;transform:translateX(-50%);color:#f6a94a;">HDMI 2.0&lt;/span>
&lt;span style="position:absolute;left:32.4%;transform:translateX(-50%);color:#f6a94a;">DP 1.4&lt;/span>
&lt;span style="position:absolute;left:53.25%;transform:translateX(-50%);color:#6bb6ff;">HDMI 2.1&lt;/span>
&lt;span style="position:absolute;left:96.75%;transform:translateX(-100%);color:#7ee0a0;text-align:right;padding-right:5px;">DP 2.1&lt;/span>
&lt;/div>
&lt;!-- signal rows -->
&lt;div style="display:flex;flex-direction:column;gap:10px;">
&lt;div style="display:flex;align-items:center;gap:10px;">
&lt;div style="width:104px;flex-shrink:0;font-size:11.5px;color:#dfe7f2;font-weight:600;">1080p @ 60Hz&lt;/div>
&lt;div style="flex:1;height:18px;background:rgba(255,255,255,0.04);border-radius:3px;overflow:hidden;">&lt;div style="width:4%;height:100%;background:linear-gradient(90deg,#5fd39a,#7ee0a0);">&lt;/div>&lt;/div>
&lt;div style="width:66px;flex-shrink:0;font-family:ui-monospace,monospace;font-size:10px;color:#8aa0b6;text-align:right;">~3 Gbps&lt;/div>
&lt;/div>
&lt;div style="display:flex;align-items:center;gap:10px;">
&lt;div style="width:104px;flex-shrink:0;font-size:11.5px;color:#dfe7f2;font-weight:600;">1440p @ 144Hz&lt;/div>
&lt;div style="flex:1;height:18px;background:rgba(255,255,255,0.04);border-radius:3px;overflow:hidden;">&lt;div style="width:17.6%;height:100%;background:linear-gradient(90deg,#c9a24a,#f6c65a);">&lt;/div>&lt;/div>
&lt;div style="width:66px;flex-shrink:0;font-family:ui-monospace,monospace;font-size:10px;color:#8aa0b6;text-align:right;">~14 Gbps&lt;/div>
&lt;/div>
&lt;div style="display:flex;align-items:center;gap:10px;">
&lt;div style="width:104px;flex-shrink:0;font-size:11.5px;color:#dfe7f2;font-weight:600;">4K @ 120Hz&lt;/div>
&lt;div style="flex:1;height:18px;background:rgba(255,255,255,0.04);border-radius:3px;overflow:hidden;">&lt;div style="width:32%;height:100%;background:linear-gradient(90deg,#d78a45,#f6a94a);">&lt;/div>&lt;/div>
&lt;div style="width:66px;flex-shrink:0;font-family:ui-monospace,monospace;font-size:10px;color:#8aa0b6;text-align:right;">~26 Gbps&lt;/div>
&lt;/div>
&lt;div style="display:flex;align-items:center;gap:10px;">
&lt;div style="width:104px;flex-shrink:0;font-size:11.5px;color:#dfe7f2;font-weight:600;">4K @ 240Hz&lt;/div>
&lt;div style="flex:1;height:18px;background:rgba(255,255,255,0.04);border-radius:3px;overflow:hidden;">&lt;div style="width:65%;height:100%;background:linear-gradient(90deg,#e0563a,#ff7a5c);">&lt;/div>&lt;/div>
&lt;div style="width:66px;flex-shrink:0;font-family:ui-monospace,monospace;font-size:10px;color:#8aa0b6;text-align:right;">~52 Gbps&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:15px;padding-top:12px;border-top:1px solid rgba(107,182,255,0.10);font-size:11px;color:#7c8ea3;line-height:1.55;">
&lt;strong style="color:#cbd7e6;">Read it like this:&lt;/strong> 1440p144 sits right on HDMI 2.0's ceiling and 4K120 right on DisplayPort 1.4's — the [DisplayPort/HDMI bandwidth calculator](/tools/displayport-hdmi-bandwidth-calculator/) shows whether your resolution and refresh actually fit your cable and port — so a slightly-too-weak or damaged cable that's fine on the desktop drops out the instant you hit those. (DSC - Display Stream Compression - squeezes these down roughly 3:1, which is how a DP 1.4 cable does 4K144 at all; a marginal cable is exactly what fails to hold it.) The fix is almost never a new monitor - it's a properly rated cable.
&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>A marginal cable will pass a basic signal fine but drop out at 144Hz or 4K, cutting the screen to black while it re-syncs.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Reseat both ends&lt;/strong> of the HDMI or DisplayPort cable until they click. DisplayPort especially seats loosely and works its way out.&lt;/li>
&lt;li>&lt;strong>Swap the cable.&lt;/strong> This is the single highest-yield fix. Use a properly rated &lt;a href="https://www.amazon.com/s?k=VESA+certified+DisplayPort+2.1+cable&amp;tag=techfuelhq-20" rel="nofollow sponsored noopener" target="_blank">VESA-certified DisplayPort cable&lt;/a> or an &lt;a href="https://www.amazon.com/s?k=ultra+high+speed+HDMI+2.1+cable&amp;tag=techfuelhq-20" rel="nofollow sponsored noopener" target="_blank">Ultra High Speed HDMI 2.1 cable&lt;/a> that&amp;rsquo;s rated for your resolution and refresh - a cheap or damaged cable is the most common reason a screen blacks out intermittently, and the meter above is why.&lt;/li>
&lt;li>&lt;strong>Try a different port&lt;/strong> on your graphics card, and make sure the cable is in the &lt;strong>graphics card&lt;/strong>, not the motherboard. If you&amp;rsquo;re troubleshooting a display Windows doesn&amp;rsquo;t even list, see &lt;a href="https://techfuelhq.com/articles/second-monitor-not-detected-2026/">second monitor not detected&lt;/a>.&lt;/li>
&lt;/ul>
&lt;h2 id="step-2-recover-it-instantly-then-fix-the-driver">Step 2: Recover it instantly, then fix the driver&lt;/h2>
&lt;p>When the screen is black but the PC is clearly still running, press &lt;strong>Windows Key + Ctrl + Shift + B&lt;/strong>. This restarts the graphics driver on the spot - a brief black screen and a beep, then the picture returns. If that reliably brings it back, your problem is driver- or link-related, not a dead cable.&lt;/p>
&lt;p>A blackout-and-recover is often a &lt;strong>driver crash-and-recover&lt;/strong> (Windows calls this a TDR - the display driver stops responding, Windows resets it, and the screen returns after a second). It&amp;rsquo;s the exact behavior the Tom&amp;rsquo;s Hardware forums describe for this symptom, and the fix is a clean driver install:&lt;/p>
&lt;ol>
&lt;li>Download the latest driver from NVIDIA, AMD, or Intel.&lt;/li>
&lt;li>Remove the current driver cleanly with &lt;a href="https://www.wagnardsoft.com/" rel="noopener">DDU (Display Driver Uninstaller)&lt;/a> in Safe Mode, then install the fresh one.&lt;/li>
&lt;li>If it started right after an update, roll the driver back (Device Manager → your GPU → Properties → Driver → Roll Back Driver).&lt;/li>
&lt;/ol>
&lt;p>If the blackouts come with a &amp;ldquo;display driver stopped responding&amp;rdquo; message, work the full &lt;a href="https://techfuelhq.com/articles/gpu-driver-crash-fix-2026/">GPU driver crash fix guide&lt;/a> - it&amp;rsquo;s the same underlying TDR problem.&lt;/p>
&lt;h2 id="step-3-turn-off-the-power-settings-that-cause-blackouts">Step 3: Turn off the power settings that cause blackouts&lt;/h2>
&lt;p>Two Windows power options blank the screen and are easy to miss:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Display sleep:&lt;/strong> Search &lt;strong>Edit power plan&lt;/strong>, and set &lt;strong>Turn off the display&lt;/strong> to a longer time or &lt;strong>Never&lt;/strong>.&lt;/li>
&lt;li>&lt;strong>PCI Express Link State Power Management:&lt;/strong> in the same &lt;strong>Change advanced power settings&lt;/strong> window, expand &lt;strong>PCI Express → Link State Power Management&lt;/strong> and set it to &lt;strong>Off&lt;/strong>. This setting throttles the link to your graphics card to save power and is a genuine, under-known cause of brief random blackouts on desktops.&lt;/li>
&lt;/ul>
&lt;h2 id="after-sleep">The after-sleep case: it's DisplayPort, not the monitor&lt;/h2>
&lt;p>If the &lt;em>only&lt;/em> time it goes black is coming back from sleep - the monitor won&amp;rsquo;t wake, shows &amp;ldquo;No Signal,&amp;rdquo; or your windows have all jumped to another screen - stop suspecting the panel. This is a well-documented quirk of DisplayPort called &lt;strong>hot-plug detect&lt;/strong>: when a DisplayPort monitor sleeps, it drops &lt;em>all&lt;/em> signal on the link, so Windows treats it as if you physically unplugged it. On wake, the PC sometimes fails to re-establish the link or reshuffles everything to whatever display it still sees.&lt;/p>
&lt;p>Work it in this order - cheapest first:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Swap the DisplayPort cable&lt;/strong> for a known-good, DisplayPort-certified one. A borderline cable makes the re-detect far less reliable, and this alone fixes a surprising number of cases.&lt;/li>
&lt;li>&lt;strong>Check the monitor&amp;rsquo;s on-screen menu&lt;/strong> for a setting named &lt;strong>DisplayPort deep sleep&lt;/strong>, &lt;strong>DP 1.2/1.4 power&lt;/strong>, or &lt;strong>DDC/CI&lt;/strong> - toggling that option (off, or to the alternate DP version) changes how the monitor drops the link and often stops the wake blackout. Some Dell and LG panels expose exactly this.&lt;/li>
&lt;li>&lt;strong>Move to HDMI&lt;/strong>, or use a good &lt;strong>active DisplayPort-to-HDMI adapter&lt;/strong> - HDMI doesn&amp;rsquo;t kill hot-plug detect the same way, so it sidesteps the whole behavior. It&amp;rsquo;s the surest workaround if the setting isn&amp;rsquo;t in your OSD.&lt;/li>
&lt;li>&lt;strong>Blank instead of sleep:&lt;/strong> set your display to turn off via a &lt;strong>blank screensaver&lt;/strong> with a timeout, rather than the power plan&amp;rsquo;s &amp;ldquo;turn off the display,&amp;rdquo; so the monitor never fully drops the link.&lt;/li>
&lt;/ul>
&lt;p>Microsoft has shipped a Windows-side fix for the &lt;em>window-rearranging&lt;/em> half of this, but the black-on-wake itself is still best solved at the cable/OSD level above.&lt;/p>
&lt;h2 id="step-4-heat-power-and-a-loose-gpu-for-stay-black-and-under-load-cases">Step 4: Heat, power, and a loose GPU (for stay-black and under-load cases)&lt;/h2>
&lt;p>If the screen stays black until you reboot, or only blacks out under gaming load, it&amp;rsquo;s usually not the display path:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Overheating:&lt;/strong> a GPU or CPU hitting its thermal limit can trigger a protective blackout. Confirm all fans spin and clear dust from the case and GPU. If temps are high, our &lt;a href="https://techfuelhq.com/articles/safe-cpu-temp-2026/">safe CPU temperature guide&lt;/a> covers what&amp;rsquo;s normal and when heat is actually the problem.&lt;/li>
&lt;li>&lt;strong>Unstable overclock/undervolt:&lt;/strong> revert any GPU or CPU tuning (MSI Afterburner, Adrenalin, Ryzen Master) to stock and test. An overclock that&amp;rsquo;s slightly unstable - or an undervolt that&amp;rsquo;s too aggressive - produces exactly this black-screen behavior under load.&lt;/li>
&lt;li>&lt;strong>Reseat the GPU:&lt;/strong> power down, and firmly reseat the graphics card in its PCIe slot and its power connectors. A card that&amp;rsquo;s crept loose in its slot drops signal intermittently.&lt;/li>
&lt;li>&lt;strong>Power delivery:&lt;/strong> a failing or underpowered PSU, or a loose PCIe power cable, causes blackouts under load. Make sure the GPU&amp;rsquo;s power cables are fully seated (including all pins on a 12VHPWR/12V-2x6 connector).&lt;/li>
&lt;/ul>
&lt;h2 id="vrr-flicker">Only in games? Check VRR before you blame the hardware&lt;/h2>
&lt;p>Here&amp;rsquo;s a load-related cause almost every other guide misses. If your monitor &lt;strong>flashes black or flickers specifically in games&lt;/strong> and you have &lt;strong>G-Sync or FreeSync (VRR)&lt;/strong> turned on, the odds are it&amp;rsquo;s the variable-refresh feature itself, not a dying cable or panel.&lt;/p>
&lt;p>VRR works by constantly changing the monitor&amp;rsquo;s refresh interval to match your frame rate. When the frame rate swings hard - and especially when it dips below the monitor&amp;rsquo;s &lt;strong>VRR floor&lt;/strong> (the low end of its adaptive range, often around 48Hz) - the panel keeps re-timing itself, and &lt;strong>OLED and some VA panels show each transition as a brief black flash or brightness flicker.&lt;/strong> It&amp;rsquo;s worst in poorly optimized games with uneven frame times, and it looks alarming even though nothing is failing.&lt;/p>
&lt;p>Confirm and fix it without buying anything:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Cap your frame rate&lt;/strong> a few fps below the monitor&amp;rsquo;s maximum, using &lt;a href="https://www.guru3d.com/download/rtss-rivatuner-statistics-server-download/" rel="noopener">RTSS (RivaTuner Statistics Server)&lt;/a> or the in-game limiter. Staying inside the smooth part of the VRR range is the single most effective fix.&lt;/li>
&lt;li>&lt;strong>Toggle G-Sync/FreeSync off as a test.&lt;/strong> If the black flashes vanish with VRR disabled, you&amp;rsquo;ve found it - now you&amp;rsquo;re tuning, not replacing.&lt;/li>
&lt;li>&lt;strong>Narrow the VRR range&lt;/strong> with &lt;a href="https://www.monitortests.com/forum/Thread-Custom-Resolution-Utility-CRU" rel="noopener">CRU (Custom Resolution Utility)&lt;/a> - raising the floor (say, 48-144Hz to 90-144Hz) leaves less brightness gap between refresh steps and cuts the flicker.&lt;/li>
&lt;li>&lt;strong>Update the monitor firmware and GPU driver&lt;/strong> - panel makers have shipped firmware specifically to reduce VRR flicker.&lt;/li>
&lt;/ul>
&lt;p>This is a tuning problem, not a fault. Treat a game-only black &lt;em>flash&lt;/em> with VRR on as VRR-first, and you&amp;rsquo;ll skip a lot of pointless cable-swapping.&lt;/p>
&lt;h2 id="the-fix-order-in-one-list">The fix order, in one list&lt;/h2>
&lt;ol>
&lt;li>&lt;strong>Read the rhythm&lt;/strong> - flicker-and-recover vs stay-black vs under-load vs after-sleep. It tells you which step to start on.&lt;/li>
&lt;li>&lt;strong>Cable&lt;/strong> - reseat, then swap for a properly rated cable; confirm it&amp;rsquo;s in the graphics card. (The #1 cause; see the bandwidth meter.)&lt;/li>
&lt;li>&lt;strong>Driver&lt;/strong> - &lt;strong>Win+Ctrl+Shift+B&lt;/strong> to recover, then a DDU clean reinstall (or roll back if a recent update broke it).&lt;/li>
&lt;li>&lt;strong>Power settings&lt;/strong> - Turn off display → Never, and PCI Express Link State Power Management → Off.&lt;/li>
&lt;li>&lt;strong>After-sleep only&lt;/strong> - it&amp;rsquo;s DisplayPort hot-plug: certified DP cable, the OSD DP/DDC setting, or move to HDMI.&lt;/li>
&lt;li>&lt;strong>Heat / power / seating&lt;/strong> - for stay-black or under-load blackouts: check temps, revert overclocks, reseat the GPU and its power cables.&lt;/li>
&lt;li>&lt;strong>Games only&lt;/strong> - if it&amp;rsquo;s a black &lt;em>flash&lt;/em> with VRR on, cap your frame rate and tune the VRR range before suspecting hardware.&lt;/li>
&lt;/ol>
&lt;p>Work it in the order your rhythm points to, and you&amp;rsquo;ll fix the vast majority of random blackouts at step 2 or 3 - a cable swap or a clean driver install - long before &amp;ldquo;buy a new monitor&amp;rdquo; is on the table.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>Cause overview (cable/power/driver) and cable-swap first: &lt;a href="https://www.mobilepixels.us/pages/why-does-my-dual-monitor-keep-going-black" rel="noopener">Mobile Pixels - Why does my monitor keep going black&lt;/a> and &lt;a href="https://www.dell.com/support/contents/en-us/article/product-support/self-support-knowledgebase/monitor-screen-video/multiple-displays-not-working" rel="noopener">Dell - Multi-Monitor Displays: Black Screen or Not Detected&lt;/a>. The driver crash-and-recover behavior is described directly in the &lt;a href="https://forums.tomshardware.com/threads/monitor-randomly-goes-black-for-a-second-then-comes-back-on.3695580/" rel="noopener">Tom&amp;rsquo;s Hardware forums thread on this exact symptom&lt;/a>.&lt;/li>
&lt;li>PCI Express Link State Power Management fix (a real, under-known blackout cause): &lt;a href="https://learn.microsoft.com/en-us/answers/questions/3880641/screen-blacking-out-when-opening-multiple-windows" rel="noopener">Microsoft Q&amp;amp;A - Screen blacking out&lt;/a>. The &amp;ldquo;Turn off the display&amp;rdquo; timeout is a standard built-in Windows power-plan option.&lt;/li>
&lt;li>DisplayPort hot-plug / after-sleep blackout: &lt;a href="https://www.ghacks.net/2021/04/30/microsoft-has-a-fix-for-unwanted-program-window-rearrangements-on-multi-display-systems/" rel="noopener">Microsoft&amp;rsquo;s fix for DisplayPort window-rearrangement on wake (gHacks)&lt;/a> and community workarounds (&lt;a href="https://github.com/microsoft/PowerToys/issues/3217" rel="noopener">PowerToys issue #3217&lt;/a>).&lt;/li>
&lt;li>VRR (G-Sync/FreeSync) black-flash flicker and the frame-rate-cap fix: &lt;a href="https://www.displayninja.com/what-is-vrr-brightness-flickering/" rel="noopener">Display Ninja - What is VRR brightness flickering&lt;/a> and &lt;a href="https://forums.blurbusters.com/viewtopic.php?t=13835" rel="noopener">Blur Busters Forums - flickering with G-Sync&lt;/a>.&lt;/li>
&lt;li>Approximate uncompressed bandwidth figures compared against the published data rates of HDMI 2.0/2.1 and DisplayPort 1.4/2.1 (UHBR20); DSC reduces the required rate roughly 3:1.&lt;/li>
&lt;li>Clean GPU driver reinstall tool: &lt;a href="https://www.wagnardsoft.com/" rel="noopener">Display Driver Uninstaller (DDU), Wagnardsoft&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>&lt;em>Steps are for Windows 10 and 11 desktops and laptops in 2026; menu names vary slightly by version and GPU vendor. Found an error? Email &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a> with the article URL.&lt;/em>&lt;/p></description></item><item><title>PC Keeps Restarting? Fix the Random Reboots (2026)</title><link>https://techfuelhq.com/articles/pc-keeps-restarting-2026/</link><pubDate>Sat, 04 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/pc-keeps-restarting-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-07-04 · ~10 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence what gets recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;p>A PC that keeps restarting on its own is one of the most stressful problems to diagnose, because the reboot wipes the evidence before you can read it. The fix starts with a setting most guides skip: &lt;strong>turn off Windows&amp;rsquo; automatic restart so the next crash actually shows you the error.&lt;/strong> From there it&amp;rsquo;s a short, ordered checklist — heat, power, RAM, drivers — and the pattern of when it restarts tells you where to look.&lt;/p>
&lt;h2 id="step-1-make-windows-show-you-the-error-do-this-first">Step 1: Make Windows show you the error (do this first)&lt;/h2>
&lt;p>By default, Windows instantly reboots on a system crash, so you never see the blue screen. Turn that off so the next crash leaves a stop code on screen:&lt;/p>
&lt;ol>
&lt;li>Press &lt;strong>Windows Key + R&lt;/strong>, type &lt;strong>&lt;code>sysdm.cpl&lt;/code>&lt;/strong>, and press Enter.&lt;/li>
&lt;li>Go to the &lt;strong>Advanced&lt;/strong> tab → under &lt;strong>Startup and Recovery&lt;/strong>, click &lt;strong>Settings&lt;/strong>.&lt;/li>
&lt;li>Under &lt;strong>System failure&lt;/strong>, &lt;strong>uncheck &amp;ldquo;Automatically restart&amp;rdquo;&lt;/strong>, and click OK.&lt;/li>
&lt;/ol>
&lt;p>Now, the next time it crashes, you&amp;rsquo;ll get a &lt;strong>blue screen with a stop code&lt;/strong> instead of an instant reboot. Write it down — a code like &lt;strong>WHEA_UNCORRECTABLE_ERROR&lt;/strong> points at hardware or power, while a named driver file (&lt;code>nvlddmkm.sys&lt;/code>, for example) points at the GPU driver. That one clue turns guesswork into a targeted fix.&lt;/p>
&lt;p>If the PC restarts with &lt;strong>no blue screen at all&lt;/strong> — an instant, total cut like someone pulled the plug — that&amp;rsquo;s a strong sign of a &lt;strong>power problem&lt;/strong> (PSU or a loose cable), because a true power loss happens faster than Windows can even draw a BSOD. And if it doesn&amp;rsquo;t come back on its own at all — it powers &lt;strong>off and stays off&lt;/strong> until you press the button — that&amp;rsquo;s a sudden shutdown rather than a restart, with its own checklist: work our &lt;a href="https://techfuelhq.com/articles/computer-randomly-turns-off-2026/">computer randomly turns off guide&lt;/a>.&lt;/p>
&lt;p>If instead of rebooting the system &lt;strong>locks up and freezes&lt;/strong> — the screen stays frozen, the mouse won&amp;rsquo;t move, and it never restarts on its own — that&amp;rsquo;s a different failure with a different checklist; work our &lt;a href="https://techfuelhq.com/articles/computer-keeps-freezing-2026/">computer keeps freezing guide&lt;/a> instead.&lt;/p>
&lt;!-- ========== SIGNATURE VISUAL B: ANNOTATED BSOD STOP-CODE DECODER (the payoff of Step 1) ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0b1017;border:1px solid rgba(96,165,250,0.18);border-radius:10px;padding:24px 20px 18px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
&lt;div style="margin-bottom:16px;">
&lt;div style="font-size:19px;font-weight:700;color:#eaf1fb;letter-spacing:-0.3px;">Read the blue screen: the stop code names the cause&lt;/div>
&lt;div style="font-size:12.5px;color:#8fa2ba;margin-top:6px;line-height:1.5;">With automatic restart off, the next crash leaves this screen up instead of vanishing. One line does the work &amp;#8212; the &lt;strong style="color:#dbe6f5;">stop code&lt;/strong>. It won&amp;#8217;t always name the exact part, but it points you at the right step instead of the parts cannon.&lt;/div>
&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;gap:16px;align-items:stretch;">
&lt;div style="flex:1.05;min-width:238px;background:linear-gradient(158deg,#1c5fae,#124d90);border-radius:8px;padding:22px 20px;color:#eaf2fc;display:flex;flex-direction:column;justify-content:center;">
&lt;div style="font-size:46px;font-weight:300;line-height:1;margin-bottom:14px;">:(&lt;/div>
&lt;div style="font-size:13.5px;line-height:1.5;margin-bottom:16px;">Your PC ran into a problem and needs to restart. We&amp;#8217;re just collecting some error info, then we&amp;#8217;ll restart for you.&lt;/div>
&lt;div style="font-size:11.5px;color:#bcd4ef;margin-bottom:5px;">For more info, search online later for this stop code:&lt;/div>
&lt;div style="font-family:ui-monospace,monospace;font-size:13.5px;font-weight:700;color:#fff;background:rgba(0,0,0,0.24);border:1px solid rgba(255,255,255,0.30);border-radius:5px;padding:8px 10px;word-break:break-all;">WHEA_UNCORRECTABLE_ERROR&lt;/div>
&lt;div style="font-size:10.5px;color:#a6c9ef;margin-top:8px;font-style:italic;">&amp;#8593; write this line down &amp;#8212; it is the whole clue&lt;/div>
&lt;/div>
&lt;div style="flex:1.4;min-width:250px;display:flex;flex-direction:column;gap:7px;">
&lt;div style="display:flex;gap:10px;align-items:baseline;background:rgba(248,113,113,0.08);border-left:3px solid #f87171;border-radius:0 5px 5px 0;padding:8px 11px;">
&lt;span style="font-family:ui-monospace,monospace;font-size:10px;font-weight:700;color:#fca5a5;flex-shrink:0;width:112px;word-break:break-word;">WHEA_UNCORRECTABLE_ERROR&lt;/span>
&lt;span style="font-size:11.5px;color:#cdd9e8;line-height:1.45;min-width:0;">Fatal hardware error: heat, an unstable overclock/undervolt, or a failing part (CPU, RAM, board, power). &lt;strong style="color:#e6edf6;">Steps 2, 3, 6.&lt;/strong>&lt;/span>
&lt;/div>
&lt;div style="display:flex;gap:10px;align-items:baseline;background:rgba(248,113,113,0.08);border-left:3px solid #f87171;border-radius:0 5px 5px 0;padding:8px 11px;">
&lt;span style="font-family:ui-monospace,monospace;font-size:10px;font-weight:700;color:#fca5a5;flex-shrink:0;width:112px;word-break:break-word;">CLOCK_WATCHDOG_TIMEOUT&lt;/span>
&lt;span style="font-size:11.5px;color:#cdd9e8;line-height:1.45;min-width:0;">A CPU core stopped responding &amp;#8212; usually an unstable CPU overclock or too-aggressive undervolt, else the CPU itself. &lt;strong style="color:#e6edf6;">Step 5, then RAM.&lt;/strong>&lt;/span>
&lt;/div>
&lt;div style="display:flex;gap:10px;align-items:baseline;background:rgba(96,165,250,0.09);border-left:3px solid #60a5fa;border-radius:0 5px 5px 0;padding:8px 11px;">
&lt;span style="font-family:ui-monospace,monospace;font-size:10px;font-weight:700;color:#93c5fd;flex-shrink:0;width:112px;word-break:break-word;">VIDEO_TDR_FAILURE + a .sys name (nvlddmkm.sys)&lt;/span>
&lt;span style="font-size:11.5px;color:#cdd9e8;line-height:1.45;min-width:0;">The graphics driver crashed and took the system with it. Clean-reinstall it. &lt;strong style="color:#e6edf6;">Step 5.&lt;/strong>&lt;/span>
&lt;/div>
&lt;div style="display:flex;gap:10px;align-items:baseline;background:rgba(246,169,74,0.09);border-left:3px solid #f6a94a;border-radius:0 5px 5px 0;padding:8px 11px;">
&lt;span style="font-family:ui-monospace,monospace;font-size:10px;font-weight:700;color:#f7c07a;flex-shrink:0;width:112px;word-break:break-word;">MEMORY_MANAGEMENT / IRQL_NOT_LESS_OR_EQUAL&lt;/span>
&lt;span style="font-size:11.5px;color:#cdd9e8;line-height:1.45;min-width:0;">RAM or a driver. Test memory first, then drivers. &lt;strong style="color:#e6edf6;">Steps 4&amp;#8211;5.&lt;/strong>&lt;/span>
&lt;/div>
&lt;div style="display:flex;gap:10px;align-items:baseline;background:rgba(148,163,184,0.10);border-left:3px solid #94a3b8;border-radius:0 5px 5px 0;padding:8px 11px;">
&lt;span style="font-family:ui-monospace,monospace;font-size:10px;font-weight:700;color:#cbd5e1;flex-shrink:0;width:112px;word-break:break-word;">NO blue screen &amp;#8212; instant black cut&lt;/span>
&lt;span style="font-size:11.5px;color:#cdd9e8;line-height:1.45;min-width:0;">Power, not software: a true power loss beats Windows to the BSOD. Check Event Viewer for &lt;strong style="color:#e6edf6;">Kernel-Power 41&lt;/strong> (the &amp;#8220;didn&amp;#8217;t shut down cleanly&amp;#8221; marker &amp;#8212; a symptom, not the cause). &lt;strong style="color:#e6edf6;">Step 3.&lt;/strong>&lt;/span>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:15px;padding-top:12px;border-top:1px solid rgba(96,165,250,0.12);font-size:11px;color:#7f8ea3;line-height:1.5;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;">
&lt;span>A named driver file (like &lt;span style="font-family:ui-monospace,monospace;color:#b7c6da;">nvlddmkm.sys&lt;/span>) points straight at that driver. Hardware codes (WHEA, CLOCK_WATCHDOG) point at power, heat, or an unstable overclock &amp;#8212; not one exact part &amp;#8212; so you still work the steps below to isolate which.&lt;/span>
&lt;span style="font-family:ui-monospace,monospace;font-size:10px;color:#4f5c6e;">techfuelhq.com&lt;/span>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>Five of the most-searched stop codes have their own step-by-step deep dives: &lt;a href="https://techfuelhq.com/articles/dpc-watchdog-violation-2026/">DPC_WATCHDOG_VIOLATION&lt;/a> (a driver stalling the CPU — usually storage), &lt;a href="https://techfuelhq.com/articles/kernel-security-check-failure-2026/">KERNEL_SECURITY_CHECK_FAILURE&lt;/a> (memory corruption — test RAM first), &lt;a href="https://techfuelhq.com/articles/clock-watchdog-timeout-2026/">CLOCK_WATCHDOG_TIMEOUT&lt;/a> (a CPU core that stopped responding — revert the overclock first), &lt;a href="https://techfuelhq.com/articles/page-fault-in-nonpaged-area-2026/">PAGE_FAULT_IN_NONPAGED_AREA&lt;/a> (missing memory — test RAM, then storage), and &lt;a href="https://techfuelhq.com/articles/system-thread-exception-not-handled-2026/">SYSTEM_THREAD_EXCEPTION_NOT_HANDLED&lt;/a> (a bad driver, usually named right on the blue screen). If your blue screen shows any of them, start there.&lt;/p>
&lt;h2 id="read-the-pattern">Read the pattern&lt;/h2>
&lt;p>When it restarts narrows it down fast:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Only under load / while gaming&lt;/strong> → heat or power (jump to Overheating and PSU).&lt;/li>
&lt;li>&lt;strong>Random, including at idle or light use&lt;/strong> → RAM, driver, PSU, or an unstable overclock. When it&amp;rsquo;s truly random and the stop code keeps changing, use &lt;a href="#the-isolation-build">the isolation build&lt;/a> below.&lt;/li>
&lt;li>&lt;strong>In a loop before Windows loads&lt;/strong> → software (bad update, corrupt files) or a hardware failure (see the boot-loop FAQ above).&lt;/li>
&lt;li>&lt;strong>Only when you shut down&lt;/strong> — it reboots instead of powering off, or won&amp;rsquo;t stay off → that&amp;rsquo;s usually not a crash at all; see &lt;a href="#restarts-after-shutdown">restarts right after shutdown&lt;/a>.&lt;/li>
&lt;/ul>
&lt;h2 id="step-2-overheating">Step 2: Overheating&lt;/h2>
&lt;p>A CPU or GPU that hits its thermal limit reboots the system to protect itself, and this is the #1 cause of load-triggered restarts. If the CPU is the culprit, the &lt;a href="https://techfuelhq.com/articles/cpu-overheating-2026/">why is my CPU overheating&lt;/a> guide sorts the cause by &lt;em>when&lt;/em> it happens - a dead pump, dried paste, or a loose cooler each fix differently. If the restarts hit hardest in games, suspect the graphics card and &lt;a href="https://techfuelhq.com/articles/gpu-overheating-2026/">confirm the GPU is really overheating&lt;/a> with the core-vs-hotspot check before you touch anything - a card that only &lt;em>looks&lt;/em> hot needs a different fix.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Check temperatures under load&lt;/strong> with HWiNFO or HWMonitor. Our &lt;a href="https://techfuelhq.com/articles/safe-cpu-temp-2026/">safe CPU temperature guide&lt;/a> covers what&amp;rsquo;s normal (Ryzen to ~95°C, X3D ~89°C, Intel ~100°C) and when heat is actually the problem — a chip parking at its limit and rebooting means cooling can&amp;rsquo;t keep up.&lt;/li>
&lt;li>&lt;strong>Clear dust&lt;/strong> from fans, heatsinks, and vents with a &lt;a href="https://www.amazon.com/s?k=compressed+air+duster+can&amp;tag=techfuelhq-20" rel="nofollow sponsored noopener" target="_blank">can of compressed air&lt;/a>, and confirm every fan spins (a failed AIO pump or CPU fan causes fast thermal shutdowns).&lt;/li>
&lt;li>&lt;strong>Reapply thermal paste&lt;/strong> if it&amp;rsquo;s a few years old — dried paste is a common cause of a system that used to run cool and now overheats. An inexpensive tube of &lt;a href="https://www.amazon.com/dp/B07L9BDY3T?tag=techfuelhq-20" rel="nofollow sponsored noopener" target="_blank">Arctic MX-4&lt;/a> is enough for several repastes and often drops load temps several degrees.&lt;/li>
&lt;/ul>
&lt;h2 id="step-3-power-supply">Step 3: Power supply&lt;/h2>
&lt;p>The PSU is the most under-suspected hardware cause of restarts, especially the load-related and no-BSOD kind. A supply that&amp;rsquo;s failing, undersized for your GPU, or connected with a loose cable can&amp;rsquo;t hold the load and drops the system.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Reseat every power cable&lt;/strong> — the 24-pin, the CPU (EPS) connector, and every GPU power cable, including all pins on a &lt;strong>12VHPWR/12V-2x6&lt;/strong> connector, which is notorious for partial seating.&lt;/li>
&lt;li>&lt;strong>Rule out undersizing:&lt;/strong> a new, power-hungry GPU on an old PSU is a classic restart cause. Run your parts through the &lt;a href="https://techfuelhq.com/tools/psu-wattage-calculator/">PSU wattage calculator&lt;/a> to see whether your supply has the headroom — if you&amp;rsquo;re near or over its rating under load, that&amp;rsquo;s your answer.&lt;/li>
&lt;li>If temps are healthy and it still restarts under load, a &lt;strong>known-good, adequately-rated PSU&lt;/strong> is the next test. Size it first, then buy — don&amp;rsquo;t guess on wattage.&lt;/li>
&lt;/ul>
&lt;p>If power looks like the culprit and you want to confirm the PSU is &lt;em>failing&lt;/em> rather than just undersized, our deep dive covers the tell-tale symptoms, why the paperclip test can give a false all-clear, and how to read the 12V rail under load: &lt;a href="https://techfuelhq.com/articles/psu-failure-symptoms-2026/">PSU Failure Symptoms: Is It Really the Power Supply?&lt;/a>&lt;/p>
&lt;h2 id="step-4-ram">Step 4: RAM&lt;/h2>
&lt;p>Faulty or unstable memory causes random restarts and blue screens.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Test it:&lt;/strong> run the built-in &lt;strong>Windows Memory Diagnostic&lt;/strong> (Windows Key + R → &lt;code>mdsched.exe&lt;/code>), or &lt;strong>MemTest86&lt;/strong> from a USB stick for a thorough overnight pass.&lt;/li>
&lt;li>&lt;strong>Reseat and isolate:&lt;/strong> reseat both sticks, then test one stick at a time to find a bad module.&lt;/li>
&lt;li>&lt;strong>Check your memory speed:&lt;/strong> an unstable &lt;strong>EXPO/XMP&lt;/strong> profile can restart a system that&amp;rsquo;s otherwise fine. Set memory to its default JEDEC speed to test; if the restarts stop, the kit or memory controller isn&amp;rsquo;t holding the rated speed.&lt;/li>
&lt;/ul>
&lt;h2 id="step-5-drivers-and-overclocks">Step 5: Drivers and overclocks&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Graphics driver:&lt;/strong> a crashing GPU driver can take the whole system down. If your blue-screen names a driver like &lt;code>nvlddmkm.sys&lt;/code>, do a clean reinstall — the full process is in the &lt;a href="https://techfuelhq.com/articles/gpu-driver-crash-fix-2026/">GPU driver crash fix guide&lt;/a>.&lt;/li>
&lt;li>&lt;strong>Revert overclocks/undervolts:&lt;/strong> set any CPU or GPU tuning (MSI Afterburner, Ryzen Master, BIOS PBO/curve) back to stock. An overclock that&amp;rsquo;s slightly unstable, or an undervolt that&amp;rsquo;s too aggressive, restarts the system under load exactly like a hardware fault.&lt;/li>
&lt;/ul>
&lt;h2 id="step-6-software-for-boot-loops-and-post-update-restarts">Step 6: Software (for boot loops and post-update restarts)&lt;/h2>
&lt;p>If the trouble is a reboot loop or started right after an update:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Windows Recovery:&lt;/strong> force-power-off during boot three times to trigger &lt;strong>Automatic Repair&lt;/strong>, then try &lt;strong>Startup Repair&lt;/strong>, &lt;strong>System Restore&lt;/strong>, or &lt;strong>Uninstall latest updates&lt;/strong>.&lt;/li>
&lt;li>&lt;strong>Safe Mode&lt;/strong> to roll back a bad driver or uninstall recently installed software.&lt;/li>
&lt;li>&lt;strong>Scan for malware&lt;/strong>, and run &lt;strong>&lt;code>sfc /scannow&lt;/code>&lt;/strong> then &lt;strong>&lt;code>DISM /Online /Cleanup-Image /RestoreHealth&lt;/code>&lt;/strong> to repair corrupt system files.&lt;/li>
&lt;/ul>
&lt;h2 id="the-isolation-build">When it's random: the isolation build&lt;/h2>
&lt;p>When a restart only happens under load, or the blue screen names a part, you follow the step it points to. But some restarts are genuinely random — different stop codes each time, no pattern, or no blue screen at all — and chasing those by swapping parts wastes money. The reliable move is the &lt;em>opposite&lt;/em> of adding parts: &lt;strong>strip the machine to a configuration you know is stable, then add each variable back one at a time until the restart returns.&lt;/strong> Whatever you re-enabled last is the cause.&lt;/p>
&lt;!-- ========== SIGNATURE VISUAL A: THE ISOLATION BUILD (step-state build-progression) ========== -->
&lt;div class="visual-block">
&lt;div style="background:#14100a;border:1px solid rgba(246,169,74,0.20);border-radius:10px;padding:24px 20px 18px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
&lt;div style="margin-bottom:15px;">
&lt;div style="display:flex;align-items:center;gap:9px;">
&lt;span style="width:8px;height:8px;border-radius:50%;background:#f6a94a;box-shadow:0 0 8px #f6a94a;">&lt;/span>
&lt;div style="font-size:19px;font-weight:700;color:#f6ecdc;letter-spacing:-0.3px;">The isolation build: strip to stable, add one thing back&lt;/div>
&lt;/div>
&lt;div style="font-size:12.5px;color:#a89a80;margin-top:6px;line-height:1.5;">Stop swapping parts on a hunch. Drop the machine to a known-stable floor, then re-introduce &lt;strong style="color:#f0e4cf;">one&lt;/strong> variable at a time and run it. The first change that brings the restart back is your culprit.&lt;/div>
&lt;/div>
&lt;div style="background:rgba(126,224,160,0.07);border:1px solid rgba(126,224,160,0.22);border-radius:7px;padding:11px 13px;margin-bottom:6px;display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;min-width:0;">
&lt;div style="flex:1;min-width:200px;font-size:11.5px;color:#c7d8c9;line-height:1.5;">&lt;strong style="color:#9be8b6;">THE STABLE FLOOR&lt;/strong> &amp;#8212; stock clocks (no PBO/OC/undervolt), RAM at default JEDEC speed (XMP/EXPO off), one stick, light desktop use. Rock-solid here? Add back, one at a time &amp;#8595;&lt;/div>
&lt;div style="flex:1;min-width:200px;font-size:11.5px;color:#d8c3a6;line-height:1.5;border-left:2px solid rgba(246,169,74,0.3);padding-left:12px;">&lt;strong style="color:#f6a94a;">Still restarts stripped this bare?&lt;/strong> It isn&amp;#8217;t tuning &amp;#8212; look at the PSU, heat, or a driver (Steps 2, 3, 5).&lt;/div>
&lt;/div>
&lt;div style="display:flex;flex-direction:column;">
&lt;div style="display:flex;flex-wrap:wrap;align-items:center;gap:12px 14px;padding:12px 0;border-top:1px solid rgba(246,169,74,0.12);min-width:0;">
&lt;div style="width:132px;flex-shrink:0;min-width:0;">
&lt;div style="font-size:9px;font-weight:700;letter-spacing:1px;color:#8a7a5c;">STEP 1 &amp;#183; ADD&lt;/div>
&lt;div style="font-size:13.5px;font-weight:700;color:#f4ead9;">EXPO / XMP&lt;/div>
&lt;/div>
&lt;div style="display:flex;gap:4px;flex-shrink:0;">
&lt;span style="font-size:8.5px;font-weight:700;color:#7ee0a0;border:1px solid rgba(126,224,160,0.5);border-radius:3px;padding:3px 6px;">BASE&lt;/span>
&lt;span style="font-size:8.5px;font-weight:700;color:#14100a;background:#f6a94a;border-radius:3px;padding:3px 6px;">EXPO&lt;/span>
&lt;/div>
&lt;div style="flex:1;min-width:180px;font-size:11.5px;color:#c9bfae;line-height:1.5;">Restart returns now &amp;#8594; the kit or memory controller can&amp;#8217;t hold the rated speed. Run a milder EXPO, nudge SoC/DRAM voltage, or stay at JEDEC. &lt;span style="color:#9be8b6;">(Step 4.)&lt;/span>&lt;/div>
&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;align-items:center;gap:12px 14px;padding:12px 0;border-top:1px solid rgba(246,169,74,0.12);min-width:0;">
&lt;div style="width:132px;flex-shrink:0;min-width:0;">
&lt;div style="font-size:9px;font-weight:700;letter-spacing:1px;color:#8a7a5c;">STEP 2 &amp;#183; ADD&lt;/div>
&lt;div style="font-size:13.5px;font-weight:700;color:#f4ead9;">OC / PBO / undervolt&lt;/div>
&lt;/div>
&lt;div style="display:flex;gap:4px;flex-shrink:0;">
&lt;span style="font-size:8.5px;font-weight:700;color:#7ee0a0;border:1px solid rgba(126,224,160,0.5);border-radius:3px;padding:3px 6px;">BASE&lt;/span>
&lt;span style="font-size:8.5px;font-weight:700;color:#7ee0a0;border:1px solid rgba(126,224,160,0.5);border-radius:3px;padding:3px 6px;">EXPO&lt;/span>
&lt;span style="font-size:8.5px;font-weight:700;color:#14100a;background:#f6a94a;border-radius:3px;padding:3px 6px;">OC&lt;/span>
&lt;/div>
&lt;div style="flex:1;min-width:180px;font-size:11.5px;color:#c9bfae;line-height:1.5;">Returns only after this &amp;#8594; the overclock or undervolt isn&amp;#8217;t stable. Loosen the curve or go stock. &lt;span style="color:#9be8b6;">(Step 5.)&lt;/span>&lt;/div>
&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;align-items:center;gap:12px 14px;padding:12px 0;border-top:1px solid rgba(246,169,74,0.12);min-width:0;">
&lt;div style="width:132px;flex-shrink:0;min-width:0;">
&lt;div style="font-size:9px;font-weight:700;letter-spacing:1px;color:#8a7a5c;">STEP 3 &amp;#183; ADD&lt;/div>
&lt;div style="font-size:13.5px;font-weight:700;color:#f4ead9;">the 2nd RAM stick&lt;/div>
&lt;/div>
&lt;div style="display:flex;gap:4px;flex-shrink:0;">
&lt;span style="font-size:8.5px;font-weight:700;color:#7ee0a0;border:1px solid rgba(126,224,160,0.5);border-radius:3px;padding:3px 6px;">BASE&lt;/span>
&lt;span style="font-size:8.5px;font-weight:700;color:#7ee0a0;border:1px solid rgba(126,224,160,0.5);border-radius:3px;padding:3px 6px;">EXPO&lt;/span>
&lt;span style="font-size:8.5px;font-weight:700;color:#7ee0a0;border:1px solid rgba(126,224,160,0.5);border-radius:3px;padding:3px 6px;">OC&lt;/span>
&lt;span style="font-size:8.5px;font-weight:700;color:#14100a;background:#f6a94a;border-radius:3px;padding:3px 6px;">2&amp;#215;RAM&lt;/span>
&lt;/div>
&lt;div style="flex:1;min-width:180px;font-size:11.5px;color:#c9bfae;line-height:1.5;">Returns only with both sticks in &amp;#8594; a bad module or a 2-DIMM stability limit. Test each stick alone. &lt;span style="color:#9be8b6;">(Step 4.)&lt;/span>&lt;/div>
&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;align-items:center;gap:12px 14px;padding:12px 0;border-top:1px solid rgba(246,169,74,0.12);min-width:0;">
&lt;div style="width:132px;flex-shrink:0;min-width:0;">
&lt;div style="font-size:9px;font-weight:700;letter-spacing:1px;color:#8a7a5c;">STEP 4 &amp;#183; ADD&lt;/div>
&lt;div style="font-size:13.5px;font-weight:700;color:#f4ead9;">a full gaming load&lt;/div>
&lt;/div>
&lt;div style="display:flex;gap:4px;flex-shrink:0;flex-wrap:wrap;">
&lt;span style="font-size:8.5px;font-weight:700;color:#7ee0a0;border:1px solid rgba(126,224,160,0.5);border-radius:3px;padding:3px 6px;">BASE&lt;/span>
&lt;span style="font-size:8.5px;font-weight:700;color:#7ee0a0;border:1px solid rgba(126,224,160,0.5);border-radius:3px;padding:3px 6px;">EXPO&lt;/span>
&lt;span style="font-size:8.5px;font-weight:700;color:#7ee0a0;border:1px solid rgba(126,224,160,0.5);border-radius:3px;padding:3px 6px;">OC&lt;/span>
&lt;span style="font-size:8.5px;font-weight:700;color:#7ee0a0;border:1px solid rgba(126,224,160,0.5);border-radius:3px;padding:3px 6px;">2&amp;#215;RAM&lt;/span>
&lt;span style="font-size:8.5px;font-weight:700;color:#14100a;background:#f6a94a;border-radius:3px;padding:3px 6px;">LOAD&lt;/span>
&lt;/div>
&lt;div style="flex:1;min-width:180px;font-size:11.5px;color:#c9bfae;line-height:1.5;">Returns only under real load, everything else stable &amp;#8594; heat or PSU headroom. Check temps and wattage. &lt;span style="color:#9be8b6;">(Steps 2&amp;#8211;3.)&lt;/span>&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:14px;padding-top:12px;border-top:1px solid rgba(246,169,74,0.14);font-size:11px;color:#8f8064;line-height:1.5;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;">
&lt;span>Change &lt;strong style="color:#d8c3a6;">one&lt;/strong> thing per step and run it long enough to catch the crash &amp;#8212; hours, or a full session of your usual game. Two changes at once is exactly why a &amp;#8216;random&amp;#8217; restart stays random.&lt;/span>
&lt;span style="font-family:ui-monospace,monospace;font-size:10px;color:#5f5644;">more variables &amp;#8594;&amp;nbsp;&amp;nbsp;techfuelhq.com&lt;/span>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>The two variables that cause the most &amp;ldquo;random&amp;rdquo; restarts are the ones people forget they turned on: &lt;strong>the memory&amp;rsquo;s EXPO/XMP profile&lt;/strong> and any &lt;strong>CPU or GPU overclock, PBO, or undervolt&lt;/strong>. Both run the hardware past its guaranteed-stable defaults, and both can behave for weeks and then drop the system under the wrong workload. Turning them off costs nothing and clears them in one test — which is why the isolation build starts there, not at the parts store.&lt;/p>
&lt;h2 id="restarts-after-shutdown">Restarts right after you shut down (or won't stay off)&lt;/h2>
&lt;p>There&amp;rsquo;s one &amp;ldquo;restart&amp;rdquo; that isn&amp;rsquo;t a crash at all: you click &lt;strong>Shut down&lt;/strong>, the PC powers off for a second, then boots straight back up — or it never fully powers off. That&amp;rsquo;s a shutdown problem, not a stability one, and it has its own short list.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Turn off Fast Startup first.&lt;/strong> Fast Startup (Windows&amp;rsquo; hybrid shutdown) saves the kernel to disk instead of powering all the way down, and on a lot of systems it&amp;rsquo;s the direct cause of a reboot-instead-of-shutdown. Open &lt;strong>Control Panel → Power Options → &amp;ldquo;Choose what the power buttons do&amp;rdquo; → &amp;ldquo;Change settings that are currently unavailable&amp;rdquo;&lt;/strong>, then &lt;strong>uncheck &amp;ldquo;Turn on fast startup&amp;rdquo;&lt;/strong> and save. Forcing a full cold shutdown every time fixes the majority of these cases.&lt;/li>
&lt;li>&lt;strong>Stop a device from waking it.&lt;/strong> A network adapter or mouse allowed to wake the machine can pull it back on the instant it powers off. In &lt;strong>Device Manager&lt;/strong>, open the network adapter (and the mouse) → &lt;strong>Power Management&lt;/strong> tab → &lt;strong>uncheck &amp;ldquo;Allow this device to wake the computer.&amp;rdquo;&lt;/strong> From a terminal you can list armed wake sources with &lt;code>powercfg /waketimers&lt;/code> and see what last woke it with &lt;code>powercfg /lastwake&lt;/code>.&lt;/li>
&lt;li>&lt;strong>Rule out a pending update.&lt;/strong> A Windows Update mid-install reboots rather than shuts down once — let it finish, then try again.&lt;/li>
&lt;li>&lt;strong>A dirty previous shutdown&lt;/strong> (a hard power-off or a crash) can make the next shutdown behave oddly a single time; if it happened only once, it&amp;rsquo;s likely nothing.&lt;/li>
&lt;/ul>
&lt;p>If it still reboots on shutdown after all of that, treat it like a random restart and work the stability steps above — a marginal PSU can occasionally show up this way too.&lt;/p>
&lt;h2 id="the-fix-order-in-one-list">The fix order, in one list&lt;/h2>
&lt;ol>
&lt;li>&lt;strong>Uncheck &amp;ldquo;Automatically restart&amp;rdquo;&lt;/strong> (&lt;code>sysdm.cpl&lt;/code> → Advanced → Startup and Recovery) so you can read the stop code.&lt;/li>
&lt;li>&lt;strong>Read the pattern&lt;/strong> — under-load = heat/power; random = RAM/driver/PSU/overclock; boot-loop = software/hardware failure.&lt;/li>
&lt;li>&lt;strong>Overheating&lt;/strong> — temps, dust, fans, thermal paste.&lt;/li>
&lt;li>&lt;strong>PSU&lt;/strong> — reseat cables, check wattage headroom, then swap if load-related.&lt;/li>
&lt;li>&lt;strong>RAM&lt;/strong> — mdsched/MemTest86, reseat, one stick at a time, test at JEDEC speed.&lt;/li>
&lt;li>&lt;strong>Drivers/overclocks&lt;/strong> — clean-reinstall the GPU driver, revert all tuning to stock. Still random? Run &lt;a href="#the-isolation-build">the isolation build&lt;/a> — strip to a stable floor, add one variable back at a time.&lt;/li>
&lt;li>&lt;strong>Software&lt;/strong> — Automatic Repair, Safe Mode, malware scan, sfc/DISM for boot loops.&lt;/li>
&lt;/ol>
&lt;p>Work it in order and the stop code from step 1 usually points you straight to the right step — no parts-cannon required. Two cases sit outside this flow: a genuinely &lt;em>random&lt;/em> restart is fastest to pin with &lt;a href="#the-isolation-build">the isolation build&lt;/a>, and a reboot that only happens when you try to &lt;em>shut down&lt;/em> is &lt;a href="#restarts-after-shutdown">a Fast Startup problem&lt;/a>, not a crash.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>The diagnostic and fixes use Microsoft&amp;rsquo;s built-in Windows tools — disable automatic restart (&lt;code>sysdm.cpl&lt;/code> → Advanced → Startup and Recovery), the Windows Memory Diagnostic (&lt;code>mdsched.exe&lt;/code>), Automatic Repair / Safe Mode, and &lt;code>sfc /scannow&lt;/code> + &lt;code>DISM /Online /Cleanup-Image /RestoreHealth&lt;/code> — all standard and self-verifiable on any Windows 10/11 PC. The ordered hardware causes (overheating, PSU, RAM, driver, overclock) are cross-corroborated across community and vendor troubleshooting guides.&lt;/li>
&lt;li>Thermal limits and what &amp;ldquo;too hot&amp;rdquo; actually is: our &lt;a href="https://techfuelhq.com/articles/safe-cpu-temp-2026/">safe CPU temperature guide&lt;/a> (first-party). Driver-crash clean reinstall: our &lt;a href="https://techfuelhq.com/articles/gpu-driver-crash-fix-2026/">GPU driver crash fix guide&lt;/a> (first-party).&lt;/li>
&lt;li>Blue-screen stop codes map to Microsoft&amp;rsquo;s &lt;a href="https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/bug-check-code-reference2" rel="noopener">Bug Check Code Reference&lt;/a> (WHEA_UNCORRECTABLE_ERROR = fatal hardware error; CLOCK_WATCHDOG_TIMEOUT = an unresponsive CPU core; VIDEO_TDR_FAILURE = a display-driver timeout). Kernel-Power event ID 41 is Microsoft&amp;rsquo;s marker that the PC rebooted without a clean shutdown — a symptom of a power loss or hard crash, not a cause (&lt;a href="https://learn.microsoft.com/en-us/answers/questions/3294475/kernel-power-event-id-41-bsod-whea-uncorrectable-e" rel="noopener">Microsoft Q&amp;amp;A&lt;/a>, corroborated on Tom&amp;rsquo;s Hardware and Linus Tech Tips forums).&lt;/li>
&lt;li>The restart-instead-of-shutdown fix (disable Fast Startup, then check device wake permissions) is the standard, widely-corroborated remedy — see &lt;a href="https://www.asus.com/support/faq/1045548/" rel="noopener">ASUS official support&lt;/a> and &lt;a href="https://www.thewindowsclub.com/windows-10-restarts-after-selecting-shutdown" rel="noopener">The Windows Club&lt;/a>.&lt;/li>
&lt;/ul>
&lt;p>&lt;em>Steps are for Windows 10 and 11 in 2026; menu names vary slightly by version. Found an error? Email &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a> with the article URL.&lt;/em>&lt;/p></description></item><item><title>Proxmox vs Hyper-V (2026): Free and Open vs Windows-Licensed</title><link>https://techfuelhq.com/articles/proxmox-vs-hyper-v-2026/</link><pubDate>Sat, 04 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/proxmox-vs-hyper-v-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-07-04 · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/articles/hero-proxmox-vs-hyper-v.svg" alt="Proxmox vs Hyper-V 2026: Proxmox VE is free and open-source on Debian with KVM and LXC; Hyper-V is a role inside a licensed Windows, since the free standalone Hyper-V Server was discontinued after 2019" width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;" />
&lt;p>The short version: &lt;strong>Proxmox VE is free and open-source; Hyper-V is not free anymore.&lt;/strong> The free, standalone Hyper-V Server that homelabbers used to grab was discontinued after its 2019 edition, so in 2026 Hyper-V means enabling a role inside a licensed copy of Windows. That single fact reshapes the whole comparison, especially now that the Broadcom-era VMware price hikes have people hunting for an escape hatch - and finding that Microsoft&amp;rsquo;s &amp;ldquo;free&amp;rdquo; one quietly closed.&lt;/p>
&lt;p>This guide compares the two honestly: what each really costs, how they differ in features and management, and which one fits a home lab or a small business.&lt;/p>
&lt;h2 id="the-cost-and-licensing-reality-the-part-that-changed">The cost and licensing reality (the part that changed)&lt;/h2>
&lt;p>This is the difference that matters most in 2026, so it goes first.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Proxmox VE is free and open-source.&lt;/strong> You download it, install it, and run unlimited VMs and containers with no license key, no node limit, and no time limit. An optional paid subscription (per CPU socket, per year) gets you the enterprise software repository and vendor support, but the features are identical to the free community version.&lt;/li>
&lt;li>&lt;strong>Hyper-V is no longer free as a standalone product.&lt;/strong> Microsoft discontinued the standalone Hyper-V Server line after &lt;strong>Hyper-V Server 2019&lt;/strong> - the last free, standalone edition - and its mainstream support ended in &lt;strong>January 2024&lt;/strong> (&lt;a href="https://learn.microsoft.com/en-us/lifecycle/products/hyperv-server-2019" rel="noopener">Microsoft Lifecycle&lt;/a>). In 2026 you get Hyper-V by enabling the role on a &lt;strong>licensed Windows&lt;/strong>: either Windows Server (licensed &lt;strong>per physical core&lt;/strong>, with a &lt;strong>16-core-per-server&lt;/strong> and 8-core-per-processor minimum, per &lt;a href="https://www.microsoft.com/en-us/licensing/product-licensing/windows-server" rel="noopener">Microsoft&amp;rsquo;s Windows Server licensing&lt;/a>) or Windows 10/11 Pro/Enterprise for desktop-class virtualization. Enabling the role is free; the Windows underneath it is not, and you license your Windows VMs on top.&lt;/li>
&lt;/ul>
&lt;p>So the &amp;ldquo;free Microsoft hypervisor&amp;rdquo; many people still assume exists mostly doesn&amp;rsquo;t. Hyper-V the technology is alive and well - it&amp;rsquo;s a supported role in Windows Server 2022 (mainstream support through October 2026, extended support through October 2031) and 2025 - but there is no free, bare-metal Hyper-V host in 2026. If free is the requirement, Proxmox is the answer.&lt;/p>
&lt;h2 id="proxmox-ve-vs-hyper-v-at-a-glance">Proxmox VE vs Hyper-V at a glance&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">&lt;/th>
&lt;th scope="col">Proxmox VE&lt;/th>
&lt;th scope="col">Hyper-V&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Cost&lt;/td>
&lt;td>Free, open-source (optional paid support)&lt;/td>
&lt;td>Needs a licensed Windows (Server per-core, or Win 10/11 Pro)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Base OS&lt;/td>
&lt;td>Debian Linux&lt;/td>
&lt;td>Windows Server / Windows 10-11 Pro&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Hypervisor&lt;/td>
&lt;td>KVM (type-1) + LXC containers&lt;/td>
&lt;td>Hyper-V (type-1)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Management&lt;/td>
&lt;td>Built-in web UI (per-node + cluster)&lt;/td>
&lt;td>Windows Admin Center / Hyper-V Manager / Failover Cluster Manager&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Clustering + HA&lt;/td>
&lt;td>Built in, free&lt;/td>
&lt;td>Failover clustering (Windows Server; more setup)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Live migration&lt;/td>
&lt;td>Built in, free&lt;/td>
&lt;td>Live Migration (Windows Server)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Backup&lt;/td>
&lt;td>Built in (+ Proxmox Backup Server)&lt;/td>
&lt;td>Windows Server Backup / third-party&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Containers&lt;/td>
&lt;td>LXC (system containers) natively&lt;/td>
&lt;td>Windows containers (Windows-centric)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Best for&lt;/td>
&lt;td>Home labs, budget builds, open-source flexibility&lt;/td>
&lt;td>Microsoft-ecosystem shops, Windows-heavy workloads&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;h2 id="architecture-and-ease-of-use">Architecture and ease of use&lt;/h2>
&lt;p>Both are true type-1 hypervisors, so raw VM performance is close; the practical differences are the platform and the tooling around them.&lt;/p>
&lt;p>&lt;strong>Proxmox VE&lt;/strong> runs on Debian Linux and manages everything through a single built-in web interface - VMs, LXC containers, storage, networking, clustering, and backups - with no extra server to install. That web UI is the reason Proxmox punches above its weight for a home lab: you get enterprise-style features from one browser tab. The trade-off is a steeper start if you are not comfortable with Linux concepts like ZFS, bridges, and the shell when something goes sideways.&lt;/p>
&lt;p>&lt;strong>Hyper-V&lt;/strong> lives inside Windows, so if you already administer Windows it feels familiar fast - creating a Windows VM is a wizard, and it integrates cleanly with Active Directory, Group Policy, and System Center in a business setting. Multiple 2026 hands-on comparisons put Hyper-V as the easier one to pick up for Windows admins, while noting it carries the overhead of the Windows OS underneath and leans on paid infrastructure for its more advanced features (&lt;a href="https://www.xda-developers.com/should-you-use-proxmox-hyper-v-in-or-esxi-in-your-home-lab/" rel="noopener">XDA Developers&lt;/a>, &lt;a href="https://www.wundertech.net/proxmox-vs-hyper-v-side-by-side-comparison/" rel="noopener">WunderTech&lt;/a>).&lt;/p>
&lt;h2 id="containers-proxmoxs-quiet-advantage">Containers: Proxmox&amp;rsquo;s quiet advantage&lt;/h2>
&lt;p>If you want to run containers next to your VMs - which most self-hosters do - Proxmox has the edge. It supports &lt;strong>LXC system containers&lt;/strong> natively from the same web UI, so you can spin up a lightweight Linux container in seconds instead of a full VM, and run Docker inside an LXC or a small VM. Hyper-V&amp;rsquo;s container story is tied to Windows containers and the Windows ecosystem, which is a fit if that&amp;rsquo;s your world but not the flexible, low-overhead path a homelab usually wants. For the VM-vs-container decision itself, see &lt;a href="https://techfuelhq.com/homelab/lxc-vs-vm-proxmox-2026/">LXC vs VMs on Proxmox&lt;/a> and &lt;a href="https://techfuelhq.com/articles/proxmox-vs-docker-2026/">Proxmox vs Docker&lt;/a>.&lt;/p>
&lt;h2 id="hardware-and-resource-use">Hardware and resource use&lt;/h2>
&lt;p>Proxmox is lean. It runs happily on a mini PC or an older desktop, which is exactly why it is the popular home-lab pick on the kind of low-power hardware covered in the &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">best mini PCs for a home lab&lt;/a> guide; check the &lt;a href="https://techfuelhq.com/homelab/proxmox-hardware-requirements-2026/">Proxmox hardware requirements&lt;/a> before you buy. Hyper-V needs enough headroom to run its Windows host comfortably on top of your VMs, so on the same modest box Proxmox generally feels more responsive because it isn&amp;rsquo;t carrying a full desktop OS. On strong, Windows-centric server hardware the gap narrows and Hyper-V is perfectly capable.&lt;/p>
&lt;h2 id="the-vmware-exodus-context">The VMware-exodus context&lt;/h2>
&lt;p>A lot of people arrive at this comparison because the Broadcom acquisition reshaped VMware&amp;rsquo;s licensing and pricing, and they&amp;rsquo;re looking for somewhere to land. Both Proxmox and Hyper-V are legitimate off-ramps from VMware - but the twist is that Microsoft&amp;rsquo;s free standalone option is gone too, so the &amp;ldquo;free escape&amp;rdquo; is Proxmox, not Hyper-V. If VMware/ESXi specifically is what you&amp;rsquo;re leaving, the &lt;a href="https://techfuelhq.com/articles/proxmox-vs-esxi-2025/">Proxmox vs ESXi comparison&lt;/a> covers that migration in depth; this page is the Microsoft side of the same decision.&lt;/p>
&lt;h2 id="who-should-run-which">Who should run which&lt;/h2>
&lt;p>&lt;strong>Run Proxmox VE if:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>You want a genuinely free, open-source platform with no license to manage.&lt;/li>
&lt;li>It&amp;rsquo;s a home lab, or a budget-conscious business, especially on mini PCs or older hardware.&lt;/li>
&lt;li>You want VMs and lightweight containers from one web interface.&lt;/li>
&lt;li>You&amp;rsquo;re leaving VMware and &amp;ldquo;free&amp;rdquo; is a hard requirement.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Run Hyper-V if:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>You&amp;rsquo;re already deep in the Microsoft ecosystem (Active Directory, System Center, Windows Server) and value that integration.&lt;/li>
&lt;li>Your workloads are Windows-heavy and you&amp;rsquo;re comfortable licensing Windows Server per core.&lt;/li>
&lt;li>You specifically want to learn or standardize on Microsoft&amp;rsquo;s virtualization stack.&lt;/li>
&lt;li>You just need desktop-class VMs on a machine that already runs Windows 11 Pro.&lt;/li>
&lt;/ul>
&lt;h2 id="the-verdict">The verdict&lt;/h2>
&lt;p>For a home lab or a cost-sensitive setup in 2026, &lt;strong>Proxmox VE is the default recommendation&lt;/strong> - free, open-source, light on hardware, and complete out of the box with clustering, HA, live migration, and backups. &lt;strong>Hyper-V earns its place in Microsoft-centric environments&lt;/strong>, where its integration and familiar tooling are worth running on a licensed Windows host. The old tie-breaker - &amp;ldquo;Hyper-V is free too&amp;rdquo; - no longer applies: the free standalone Hyper-V Server is gone, so if budget and openness lead your decision, Proxmox wins it cleanly. Ready to try it? The &lt;a href="https://techfuelhq.com/articles/how-to-install-proxmox-ve-2026/">how to install Proxmox VE&lt;/a> guide gets you from download to first VM.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>Hyper-V licensing and lifecycle: &lt;a href="https://www.starwindsoftware.com/blog/windows-server-2025-and-free-hyper-v-dream/" rel="noopener">StarWind&lt;/a> on the end of free standalone Hyper-V, plus Microsoft Lifecycle for &lt;a href="https://learn.microsoft.com/en-us/lifecycle/products/hyperv-server-2019" rel="noopener">Hyper-V Server 2019&lt;/a> (mainstream support ended 2024-01-09) and &lt;a href="https://learn.microsoft.com/en-us/lifecycle/products/windows-server-2022" rel="noopener">Windows Server 2022&lt;/a>, and Microsoft&amp;rsquo;s &lt;a href="https://www.microsoft.com/en-us/licensing/product-licensing/windows-server" rel="noopener">Windows Server licensing&lt;/a> (per-core minimums).&lt;/li>
&lt;li>Proxmox vs Hyper-V hands-on comparisons: &lt;a href="https://www.xda-developers.com/should-you-use-proxmox-hyper-v-in-or-esxi-in-your-home-lab/" rel="noopener">XDA Developers&lt;/a>, &lt;a href="https://www.wundertech.net/proxmox-vs-hyper-v-side-by-side-comparison/" rel="noopener">WunderTech&lt;/a>, &lt;a href="https://www.horizoniq.com/blog/proxmox-vs-hyper-v/" rel="noopener">HorizonIQ&lt;/a>.&lt;/li>
&lt;li>Proxmox VE features and licensing: our own &lt;a href="https://techfuelhq.com/articles/proxmox-vs-esxi-2025/">Proxmox vs ESXi&lt;/a> and &lt;a href="https://techfuelhq.com/articles/how-to-install-proxmox-ve-2026/">how to install Proxmox VE&lt;/a> guides.&lt;/li>
&lt;/ul>
&lt;p>&lt;em>Comparison current as of mid-2026. Licensing terms and Windows Server core pricing can change - confirm current Microsoft licensing before a business purchase. Found an error? Email &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a> with the article URL.&lt;/em>&lt;/p></description></item><item><title>Safe CPU Temperatures in 2026: What's Normal, What's Too Hot</title><link>https://techfuelhq.com/articles/safe-cpu-temp-2026/</link><pubDate>Sat, 04 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/safe-cpu-temp-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-07-04 · Updated 2026-07-13 · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence which products get recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;img src="https://techfuelhq.com/images/articles/hero-safe-cpu-temp-2026.svg" alt="Safe CPU temperatures in 2026: 30-50C idle, 60-85C gaming, and TjMax limits of 95C for Ryzen (incl. 9800X3D), ~89C for Zen 4 X3D like the 7800X3D, and 100-105C for Intel - why hitting the limit can be normal" width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;" />
&lt;p>The short answer: &lt;strong>30-50C at idle and 60-85C while gaming is healthy, and hitting your chip&amp;rsquo;s rated limit (95C on a Ryzen including the 9800X3D, ~89C on Zen 4 X3D parts like the 7800X3D, 100-105C on Intel) under a heavy load is usually normal, not damage.&lt;/strong> The single most important thing to understand about CPU temps in 2026 is that modern processors are &lt;em>designed&lt;/em> to run hot - they boost right up to their thermal limit on purpose. This guide gives the real numbers by chip and workload, the X3D exception that trips people up, and how to tell a normal temperature from an actual problem.&lt;/p>
&lt;p>Rather than hand you one more &amp;ldquo;65-85C is safe&amp;rdquo; range, the whole guide runs on a single idea you can apply to any reading: &lt;strong>a temperature is only meaningful next to the workload that produced it.&lt;/strong> Start with where your number actually falls on the scale.&lt;/p>
&lt;!-- ========== SIGNATURE VISUAL A: THE TEMPERATURE SPECTRUM (linear zoned scale + positioned Tjmax redlines - wave-24 grammar, deliberately NOT the sibling cpu-overheating radial dial) ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0e1116;border:1px solid rgba(74,222,128,0.2);border-radius:10px;padding:24px 20px 18px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
&lt;div style="margin-bottom:14px;">
&lt;div style="display:flex;align-items:center;gap:9px;">
&lt;span style="width:8px;height:8px;border-radius:50%;background:#4ade80;box-shadow:0 0 8px #4ade80;">&lt;/span>
&lt;div style="font-size:19px;font-weight:700;color:#e6f4ea;letter-spacing:-0.3px;">The whole scale, from idle to redline&lt;/div>
&lt;/div>
&lt;div style="font-size:12.5px;color:#8ea394;margin-top:6px;line-height:1.5;">Find your number on the bar. The green-to-lime band is where a healthy chip &lt;em>lives&lt;/em> under load; the red ticks below are each family&amp;#8217;s hard limit (TjMax), where it starts protecting itself. Touching a redline in a stress test is by design &amp;#8212; not damage.&lt;/div>
&lt;/div>
&lt;div style="width:100%;overflow-x:auto;">
&lt;svg viewBox="0 0 500 172" width="100%" style="min-width:340px;height:auto;display:block;" role="img" aria-label="Horizontal CPU temperature scale from 30 to 110 Celsius. 30 to 50C idle (cyan), 50 to 60C light load (teal), 60 to 85C gaming and normal load (green), 85 to 95C peak boost by design (lime), 95 to 105C throttle (orange), above 105C danger (red). Red TjMax redline ticks sit at 89C for Zen 4 X3D, 95C for most Ryzen, 100C for Intel 12th to 14th gen, and 105C for Intel Arrow Lake.">
&lt;defs>&lt;clipPath id="barclip">&lt;rect x="30" y="86" width="440" height="30" rx="8"/>&lt;/clipPath>&lt;/defs>
&lt;text x="30" y="20" font-family="-apple-system,Segoe UI,sans-serif" font-size="9.5" font-weight="700" letter-spacing="1" fill="#c98a8a">RED TICKS = each chip&amp;#8217;s hard limit (TjMax)&lt;/text>
&lt;g font-family="-apple-system,Segoe UI,sans-serif" font-size="12" font-weight="800" fill="#f4b6b6" text-anchor="middle">
&lt;text x="354.5" y="44">89&lt;/text>
&lt;text x="387.5" y="44">95&lt;/text>
&lt;text x="415" y="44">100&lt;/text>
&lt;text x="442.5" y="44">105&lt;/text>
&lt;/g>
&lt;g stroke="#ef4444" stroke-width="1.4" stroke-dasharray="3 2" opacity="0.85">
&lt;line x1="354.5" y1="50" x2="354.5" y2="84"/>
&lt;line x1="387.5" y1="50" x2="387.5" y2="84"/>
&lt;line x1="415" y1="50" x2="415" y2="84"/>
&lt;line x1="442.5" y1="50" x2="442.5" y2="84"/>
&lt;/g>
&lt;g clip-path="url(#barclip)">
&lt;rect x="30" y="86" width="110" height="30" fill="#22d3ee"/>
&lt;rect x="140" y="86" width="55" height="30" fill="#34d399"/>
&lt;rect x="195" y="86" width="137.5" height="30" fill="#4ade80"/>
&lt;rect x="332.5" y="86" width="55" height="30" fill="#c8ff00"/>
&lt;rect x="387.5" y="86" width="55" height="30" fill="#fb923c"/>
&lt;rect x="442.5" y="86" width="27.5" height="30" fill="#ef4444"/>
&lt;/g>
&lt;g font-family="-apple-system,Segoe UI,sans-serif" font-size="9.5" font-weight="800" letter-spacing="0.4" text-anchor="middle">
&lt;text x="85" y="105" fill="#063b45">IDLE&lt;/text>
&lt;text x="263" y="105" fill="#0a2413">GAMING&lt;/text>
&lt;text x="360" y="105" fill="#20260a">BOOST&lt;/text>
&lt;text x="415" y="105" fill="#2a1608">THROTTLE&lt;/text>
&lt;/g>
&lt;text x="456" y="80" text-anchor="middle" font-family="-apple-system,Segoe UI,sans-serif" font-size="9" font-weight="800" letter-spacing="0.4" fill="#f4a0a0">DANGER&lt;/text>
&lt;g stroke="#3a4450" stroke-width="1">
&lt;line x1="30" y1="116" x2="30" y2="122"/>
&lt;line x1="140" y1="116" x2="140" y2="122"/>
&lt;line x1="250" y1="116" x2="250" y2="122"/>
&lt;line x1="360" y1="116" x2="360" y2="122"/>
&lt;line x1="470" y1="116" x2="470" y2="122"/>
&lt;/g>
&lt;g font-family="-apple-system,Segoe UI,sans-serif" font-size="10" fill="#8a94a3" text-anchor="middle">
&lt;text x="30" y="135">30&lt;/text>
&lt;text x="140" y="135">50&lt;/text>
&lt;text x="250" y="135">70&lt;/text>
&lt;text x="360" y="135">90&lt;/text>
&lt;text x="470" y="135">110&amp;#176;C&lt;/text>
&lt;/g>
&lt;/svg>
&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:14px;padding-top:12px;border-top:1px solid rgba(74,222,128,0.12);font-size:11px;color:#c3d3c8;line-height:1.5;">
&lt;span>&lt;strong style="color:#f4b6b6;">89&amp;#176;&lt;/strong> Zen 4 X3D (7800X3D, 5800X3D)&lt;/span>
&lt;span>&lt;strong style="color:#f4b6b6;">95&amp;#176;&lt;/strong> most Ryzen 7000/9000, incl. 9800X3D &amp;amp; 9950X3D&lt;/span>
&lt;span>&lt;strong style="color:#f4b6b6;">100&amp;#176;&lt;/strong> Intel Core 12&amp;#8211;14th gen&lt;/span>
&lt;span>&lt;strong style="color:#f4b6b6;">105&amp;#176;&lt;/strong> Intel Arrow Lake (Core Ultra 200S)&lt;/span>
&lt;/div>
&lt;div style="margin-top:12px;font-size:10.5px;color:#6f7d72;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;">
&lt;span>TjMax figures from AMD &amp;amp; Intel published specifications, verified July 2026.&lt;/span>
&lt;span style="font-family:ui-monospace,monospace;color:#566158;">techfuelhq.com&lt;/span>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="modern-cpus-are-built-to-run-hot">Modern CPUs are built to run hot&lt;/h2>
&lt;p>The instinct that &amp;ldquo;hot equals damage&amp;rdquo; is out of date. Both AMD and Intel now use aggressive boost algorithms that push clock speed until the chip hits either its power limit or its temperature limit - whichever comes first. That means a healthy modern CPU under a heavy all-core load will often sit right at a temperature that would have terrified you a decade ago, and that&amp;rsquo;s the chip doing exactly what it was engineered to do.&lt;/p>
&lt;p>So a Ryzen 7000/9000 at 90-95C in a render, or an Intel Core chip in the 90s during a stress test, is not a red flag by itself. What matters is whether the temperature &lt;em>matches the workload&lt;/em> - which is the lens this whole guide uses.&lt;/p>
&lt;h2 id="safe-cpu-temperatures-by-chip-and-workload">Safe CPU temperatures by chip and workload&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Workload&lt;/th>
&lt;th scope="col">Healthy&lt;/th>
&lt;th scope="col">Normal ceiling (TjMax)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Idle / desktop&lt;/td>
&lt;td>30-50C&lt;/td>
&lt;td>-&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Gaming&lt;/td>
&lt;td>60-85C&lt;/td>
&lt;td>-&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Heavy all-core (render, stress)&lt;/td>
&lt;td>75-90C&lt;/td>
&lt;td>at the chip&amp;rsquo;s limit below&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>AMD Ryzen 7000/9000&lt;/strong> (non-X3D)&lt;/td>
&lt;td>-&lt;/td>
&lt;td>&lt;strong>95C&lt;/strong> (by design)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>AMD Zen 4 X3D&lt;/strong> (5800X3D/7800X3D)&lt;/td>
&lt;td>-&lt;/td>
&lt;td>&lt;strong>~89C&lt;/strong> (lower - see below)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>AMD Zen 5 X3D&lt;/strong> (9800X3D/9950X3D)&lt;/td>
&lt;td>-&lt;/td>
&lt;td>&lt;strong>95C&lt;/strong> (limit restored)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Intel Core 12th-14th gen&lt;/strong>&lt;/td>
&lt;td>-&lt;/td>
&lt;td>&lt;strong>~100C&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Intel Arrow Lake&lt;/strong> (Core Ultra 200S)&lt;/td>
&lt;td>-&lt;/td>
&lt;td>&lt;strong>105C&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>High-end chips idle warmer than you&amp;rsquo;d expect - a Ryzen 7 7800X3D commonly idles around 45-50C, which is normal, not a fault. The healthy targets above are where you want your &lt;em>sustained&lt;/em> temps; brief spikes to TjMax during a stress test or a heavy load burst are fine.&lt;/p>
&lt;h2 id="the-x3d-exception-7800x3d--9800x3d">The X3D exception (7800X3D / 9800X3D)&lt;/h2>
&lt;p>This is the detail most temperature guides miss - and it&amp;rsquo;s genuinely a story about &lt;em>physics&lt;/em>, not a spec typo. AMD&amp;rsquo;s X3D chips bolt a slab of extra L3 cache (the 3D V-Cache) onto the compute die. On &lt;strong>Zen 4&lt;/strong> parts (5800X3D, &lt;a href="https://techfuelhq.com/reviews/ryzen-7-7800x3d-review-2026/">7800X3D&lt;/a>) that cache sits &lt;strong>on top of&lt;/strong> the cores - so every watt of heat the cores make has to travel &lt;em>up through&lt;/em> the cache before it reaches the heatspreader and your cooler. Cache silicon is a worse thermal conductor than the cores, so AMD holds those chips to a lower ceiling (~89C) to protect the stack. On &lt;strong>Zen 5&lt;/strong> (9800X3D, 9950X3D) AMD flipped the sandwich: the cache moved &lt;strong>underneath&lt;/strong> the cores, the cores now touch the heatspreader directly, and the full &lt;strong>95C&lt;/strong> limit came back. Same trick, literally turned upside down.&lt;/p>
&lt;!-- ========== SIGNATURE VISUAL B: THE X3D TWO-CEILINGS CACHE STACK (physical cross-section comparison - distinct within-wave form, not the sibling's pill row) ========== -->
&lt;div class="visual-block">
&lt;div style="background:#100c17;border:1px solid rgba(200,255,0,0.18);border-radius:10px;padding:24px 20px 18px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
&lt;div style="margin-bottom:16px;">
&lt;div style="display:flex;align-items:center;gap:9px;">
&lt;span style="width:8px;height:8px;border-radius:50%;background:#c8ff00;box-shadow:0 0 8px #c8ff00;">&lt;/span>
&lt;div style="font-size:19px;font-weight:700;color:#eef0e0;letter-spacing:-0.3px;">Why 89&amp;#176; became 95&amp;#176;: AMD flipped the sandwich&lt;/div>
&lt;/div>
&lt;div style="font-size:12.5px;color:#a39bb0;margin-top:6px;line-height:1.5;">Both chips stack cache and cores under one heatspreader. What changed between generations is the &lt;strong style="color:#e7e3f2;">order of the layers&lt;/strong> &amp;#8212; and that order is the whole reason the ceiling moved 6 degrees.&lt;/div>
&lt;/div>
&lt;div style="display:flex;gap:14px;flex-wrap:wrap;">
&lt;div style="flex:1;min-width:200px;background:rgba(251,146,60,0.05);border:1px solid rgba(251,146,60,0.22);border-radius:8px;padding:14px 14px 12px;">
&lt;div style="font-size:12px;font-weight:700;color:#fbdcc0;">Zen 4 X3D &amp;#8212; cache on top&lt;/div>
&lt;div style="font-size:11px;color:#b79c8c;margin-bottom:11px;">5800X3D, 7800X3D&lt;/div>
&lt;div style="display:flex;flex-direction:column;gap:3px;">
&lt;div style="background:#4b5563;color:#e5e7eb;font-size:10px;font-weight:600;text-align:center;padding:6px;border-radius:4px 4px 0 0;letter-spacing:0.3px;">HEATSPREADER (to cooler)&lt;/div>
&lt;div style="background:rgba(251,146,60,0.32);color:#3a2410;font-size:10px;font-weight:800;text-align:center;padding:9px 6px;letter-spacing:0.3px;">3D V-CACHE &amp;#160;(heat must cross this)&lt;/div>
&lt;div style="background:#c8ff00;color:#1a2000;font-size:10px;font-weight:800;text-align:center;padding:9px 6px;border-radius:0 0 4px 4px;letter-spacing:0.3px;">CORES &amp;#160;&amp;#8593; hot&lt;/div>
&lt;/div>
&lt;div style="margin-top:11px;text-align:center;">&lt;span style="font-size:26px;font-weight:800;color:#fb923c;">~89&amp;#176;C&lt;/span>&lt;div style="font-size:10.5px;color:#b79c8c;">ceiling &amp;#8212; the cache blanket runs hotter&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="flex:1;min-width:200px;background:rgba(200,255,0,0.05);border:1px solid rgba(200,255,0,0.22);border-radius:8px;padding:14px 14px 12px;">
&lt;div style="font-size:12px;font-weight:700;color:#eef7c8;">Zen 5 X3D &amp;#8212; cache underneath&lt;/div>
&lt;div style="font-size:11px;color:#a9b18a;margin-bottom:11px;">9800X3D, 9950X3D&lt;/div>
&lt;div style="display:flex;flex-direction:column;gap:3px;">
&lt;div style="background:#4b5563;color:#e5e7eb;font-size:10px;font-weight:600;text-align:center;padding:6px;border-radius:4px 4px 0 0;letter-spacing:0.3px;">HEATSPREADER (to cooler)&lt;/div>
&lt;div style="background:#c8ff00;color:#1a2000;font-size:10px;font-weight:800;text-align:center;padding:9px 6px;letter-spacing:0.3px;">CORES &amp;#160;&amp;#8593; hot, touching the lid&lt;/div>
&lt;div style="background:rgba(200,255,0,0.18);color:#26310a;font-size:10px;font-weight:800;text-align:center;padding:9px 6px;border-radius:0 0 4px 4px;letter-spacing:0.3px;">3D V-CACHE &amp;#160;(out of the heat path)&lt;/div>
&lt;/div>
&lt;div style="margin-top:11px;text-align:center;">&lt;span style="font-size:26px;font-weight:800;color:#c8ff00;">95&amp;#176;C&lt;/span>&lt;div style="font-size:10.5px;color:#a9b18a;">ceiling &amp;#8212; full limit restored&lt;/div>&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:14px;padding-top:11px;border-top:1px solid rgba(200,255,0,0.12);font-size:11.5px;color:#a39bb0;line-height:1.5;">Practical upshot: on a &lt;strong style="color:#e7e3f2;">7800X3D&lt;/strong>, treat ~85&amp;#176;C as your comfortable load target and ~89&amp;#176;C as the ceiling. On a &lt;strong style="color:#e7e3f2;">9800X3D or 9950X3D&lt;/strong>, judge it like any other Ryzen &amp;#8212; 95&amp;#176;C under load is fine.&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>The upside is the same for both: X3D chips draw less power than their raw performance suggests, so they run cool for what they deliver. A good air cooler or a 240/360mm AIO keeps them well in range, and a small Curve Optimizer undervolt (the AMD equivalent of the &lt;a href="https://techfuelhq.com/articles/rtx-5080-undervolt-guide-2026/">undervolting principle covered in our RTX 5080 guide&lt;/a>) shaves several degrees with no performance cost - often the single best thing you can do for an X3D chip&amp;rsquo;s temperatures.&lt;/p>
&lt;h2 id="laptops-play-by-different-rules">Laptops play by different rules&lt;/h2>
&lt;p>Everything above assumes a desktop. Laptops run hotter on purpose, because they cram the same class of chip into a fraction of the cooling. &lt;strong>75-90C on the CPU while gaming is normal for a laptop,&lt;/strong> and a thin machine touching 90-95C under a sustained load - with the chip deliberately thermal-throttling to stay there - is usually the design working, not a fault. That is the trade-off for the form factor.&lt;/p>
&lt;p>The warning signs are the same as anywhere: hot at &lt;em>idle&lt;/em>, or throttling during &lt;em>light&lt;/em> use. Because a laptop pulls air through one small blower that clogs fast (especially on a bed, couch, or carpet that blocks the underside vents), the first fix is almost always cleaning the intake and fan with compressed air, then raising the back for airflow or using a cooling pad. An undervolt via ThrottleStop (Intel) or the vendor tuning app cuts temps with little performance loss, and a repaste helps on an older machine - though on a laptop that means disassembly.&lt;/p>
&lt;h2 id="when-a-temperature-actually-means-trouble">When a temperature actually means trouble&lt;/h2>
&lt;p>The rule is simple: &lt;strong>worry when the temperature doesn&amp;rsquo;t fit the work.&lt;/strong> 95C in a full render is fine; 95C while opening a browser is not. Signs of a real cooling problem:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>High temps at idle or light load&lt;/strong> - sitting at 90C+ while browsing points to a failed or unplugged AIO pump, dried-out or badly applied thermal paste, or a cooler that isn&amp;rsquo;t seated properly.&lt;/li>
&lt;li>&lt;strong>Sudden shutdowns&lt;/strong> under load - the chip is hitting its emergency limit (if it reboots the whole PC, work the &lt;a href="https://techfuelhq.com/articles/pc-keeps-restarting-2026/">PC keeps restarting fixes&lt;/a>).&lt;/li>
&lt;li>&lt;strong>Sustained throttling during normal gaming&lt;/strong> - clocks dropping and staying down means the cooler can&amp;rsquo;t keep up.&lt;/li>
&lt;li>&lt;strong>A sharp jump after reseating&lt;/strong> the cooler - usually a paste or mounting-pressure issue.&lt;/li>
&lt;/ul>
&lt;p>Those are faults to fix, not numbers to live with - if your chip is genuinely overheating (throttling or shutting down), the &lt;a href="https://techfuelhq.com/articles/cpu-overheating-2026/">why is my CPU overheating&lt;/a> guide diagnoses the cause by &lt;em>when&lt;/em> it happens. A quick temperature sanity check is also worth doing before you blame the CPU for stutter - the &lt;a href="https://techfuelhq.com/tools/pc-bottleneck-calculator/">PC Bottleneck Calculator&lt;/a> helps you separate a thermal problem from a genuine CPU/GPU mismatch, and the &lt;a href="https://techfuelhq.com/tools/cpu-comparison/">CPU Comparison Tool&lt;/a> shows where your chip should land when it&amp;rsquo;s cooled properly.&lt;/p>
&lt;h2 id="how-to-bring-temperatures-down">How to bring temperatures down&lt;/h2>
&lt;p>If your temps are higher than the healthy ranges above, the fixes in rough order of impact:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Improve case airflow&lt;/strong> - intake and exhaust fans, and make sure the case isn&amp;rsquo;t starved. This is the cheapest, biggest win on many builds.&lt;/li>
&lt;li>&lt;strong>Reapply thermal paste&lt;/strong> if it&amp;rsquo;s a few years old or was applied badly - a dried pea of old paste is a common culprit for a chip that used to run cooler. A ~$5 tube of a proven paste like the &lt;a href="https://www.amazon.com/dp/B07L9BDY3T?tag=techfuelhq-20" rel="nofollow sponsored">Arctic MX-4&lt;/a> (or the higher-performance &lt;a href="https://www.amazon.com/dp/B09VDL3CW6?tag=techfuelhq-20" rel="nofollow sponsored">MX-6&lt;/a>) is enough for years of repastes and often drops load temps several degrees on a chip that was running hot.&lt;/li>
&lt;li>&lt;strong>Undervolt&lt;/strong> - a Curve Optimizer offset (AMD) or a voltage offset (Intel) lowers temperature with little or no performance loss. It&amp;rsquo;s the tuning step that pays off most for the least effort.&lt;/li>
&lt;li>&lt;strong>Set a sane fan curve&lt;/strong> - many boards ship conservative curves; a slightly more aggressive one trades a little noise for a lot of headroom.&lt;/li>
&lt;li>&lt;strong>Upgrade the cooler&lt;/strong> if the chip is genuinely too much for it - a quality air cooler or a 240/360mm AIO like the &lt;a href="https://techfuelhq.com/reviews/nzxt-kraken-360-review-2026/">NZXT Kraken 360&lt;/a> handles any current desktop chip.&lt;/li>
&lt;/ol>
&lt;h2 id="the-verdict">The verdict&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Idle:&lt;/strong> 30-50C is normal (high-end chips run at the top of that).&lt;/li>
&lt;li>&lt;strong>Gaming:&lt;/strong> 60-85C is the healthy zone; under 80C keeps boost clocks high.&lt;/li>
&lt;li>&lt;strong>Heavy load:&lt;/strong> up to TjMax is within spec - 95C for Ryzen 7000/9000 (incl. Zen 5 X3D), ~89C for Zen 4 X3D, 100C for Intel Core 12-14th gen, 105C for Arrow Lake.&lt;/li>
&lt;li>&lt;strong>Laptops:&lt;/strong> add ~5-10C - 75-90C gaming is normal by design.&lt;/li>
&lt;li>&lt;strong>The rule:&lt;/strong> judge the temperature against the workload. Hitting the limit in a render is normal; hitting it at idle is a cooling fault.&lt;/li>
&lt;/ul>
&lt;p>Modern CPUs are supposed to run warm, so don&amp;rsquo;t panic at a big number in a stress test. Watch instead for temperatures that don&amp;rsquo;t match what you&amp;rsquo;re doing - that&amp;rsquo;s the real signal that something needs fixing.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>AMD Ryzen 7000/9000 TjMax (95C by design): AMD&amp;rsquo;s stated Zen 4/5 thermal threshold, confirmed across 2026 reviews and AMD&amp;rsquo;s own product pages (e.g. &lt;a href="https://www.amd.com/en/products/processors/desktops/ryzen/9000-series/amd-ryzen-9-9950x3d.html" rel="noopener">AMD Ryzen 9 9950X3D specs&lt;/a>, corroborated by &lt;a href="https://www.techpowerup.com/review/amd-ryzen-9-9950x3d/24.html" rel="noopener">TechPowerUp&amp;rsquo;s 9950X3D temperature testing&lt;/a>).&lt;/li>
&lt;li>Zen 4 X3D ceiling (~89C, lower than 95C because the stacked 3D V-Cache sits on top of the cores and is more thermally sensitive) and the Zen 5 X3D restack to 95C: AMD&amp;rsquo;s X3D specifications, reported consistently across 2026 hardware outlets. Corroborated first-party by our own &lt;a href="https://techfuelhq.com/reviews/ryzen-7-7800x3d-review-2026/">Ryzen 7 7800X3D review&lt;/a>.&lt;/li>
&lt;li>Intel Arrow Lake TjMax (105C, raised from the traditional 100C): &lt;a href="https://www.intel.com/content/www/us/en/products/sku/241060/intel-core-ultra-9-processor-285k-36m-cache-up-to-5-70-ghz/specifications.html" rel="noopener">Intel Core Ultra 9 285K product specifications&lt;/a> and &lt;a href="https://www.tomshardware.com/pc-components/cpus/intel-core-ultra-9-285k-cpu-review" rel="noopener">Tom&amp;rsquo;s Hardware&amp;rsquo;s Arrow Lake review&lt;/a>.&lt;/li>
&lt;li>First-party context: our &lt;a href="https://techfuelhq.com/reviews/ryzen-7-7800x3d-review-2026/">Ryzen 7 7800X3D review&lt;/a> (real X3D thermals and Curve Optimizer setup) and &lt;a href="https://techfuelhq.com/reviews/nzxt-kraken-360-review-2026/">NZXT Kraken 360 review&lt;/a>.&lt;/li>
&lt;/ul>
&lt;p>&lt;em>Figures are general guidance for desktop chips in 2026 (laptops run warmer); check your specific CPU&amp;rsquo;s spec page for its exact TjMax. Found an error? Email &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a> with the article URL.&lt;/em>&lt;/p></description></item><item><title>Second Monitor Not Detected? The Fix Order That Works (2026)</title><link>https://techfuelhq.com/articles/second-monitor-not-detected-2026/</link><pubDate>Sat, 04 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/second-monitor-not-detected-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-07-04 · ~7 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence what gets recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;p>A second monitor that won&amp;rsquo;t show up in Windows is almost never a broken monitor. It&amp;rsquo;s usually a setting Windows didn&amp;rsquo;t apply, a cable in the wrong port, or a display plugged into the motherboard instead of the graphics card. This guide works the fixes in the &lt;strong>right order&lt;/strong> — fastest and most common first — so you&amp;rsquo;re not reinstalling drivers to solve what a keyboard shortcut would have fixed. Most people are done by step 3.&lt;/p>
&lt;h2 id="first-is-it-not-detected-or-no-signal">First: is it &amp;ldquo;not detected&amp;rdquo; or &amp;ldquo;no signal&amp;rdquo;?&lt;/h2>
&lt;p>These look the same but point in different directions, so check which you have:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Not detected&lt;/strong> — the monitor is on but Windows doesn&amp;rsquo;t list it in Display Settings. This is usually a Windows/driver issue. Start at step 1.&lt;/li>
&lt;li>&lt;strong>No signal&lt;/strong> (the monitor shows its own &amp;ldquo;No Signal&amp;rdquo; message) — the panel is powered but getting no video feed. This is a connection/port issue. Jump to step 3.&lt;/li>
&lt;/ul>
&lt;h2 id="step-1-force-windows-to-detect-it">Step 1: Force Windows to detect it&lt;/h2>
&lt;p>Windows sometimes just fails to register a display that&amp;rsquo;s physically fine. Make it look again:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Right-click the desktop → Display Settings.&lt;/strong> Scroll to &lt;strong>Multiple displays&lt;/strong> and click &lt;strong>Detect&lt;/strong>.&lt;/li>
&lt;li>&lt;strong>Set the projection mode.&lt;/strong> Press &lt;strong>Windows Key + P&lt;/strong> and choose &lt;strong>Extend&lt;/strong> (not &amp;ldquo;PC screen only,&amp;rdquo; which ignores the second display, and not &amp;ldquo;Duplicate&amp;rdquo; unless you want mirrored screens).&lt;/li>
&lt;li>&lt;strong>Restart the graphics driver without rebooting:&lt;/strong> press &lt;strong>Windows Key + Ctrl + Shift + B&lt;/strong>. The screen goes black and beeps for about a second, then comes back — Windows has reset the display stack and re-scanned for monitors. This one shortcut fixes a surprising number of &amp;ldquo;suddenly gone&amp;rdquo; second monitors, and most people have never heard of it.&lt;/li>
&lt;/ol>
&lt;p>If the display appears now, you&amp;rsquo;re done. If not, it&amp;rsquo;s hardware — keep going.&lt;/p>
&lt;h2 id="step-2-plug-both-monitors-into-the-graphics-card-the-1-hardware-mistake">Step 2: Plug both monitors into the graphics card (the #1 hardware mistake)&lt;/h2>
&lt;p>On a desktop with a dedicated graphics card, this is the most common cause and the easiest to miss. Your PC has &lt;strong>two sets of video outputs&lt;/strong>: the ones on the &lt;strong>graphics card&lt;/strong> (lower down on the back of the tower, oriented horizontally) and the ones on the &lt;strong>motherboard&lt;/strong> (up near the USB ports).&lt;/p>
&lt;p>When a dedicated GPU is installed, the motherboard&amp;rsquo;s video outputs are usually &lt;strong>inactive&lt;/strong> — they only drive a display if your CPU has integrated graphics &lt;em>and&lt;/em> the iGPU is enabled in the BIOS, which it often isn&amp;rsquo;t by default. So if you plugged your first monitor into the graphics card and your second into the motherboard, the second one typically gets no signal and never appears in Windows. &lt;strong>Move both cables to the graphics card&amp;rsquo;s ports.&lt;/strong> This alone fixes a huge share of &amp;ldquo;second monitor not detected&amp;rdquo; cases on desktops.&lt;/p>
&lt;h2 id="step-3-check-the-input-source-cable-and-port">Step 3: Check the input source, cable, and port&lt;/h2>
&lt;p>If it&amp;rsquo;s still missing (or showing &amp;ldquo;No Signal&amp;rdquo;), rule out the physical connection:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Input source:&lt;/strong> Use the monitor&amp;rsquo;s own physical buttons to open its menu and set the input to the exact port your cable is in — &lt;strong>HDMI 1&lt;/strong>, &lt;strong>DisplayPort&lt;/strong>, &lt;strong>USB-C&lt;/strong>, etc. A monitor sitting on the wrong input shows nothing even with a perfect cable.&lt;/li>
&lt;li>&lt;strong>Reseat the cable:&lt;/strong> Unplug both ends, wait five seconds, and push them back in until they click. DisplayPort and some HDMI connectors seat loosely.&lt;/li>
&lt;li>&lt;strong>Swap the cable:&lt;/strong> A marginal or damaged cable is one of the most common culprits, especially if you&amp;rsquo;re pushing high resolution or refresh rate. Test with a known-good, properly rated &lt;a href="https://www.amazon.com/s?k=VESA+certified+DisplayPort+2.1+cable&amp;tag=techfuelhq-20" rel="nofollow sponsored noopener" target="_blank">certified DisplayPort cable&lt;/a> or &lt;a href="https://www.amazon.com/s?k=ultra+high+speed+HDMI+2.1+cable&amp;tag=techfuelhq-20" rel="nofollow sponsored noopener" target="_blank">Ultra High Speed HDMI 2.1 cable&lt;/a> — a cable that can&amp;rsquo;t carry your resolution/refresh will silently fail to link.&lt;/li>
&lt;li>&lt;strong>Try a different port&lt;/strong> on the graphics card to rule out a single dead output.&lt;/li>
&lt;li>&lt;strong>Adapters:&lt;/strong> If you&amp;rsquo;re going DisplayPort-to-HDMI or using a splitter, a passive adapter often can&amp;rsquo;t handle high-refresh or multi-monitor signals — you need an &lt;a href="https://www.amazon.com/s?k=active+DisplayPort+to+HDMI+adapter&amp;tag=techfuelhq-20" rel="nofollow sponsored noopener" target="_blank">active DisplayPort-to-HDMI adapter&lt;/a>. On a laptop or USB-C setup, a &lt;a href="https://www.amazon.com/s?k=USB-C+docking+station+dual+monitor&amp;tag=techfuelhq-20" rel="nofollow sponsored noopener" target="_blank">USB-C docking station&lt;/a> (or its cable) is a frequent point of failure — test the monitor plugged directly into the machine first to isolate it.&lt;/li>
&lt;/ul>
&lt;h2 id="step-4-update-roll-back-or-clean-reinstall-the-gpu-driver">Step 4: Update, roll back, or clean-reinstall the GPU driver&lt;/h2>
&lt;p>If the hardware checks out, the driver is next. Outdated or corrupted display drivers routinely stop Windows from seeing a second monitor — and this is the usual cause when a monitor &lt;strong>stopped&lt;/strong> being detected right after a Windows or driver update.&lt;/p>
&lt;ol>
&lt;li>Press &lt;strong>Windows Key + X → Device Manager → Display adapters.&lt;/strong>&lt;/li>
&lt;li>Right-click your graphics card → &lt;strong>Update driver → Search automatically.&lt;/strong>&lt;/li>
&lt;li>If it&amp;rsquo;s already current, &lt;strong>roll it back&lt;/strong> (right-click → Properties → Driver → Roll Back Driver) — this is the fix when a recent update broke detection.&lt;/li>
&lt;li>For a stubborn case, do a &lt;strong>clean reinstall&lt;/strong>: use &lt;a href="https://www.wagnardsoft.com/" rel="noopener">DDU (Display Driver Uninstaller)&lt;/a> or the AMD Cleanup Utility to fully remove the driver, then install the latest from NVIDIA, AMD, or Intel directly. A clean reinstall clears the corrupted display configuration that a simple update leaves behind — the same approach that resolves a lot of &lt;a href="https://techfuelhq.com/articles/gpu-driver-crash-fix-2026/">GPU driver crashes&lt;/a>.&lt;/li>
&lt;/ol>
&lt;h2 id="the-fix-order-in-one-list">The fix order, in one list&lt;/h2>
&lt;ol>
&lt;li>&lt;strong>Force-detect:&lt;/strong> Display Settings → Detect, then &lt;strong>Win+P → Extend&lt;/strong>, then &lt;strong>Win+Ctrl+Shift+B&lt;/strong>.&lt;/li>
&lt;li>&lt;strong>Both monitors into the graphics card&lt;/strong>, not the motherboard.&lt;/li>
&lt;li>&lt;strong>Input source, cable, port&lt;/strong> — set the right input, reseat/swap the cable, try another port, check adapters/docks.&lt;/li>
&lt;li>&lt;strong>Driver&lt;/strong> — update, then roll back, then clean-reinstall with DDU.&lt;/li>
&lt;/ol>
&lt;p>Work it in that order and you fix the problem at the cheapest, fastest step instead of jumping straight to a reinstall. Once both screens are up, the next things worth dialing in are &lt;a href="https://techfuelhq.com/articles/fix-screen-tearing-2026/">screen tearing&lt;/a> and &lt;a href="https://techfuelhq.com/articles/how-to-fix-monitor-ghosting-2026/">monitor ghosting&lt;/a>, which are the two motion issues that show up once a display is actually working — and if a screen instead cuts to black intermittently, see &lt;a href="https://techfuelhq.com/articles/monitor-keeps-going-black-2026/">monitor keeps going black&lt;/a>.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>Force-detect, Win+P Extend, and driver steps: &lt;a href="https://www.windowscentral.com/microsoft/windows-help/how-to-fix-second-monitor-not-detected-on-windows-10-and-11" rel="noopener">Windows Central — How to fix a second monitor not detected&lt;/a> and &lt;a href="https://support.microsoft.com/en-us/windows/how-to-use-multiple-monitors-in-windows-329c6962-5a4d-b481-7baa-bec9671f728a" rel="noopener">Microsoft support — multiple displays&lt;/a>&lt;/li>
&lt;li>Cable/connection and GPU-vs-motherboard port causes: &lt;a href="https://www.dell.com/support/contents/en-us/article/product-support/self-support-knowledgebase/monitor-screen-video/multiple-displays-not-working" rel="noopener">Dell — Multi-Monitor Displays: Black Screen or Not Detected&lt;/a>&lt;/li>
&lt;li>Clean driver reinstall tool: &lt;a href="https://www.wagnardsoft.com/" rel="noopener">Display Driver Uninstaller (DDU)&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>&lt;em>Steps are for Windows 10 and 11 in 2026; menu names vary slightly by version and GPU vendor. Found an error? Email &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a> with the article URL.&lt;/em>&lt;/p></description></item><item><title>USB Device Not Recognized? The Fix Order That Works (2026)</title><link>https://techfuelhq.com/articles/usb-device-not-recognized-2026/</link><pubDate>Sat, 04 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/usb-device-not-recognized-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-07-04 · ~7 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence what gets recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;p>&amp;ldquo;USB device not recognized&amp;rdquo; is one of Windows&amp;rsquo; most common and most fixable errors. The good news: the device is usually fine — the fault is almost always the PC&amp;rsquo;s ports, a power setting, or a driver in a bad state. This guide works the fixes in order, from the ten-second checks to the driver-level fixes, so you solve it without buying anything you don&amp;rsquo;t need. Start at the top and stop when it works.&lt;/p>
&lt;h2 id="the-30-second-isolation-test">The 30-second isolation test&lt;/h2>
&lt;p>Before changing any settings, find out whether the problem is the &lt;strong>device&lt;/strong> or the &lt;strong>PC&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Plug the device into a different computer.&lt;/strong> If it works there, your PC is the problem — go to the software fixes below. If it fails on every PC and every cable, the device or its cable is the fault.&lt;/li>
&lt;li>&lt;strong>Try a different port and cable&lt;/strong> on your own PC. On a desktop, use a &lt;strong>rear port&lt;/strong> (directly on the motherboard&amp;rsquo;s I/O, not a front-panel or hub port) — rear ports are wired straight to the controller and are the most reliable.&lt;/li>
&lt;/ul>
&lt;p>Most of the time the device works elsewhere, which means the fix is in Windows.&lt;/p>
&lt;h2 id="fix-1-disable-usb-selective-suspend-the-1-silent-cause">Fix #1: Disable USB selective suspend (the #1 silent cause)&lt;/h2>
&lt;p>Windows has a power-saving feature that suspends USB ports to save energy, and it frequently fails to wake a device back up — so the device &amp;ldquo;isn&amp;rsquo;t recognized&amp;rdquo; until you unplug and replug it. Turning it off fixes a large share of cases, especially on laptops:&lt;/p>
&lt;ol>
&lt;li>Open &lt;strong>Edit power plan&lt;/strong> (search for it), then &lt;strong>Change advanced power settings.&lt;/strong>&lt;/li>
&lt;li>Expand &lt;strong>USB settings → USB selective suspend setting.&lt;/strong>&lt;/li>
&lt;li>Set it to &lt;strong>Disabled&lt;/strong> (both On battery and Plugged in), and apply.&lt;/li>
&lt;/ol>
&lt;p>While you&amp;rsquo;re in Device Manager (next fix), also stop individual hubs from powering down: for each &lt;strong>USB Root Hub&lt;/strong>, open &lt;strong>Properties → Power Management&lt;/strong> and &lt;strong>uncheck &amp;ldquo;Allow the computer to turn off this device to save power.&amp;rdquo;&lt;/strong>&lt;/p>
&lt;h2 id="fix-2-reinstall-the-usb-controllers-in-device-manager">Fix #2: Reinstall the USB controllers in Device Manager&lt;/h2>
&lt;p>A corrupted USB controller driver blocks detection, and reinstalling it is a clean fix:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Windows Key + X → Device Manager.&lt;/strong>&lt;/li>
&lt;li>Look for a device with a &lt;strong>yellow warning triangle&lt;/strong> — often &lt;strong>&amp;ldquo;Unknown USB Device (Device Descriptor Request Failed).&amp;rdquo;&lt;/strong> Right-click it → &lt;strong>Uninstall device.&lt;/strong>&lt;/li>
&lt;li>Expand &lt;strong>Universal Serial Bus controllers&lt;/strong> and, if the specific device is still missing, uninstall each &lt;strong>USB Root Hub&lt;/strong> entry too.&lt;/li>
&lt;li>Click &lt;strong>Action → Scan for hardware changes&lt;/strong>, or reboot. Windows reinstalls the controllers from scratch, which clears the bad state.&lt;/li>
&lt;/ol>
&lt;p>This is also the answer to &amp;ldquo;how do I force Windows to detect it&amp;rdquo; — uninstall the stuck entry and rescan.&lt;/p>
&lt;h2 id="fix-3-disable-fast-startup">Fix #3: Disable Fast Startup&lt;/h2>
&lt;p>Fast Startup (Windows&amp;rsquo; hybrid shutdown) doesn&amp;rsquo;t fully shut down the system, and it routinely leaves the USB stack half-initialized — so devices that worked yesterday aren&amp;rsquo;t recognized after a &amp;ldquo;shutdown.&amp;rdquo; Turn it off:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Control Panel → Power Options → Choose what the power buttons do.&lt;/strong>&lt;/li>
&lt;li>Click &lt;strong>Change settings that are currently unavailable.&lt;/strong>&lt;/li>
&lt;li>Uncheck &lt;strong>Turn on fast startup&lt;/strong>, and save.&lt;/li>
&lt;/ol>
&lt;p>Then do a full shutdown (not restart) and power back on. This alone resolves a lot of intermittent &amp;ldquo;not recognized&amp;rdquo; and &amp;ldquo;device descriptor request failed&amp;rdquo; cases.&lt;/p>
&lt;h2 id="fix-4-update-chipset-and-usb-drivers">Fix #4: Update chipset and USB drivers&lt;/h2>
&lt;p>Outdated motherboard chipset drivers are a genuine cause on desktops, because the chipset provides the USB controllers. Get the latest &lt;strong>chipset drivers&lt;/strong> from your motherboard maker (ASUS, MSI, Gigabyte, ASRock) or, on a laptop, from the laptop maker&amp;rsquo;s support page for your exact model. Run Windows Update too, which delivers many USB and controller driver updates. If the trouble started right after a driver change, this is where the fix usually is — the same driver-state logic behind &lt;a href="https://techfuelhq.com/articles/gpu-driver-crash-fix-2026/">GPU driver crashes&lt;/a> applies to USB controllers.&lt;/p>
&lt;h2 id="fix-5-power--the-cause-people-miss-on-drives-and-hubs">Fix #5: Power — the cause people miss on drives and hubs&lt;/h2>
&lt;p>High-draw devices — external hard drives, some SSDs, and busy hubs — can pull more power than a single port or an unpowered hub supplies, and an under-powered device simply won&amp;rsquo;t enumerate. (If the device that won&amp;rsquo;t appear is specifically an external drive — powered and detected, but missing from File Explorer or Disk Management — the drive-by-drive detection ladder in &lt;a href="https://techfuelhq.com/articles/external-hard-drive-not-showing-up-2026/">external hard drive not showing up&lt;/a> pins that case exactly, including the two data-safety landmines you should not touch.) Two moves:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Plug power-hungry devices straight into a rear port&lt;/strong>, not through an unpowered hub or a front-panel header.&lt;/li>
&lt;li>If you&amp;rsquo;re out of ports or running several devices, use a &lt;a href="https://www.amazon.com/s?k=powered+USB+3.0+hub+with+power+adapter&amp;tag=techfuelhq-20" rel="nofollow sponsored noopener" target="_blank">powered USB hub (one with its own power adapter)&lt;/a> so each device gets full power instead of splitting one port&amp;rsquo;s budget. And if the fault followed a specific cable, a known-good &lt;a href="https://www.amazon.com/s?k=USB+3.0+cable&amp;tag=techfuelhq-20" rel="nofollow sponsored noopener" target="_blank">USB 3.0 cable&lt;/a> rules it out — a marginal cable is a common, cheap cause.&lt;/li>
&lt;/ul>
&lt;h2 id="the-fix-order-in-one-list">The fix order, in one list&lt;/h2>
&lt;ol>
&lt;li>&lt;strong>Isolate:&lt;/strong> test the device on another PC; try a rear port and a different cable.&lt;/li>
&lt;li>&lt;strong>USB selective suspend → Disabled&lt;/strong>, and uncheck USB Root Hub power-saving.&lt;/li>
&lt;li>&lt;strong>Reinstall USB controllers&lt;/strong> in Device Manager (uninstall the flagged/Unknown device + USB Root Hubs, then Scan for hardware changes).&lt;/li>
&lt;li>&lt;strong>Disable Fast Startup&lt;/strong>, then do a full shutdown.&lt;/li>
&lt;li>&lt;strong>Update chipset/USB drivers&lt;/strong> from your board or laptop maker + Windows Update.&lt;/li>
&lt;li>&lt;strong>Power:&lt;/strong> rear port for high-draw devices, or a powered hub; swap a suspect cable.&lt;/li>
&lt;/ol>
&lt;p>Work it top to bottom and the vast majority of &amp;ldquo;USB device not recognized&amp;rdquo; errors clear at the power-setting or Device Manager step — no new hardware required. This is the same connect-it-and-it-just-works troubleshooting mindset behind fixing a &lt;a href="https://techfuelhq.com/articles/keyboard-not-working-2026/">keyboard that won&amp;rsquo;t type&lt;/a>, a &lt;a href="https://techfuelhq.com/gaming/xbox-controller-not-connecting-to-pc-fix-2026/">game controller that won&amp;rsquo;t connect&lt;/a>, or a &lt;a href="https://techfuelhq.com/articles/second-monitor-not-detected-2026/">second monitor Windows won&amp;rsquo;t detect&lt;/a>.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>USB-C, ports, cables, and reinstall-driver guidance (including plugging power-hungry drives directly in rather than through a hub): &lt;a href="https://support.microsoft.com/en-us/windows/hardware/fix-usb-c-problems-in-windows" rel="noopener">Microsoft — Fix USB-C problems in Windows&lt;/a>&lt;/li>
&lt;li>Device Manager error codes, including Code 43 (&amp;ldquo;Windows has stopped this device… device descriptor request failed&amp;rdquo;): &lt;a href="https://support.microsoft.com/en-us/windows/hardware/drivers/error-codes-in-device-manager-in-windows" rel="noopener">Microsoft — Error codes in Device Manager in Windows&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The USB selective suspend, USB Root Hub power-management, Fast Startup, and Device Manager reinstall/rescan steps above are standard built-in Windows 10/11 settings and procedures.&lt;/p>
&lt;p>&lt;em>Steps are for Windows 10 and 11 in 2026; menu names vary slightly by version and manufacturer. Found an error? Email &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a> with the article URL.&lt;/em>&lt;/p></description></item><item><title>Best NAS Hard Drives 2026: Picks by Use Case + Real $/TB Math</title><link>https://techfuelhq.com/homelab/best-nas-hard-drives-2026/</link><pubDate>Fri, 03 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/homelab/best-nas-hard-drives-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-07-03 · Updated 2026-07-03 · ~12 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence which products get recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR · What to actually buy in 2026&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>Top pick / 24-7 heavier duty:&lt;/strong> Seagate IronWolf Pro or WD Red Pro. All-CMR, 550TB/year workload, 5-year warranty. IronWolf Pro adds 3 years of Rescue data recovery.&lt;/li>
&lt;li>&lt;strong>Best for a 4-bay home NAS:&lt;/strong> WD Red Plus (2-12TB, all CMR, 180TB/year, 3-year warranty) — built for up-to-8-bay RAID and quieter/cheaper than the Pro tier.&lt;/li>
&lt;li>&lt;strong>Best for Plex / media bulk:&lt;/strong> whichever CMR drive gives the lowest $/TB at 8-16TB — capacity for the library, and a single drive already outruns your home network.&lt;/li>
&lt;li>&lt;strong>Best budget / value:&lt;/strong> a &lt;strong>recertified&lt;/strong> big-capacity CMR drive. A recertified 16TB IronWolf Pro was &lt;strong>$31.25/TB&lt;/strong> — the cheapest per-TB in our July 3 pull — but check the warranty terms.&lt;/li>
&lt;li>&lt;strong>The one rule:&lt;/strong> buy &lt;strong>CMR&lt;/strong>, never SMR, for any NAS. Avoid the legacy WD Red "EFAX" SMR drives.&lt;/li>
&lt;/ul>
&lt;p style="margin:0.75rem 0 0 0;font-size:0.9rem;color:#a0a0b8;">Spec numbers are from the manufacturers' current data sheets. All prices are a live Amazon snapshot dated 2026-07-03 and move week to week — check the retailer link before buying.&lt;/p>
&lt;/div>
&lt;img src="https://techfuelhq.com/images/homelab/best-nas-hard-drives-2026.svg" width="1200" height="760" loading="lazy" decoding="async" alt="Best NAS hard drives 2026 picks by use case: WD Red Plus for a 4-bay home NAS (2-12TB, CMR, 180TB/year, 3-year warranty); Seagate IronWolf Pro and WD Red Pro for 24-7 heavier duty (up to 30TB and 26TB, CMR, 550TB/year, 5-year warranty); the lowest-dollar-per-TB CMR drive for Plex media bulk; and a recertified big-capacity drive for budget value at $31.25 per TB. The one rule: buy CMR, never SMR." style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;h2 id="the-short-version">The short version&lt;/h2>
&lt;p>Buying a NAS drive in 2026 comes down to three decisions, in this order: &lt;strong>CMR not SMR&lt;/strong> (non-negotiable for RAID), &lt;strong>the right tier for your workload&lt;/strong> (a home 4-bay NAS does not need an enterprise-grade drive), and &lt;strong>the right capacity at the right price-per-terabyte&lt;/strong> (which, as you&amp;rsquo;ll see below, does not automatically favor the biggest drive). Get those three right and brand is almost a coin flip — Western Digital, Seagate, and Toshiba all make solid current-generation CMR NAS drives.&lt;/p>
&lt;p>This guide leans on two things most competing listicles skip: &lt;strong>real dollar-per-terabyte math from a dated live price pull&lt;/strong>, and the &lt;strong>recertified-drive economics&lt;/strong> that a growing number of homelabbers use to beat the 2026 hard-drive price crunch. We have not benchmarked these drives ourselves — every reliability and workload number here comes straight from the manufacturer spec sheets, cited inline. For the &lt;em>box&lt;/em> these drives go into, see our companion &lt;a href="https://techfuelhq.com/homelab/best-budget-nas-builds-2025/">budget NAS build guide&lt;/a> — or, if you&amp;rsquo;re building a media server, &lt;a href="https://techfuelhq.com/homelab/best-nas-for-plex-jellyfin-2026/">the best NAS for Plex and Jellyfin&lt;/a>, where hardware transcoding rather than capacity drives the pick. This page is about the &lt;em>disks&lt;/em>.&lt;/p>
&lt;h2 id="picks-by-use-case">Picks by use case&lt;/h2>
&lt;h3 id="best-for-a-4-bay-home-nas-wd-red-plus">Best for a 4-bay home NAS: WD Red Plus&lt;/h3>
&lt;p>The WD Red Plus line is purpose-built for exactly this: WD&amp;rsquo;s own product brief positions it &amp;ldquo;for RAID-optimized NAS systems with up to 8 bays.&amp;rdquo; It spans &lt;strong>2TB to 12TB and is all-CMR at every capacity&lt;/strong> per the &lt;a href="https://documents.westerndigital.com/content/dam/doc-library/en_us/assets/public/western-digital/product/internal-drives/wd-red-plus-hdd/data-sheet-western-digital-wd-red-plus-hdd.pdf" rel="noopener">WD Red Plus data sheet&lt;/a> (Sep 2025). The core spec across the line: &lt;strong>180TB/year workload rate, 1,000,000-hour MTBF, and a 3-year limited warranty&lt;/strong>. RPM varies by model — the current 12TB and 10TB SKUs are 7200 RPM, while the 8TB and below run 5400/5640 RPM, which keeps the smaller drives quieter and cooler for a home shelf or closet. (Note: the specific 12TB row we priced below is the older WD120EFAX, which is the 5400-RPM variant — the current 7200-RPM 12TB is the newer WD120EFBX. Both are CMR.)&lt;/p>
&lt;p>Why it wins the home slot: you get genuine NAS-rated CMR reliability without paying the Pro-tier premium, and the 180TB/year workload is plenty for a household that isn&amp;rsquo;t hammering the array around the clock. A new 8TB WD Red Plus (WD80EFZZ) ran &lt;strong>$339.99 — $42.50/TB&lt;/strong> in our July 3 pull (&lt;a href="https://www.amazon.com/dp/B09QQX27GM?tag=techfuelhq-20" rel="nofollow sponsored">Amazon&lt;/a>).&lt;/p>
&lt;h3 id="best-for-24-7-heavier-duty-seagate-ironwolf-pro-or-wd-red-pro">Best for 24-7 heavier duty: Seagate IronWolf Pro or WD Red Pro&lt;/h3>
&lt;p>If your NAS runs constantly, hosts many users, or lives in an 8+ bay chassis, step up to the Pro tier — and note that both leaders roughly triple the workload rating of the home drives.&lt;/p>
&lt;p>&lt;strong>Seagate IronWolf Pro&lt;/strong> is an all-CMR portfolio; Seagate states plainly that &amp;ldquo;all IronWolf Pro drives utilize conventional magnetic recording (CMR) technology.&amp;rdquo; The current top capacities reach &lt;strong>30TB and 28TB&lt;/strong>, rated for a &lt;strong>550TB/year workload, 2,500,000-hour MTBF, 7200 RPM, and a 5-year limited warranty&lt;/strong>, per the &lt;a href="https://www.seagate.com/content/dam/seagate/en/content-fragments/products/datasheets/ironwolf-pro-30-tb/ironwolf-pro-30-tb-DS2129-6-2505US-en_US.pdf" rel="noopener">IronWolf Pro data sheet&lt;/a>. Its signature extra is &lt;strong>3 years of complimentary Rescue Data Recovery Services&lt;/strong> bundled in — a real safety net if a drive dies with data you never backed up (though you should back up anyway).&lt;/p>
&lt;p>&lt;strong>WD Red Pro&lt;/strong> matches the mission: all-CMR from 2TB up to &lt;strong>26TB&lt;/strong>, &lt;strong>550TB/year workload&lt;/strong>, &lt;strong>7200 RPM across the whole line&lt;/strong>, and a &lt;strong>5-year limited warranty&lt;/strong>, per the &lt;a href="https://documents.westerndigital.com/content/dam/doc-library/en_us/assets/public/western-digital/product/internal-drives/wd-red-pro-hdd/data-sheet-wd-red-pro-hdd.pdf" rel="noopener">WD Red Pro data sheet&lt;/a> (Jan 2025). MTBF is 2,500,000 hours on the 14TB-26TB models and 2,000,000 hours on the 2TB-12TB models. The largest capacities (22-26TB) use OptiNAND; the big models are helium-sealed for lower power and heat.&lt;/p>
&lt;p>Between the two, the tie-breakers are price at your target capacity and whether the IronWolf Pro&amp;rsquo;s bundled Rescue service matters to you. Both are correct answers for a heavy 24-7 array. And if you&amp;rsquo;re deciding specifically between IronWolf, IronWolf Pro, and an enterprise Exos, our &lt;a href="https://techfuelhq.com/homelab/seagate-ironwolf-vs-ironwolf-pro-vs-exos-2026/">Seagate NAS drive breakdown&lt;/a> settles which of the three fits your bays and budget.&lt;/p>
&lt;h3 id="best-for-plex--media-bulk-the-lowest-tb-cmr-drive-at-8-16tb">Best for Plex / media bulk: the lowest-$/TB CMR drive at 8-16TB&lt;/h3>
&lt;p>For a media server, you are buying &lt;strong>capacity per dollar&lt;/strong>, not raw speed — a single spinning NAS drive already saturates a typical home network, so IOPS is rarely the constraint for streaming. That flips the decision into a straight $/TB shopping exercise across the CMR families, in the 8-16TB band where value tends to concentrate.&lt;/p>
&lt;p>Two honest caveats from our own price pull, both covered in the table below: (1) among &lt;em>new&lt;/em> drives, bigger did not mean cheaper per-TB — the new 12TB WD Red Plus ($48.53/TB) was pricier per terabyte than the new 8TB ($42.50/TB); and (2) the outright value champion was a &lt;em>recertified&lt;/em> 16TB IronWolf Pro at &lt;strong>$31.25/TB&lt;/strong>. So for media bulk, shop the live $/TB at 8-16TB rather than assuming the biggest new drive is the best deal, and seriously consider recertified for the bulk tier. For the transcoding side of a media box, our &lt;a href="https://techfuelhq.com/articles/best-gpu-plex-jellyfin-transcode-2026/">best GPU for Plex/Jellyfin guide&lt;/a> covers the compute half.&lt;/p>
&lt;h3 id="best-budget-a-recertified-big-capacity-cmr-drive-with-eyes-open">Best budget: a recertified big-capacity CMR drive (with eyes open)&lt;/h3>
&lt;p>The cheapest way to fill bays in 2026 is a &lt;strong>recertified&lt;/strong> enterprise-class or NAS-Pro CMR drive. In our July 3 pull the recertified 16TB IronWolf Pro (ST16000NE000) was &lt;strong>$499.99 = $31.25/TB&lt;/strong>, versus &lt;strong>$640 = $40.00/TB&lt;/strong> for the same model listed as new — a ~22% discount and the lowest cost-per-terabyte in the entire comparison (&lt;a href="https://www.amazon.com/dp/B09G8JLRZ5?tag=techfuelhq-20" rel="nofollow sponsored">recertified Amazon listing&lt;/a>). (The $640 &amp;ldquo;new&amp;rdquo; anchor came from a third-party marketplace listing rather than a first-party pristine-new sale, so treat it as the same-model reference price, not a guaranteed factory-new quote.) The trade-offs are real and covered in the recertified section below: thinner warranty and thinner review counts. This is a value play for someone running redundancy and backups, not a set-and-forget pick.&lt;/p>
&lt;p>For budget on a &lt;em>new&lt;/em> drive, the standard-tier lines (base Seagate IronWolf, standard Toshiba N300) exist, but note Toshiba&amp;rsquo;s N300 8TB was actually the &lt;strong>most expensive per-TB new drive&lt;/strong> in our pull at $55.59/TB — so &amp;ldquo;budget brand&amp;rdquo; does not always mean budget price at a given capacity. Shop the number, not the label.&lt;/p>
&lt;h2 id="cmr-vs-smr--and-the-wd-red-history-you-should-know">CMR vs SMR — and the WD Red history you should know&lt;/h2>
&lt;p>This is the single most important technical distinction for a NAS drive, and it has a real cautionary tale attached.&lt;/p>
&lt;p>&lt;strong>CMR (conventional magnetic recording)&lt;/strong> writes data tracks side by side. &lt;strong>SMR (shingled magnetic recording)&lt;/strong> overlaps tracks like roof shingles to pack in more areal density. Seagate frames it cleanly on its &lt;a href="https://www.seagate.com/products/cmr-smr-list/" rel="noopener">official CMR/SMR list&lt;/a>: CMR is the plug-and-play choice for standard NAS deployments that prioritize reliability, while SMR is best only for sequential, write-once workloads (archives, backup tiers) and generally wants SMR-aware file systems. The practical NAS problem is that SMR&amp;rsquo;s device-managed garbage collection and band-rewrite behavior can &lt;strong>drastically slow random writes and RAID rebuilds&lt;/strong> — the worst possible time for a drive to crawl is while your array is rebuilding after a failure.&lt;/p>
&lt;p>The reason NAS buyers learned to check this the hard way: around 2020, plain &lt;strong>WD Red (non-Plus) &amp;ldquo;EFAX&amp;rdquo; drives were quietly SMR&lt;/strong>. Western Digital&amp;rsquo;s own &lt;a href="https://documents.westerndigital.com/content/dam/doc-library/en_us/assets/public/western-digital/product/internal-drives/wd-red-hdd/product-brief-western-digital-wd-red-hdd.pdf" rel="noopener">WD Red product brief&lt;/a> lists the WD60EFAX (6TB), WD40EFAX (4TB), WD30EFAX (3TB), and WD20EFAX (2TB) as SMR, and WD&amp;rsquo;s own &lt;a href="https://blog.westerndigital.com/wd-red-nas-drives/" rel="noopener">blog statement&lt;/a> names the same capacities directly — &amp;ldquo;our current device-managed shingled magnetic recording (DMSMR) (2TB, 3TB, 4TB, and 6TB) WD Red series.&amp;rdquo; Those are the drives at the center of the SMR-in-NAS backlash, and they are why the &amp;ldquo;Plus&amp;rdquo; and &amp;ldquo;Pro&amp;rdquo; branding exists. WD&amp;rsquo;s &lt;a href="https://support-en.wd.com/app/answers/detailweb/a_id/50697/~/steps-to-determine-if-an-internal-drive-uses-cmr-or-smr-technology" rel="noopener">official CMR/SMR determination page&lt;/a> advises checking each drive&amp;rsquo;s data sheet to confirm whether it uses CMR or SMR — which we&amp;rsquo;ve done for you here.&lt;/p>
&lt;p>The good news for 2026: &lt;strong>every current dedicated NAS-Pro family is 100% CMR.&lt;/strong> The WD Red Plus, WD Red Pro, Seagate IronWolf and IronWolf Pro, and Toshiba N300 and N300 Pro data sheets all read CMR across every capacity, and Seagate flags &lt;strong>zero&lt;/strong> IronWolf-family drives as SMR on its product list. So the practical rule is simple: buy a current NAS-Pro CMR drive and steer clear of the legacy EFAX SKUs on the used market.&lt;/p>
&lt;h2 id="live-tb-table--dated-2026-07-03">Live $/TB table — dated 2026-07-03&lt;/h2>
&lt;p>Below is a live US Amazon price snapshot captured &lt;strong>2026-07-03&lt;/strong>. Every price is from that pull; drives our source did not return with a verified new price are noted rather than guessed. $/TB uses the drive&amp;rsquo;s marketed (decimal) capacity. &lt;strong>Prices move week to week — treat this as a method, not a promise, and check the retailer link before buying.&lt;/strong>&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Drive (model)&lt;/th>
&lt;th scope="col">Condition&lt;/th>
&lt;th scope="col">Capacity&lt;/th>
&lt;th scope="col">Price&lt;/th>
&lt;th scope="col">$/TB&lt;/th>
&lt;th scope="col">Recording&lt;/th>
&lt;th scope="col">Link&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Seagate IronWolf Pro (ST16000NE000)&lt;/td>
&lt;td>&lt;strong>Recertified&lt;/strong>&lt;/td>
&lt;td>16TB&lt;/td>
&lt;td>$499.99&lt;/td>
&lt;td>&lt;strong>$31.25&lt;/strong>&lt;/td>
&lt;td>CMR&lt;/td>
&lt;td>&lt;a href="https://www.amazon.com/dp/B09G8JLRZ5?tag=techfuelhq-20" rel="nofollow sponsored">Amazon&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Seagate IronWolf Pro (ST16000NE000)&lt;/td>
&lt;td>New&lt;/td>
&lt;td>16TB&lt;/td>
&lt;td>$640.00&lt;/td>
&lt;td>$40.00&lt;/td>
&lt;td>CMR&lt;/td>
&lt;td>&lt;a href="https://www.amazon.com/dp/B07SJTST6T?tag=techfuelhq-20" rel="nofollow sponsored">Amazon&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>WD Red Plus (WD80EFZZ)&lt;/td>
&lt;td>New&lt;/td>
&lt;td>8TB&lt;/td>
&lt;td>$339.99&lt;/td>
&lt;td>$42.50&lt;/td>
&lt;td>CMR&lt;/td>
&lt;td>&lt;a href="https://www.amazon.com/dp/B09QQX27GM?tag=techfuelhq-20" rel="nofollow sponsored">Amazon&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>WD Red Plus (WD80EFZZ)&lt;/td>
&lt;td>Renewed&lt;/td>
&lt;td>8TB&lt;/td>
&lt;td>$275.00&lt;/td>
&lt;td>$34.38&lt;/td>
&lt;td>CMR&lt;/td>
&lt;td>&lt;a href="https://www.amazon.com/dp/B0B6LJZ9MG?tag=techfuelhq-20" rel="nofollow sponsored">Amazon&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>WD Red Plus (WD120EFAX)&lt;/td>
&lt;td>New&lt;/td>
&lt;td>12TB&lt;/td>
&lt;td>$582.35&lt;/td>
&lt;td>$48.53&lt;/td>
&lt;td>CMR&lt;/td>
&lt;td>&lt;a href="https://www.amazon.com/dp/B07RQ99XJH?tag=techfuelhq-20" rel="nofollow sponsored">Amazon&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Toshiba N300 (HDWG780EZSTA)&lt;/td>
&lt;td>New&lt;/td>
&lt;td>8TB&lt;/td>
&lt;td>$444.70&lt;/td>
&lt;td>$55.59&lt;/td>
&lt;td>CMR&lt;/td>
&lt;td>&lt;a href="https://www.amazon.com/dp/B0F2GZZNDC?tag=techfuelhq-20" rel="nofollow sponsored">Amazon&lt;/a>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Two takeaways jump out of this table. First, &lt;strong>recertified big-capacity is the $/TB champion&lt;/strong> — the recertified 16TB IronWolf Pro at $31.25/TB beat every new drive here. Second, &lt;strong>higher capacity did not automatically lower $/TB among new drives&lt;/strong> — the new 12TB Red Plus ($48.53/TB) cost more per terabyte than the new 8TB ($42.50/TB), and the new Toshiba N300 8TB ($55.59/TB) was the priciest per-TB of the lot. The lesson: run the per-TB number for your specific target capacity on the day you buy, rather than assuming bigger or a &amp;ldquo;value brand&amp;rdquo; is automatically cheaper. (One gap: our pull returned no verified new price for the non-Pro Seagate IronWolf 8TB, so it is omitted rather than invented.)&lt;/p>
&lt;h2 id="recertified-drives--what-the-seller-pages-actually-say">Recertified drives — what the seller pages actually say&lt;/h2>
&lt;p>Recertified and renewed drives are the biggest under-covered angle in NAS-drive buying, and the price crunch of 2026 has made them mainstream. Here is what&amp;rsquo;s real, stated straight from seller documentation rather than forum lore.&lt;/p>
&lt;p>&lt;strong>The discount is real:&lt;/strong> across two clean same-model comparisons in our July 3 pull, recertified/renewed ran &lt;strong>~19-22% below new&lt;/strong> — the 8TB WD Red Plus at $275 renewed vs $339.99 new (~19%), and the 16TB IronWolf Pro at $499.99 recertified vs $640 new (~22%). Renewed/recertified listings showed up in &lt;em>every&lt;/em> search we ran.&lt;/p>
&lt;p>&lt;strong>The warranty catch is also real.&lt;/strong> ServerPartDeals — a common recertified-drive seller — defines a &amp;ldquo;Manufacturer Recertified&amp;rdquo; drive in its &lt;a href="https://serverpartdeals.com/pages/faqs" rel="noopener">FAQ&lt;/a> as an item &amp;ldquo;tested, recertified, and approved by the original manufacturer&amp;hellip; without a manufacturer warranty.&amp;rdquo; In other words, the &lt;strong>original manufacturer warranty does not carry over&lt;/strong>. The coverage you actually get is the &lt;em>seller&amp;rsquo;s own&lt;/em>, stated per product — one live &lt;a href="https://serverpartdeals.com/products/seagate-exos-x18-st16000nm000j-16tb-7-2k-rpm-sata-6gb-s-3-5-recertified-hard-drive" rel="noopener">recertified Exos listing&lt;/a> shows a &amp;ldquo;2 Year Limited Period Warranty&amp;rdquo; plus a 30-day satisfaction return window. Warranty length is set per product, not by a single site-wide number, so read the specific listing.&lt;/p>
&lt;p>&lt;strong>Second signal to watch: review depth.&lt;/strong> The renewed 8TB WD Red Plus in our pull carried only 3 ratings versus 1,100 on the new version of the same model — a thin trust signal worth weighing.&lt;/p>
&lt;p>Net: recertified is a smart value move &lt;strong>if&lt;/strong> you run redundancy (RAID/RAIDZ so a single failure doesn&amp;rsquo;t lose data), keep a real 3-2-1 backup, and accept a seller warranty in place of the manufacturer&amp;rsquo;s. It is not the pick for someone running a single drive with no backup.&lt;/p>
&lt;h2 id="what-the-competition-skips-our-angle">What the competition skips (our angle)&lt;/h2>
&lt;p>We read the current top-ranking guides before writing this. Most of them cover the CMR-vs-SMR basics well — that part is table stakes now. What they consistently &lt;em>don&amp;rsquo;t&lt;/em> give you:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Real $/TB math.&lt;/strong> The mainstream listicles tell you to &amp;ldquo;buy the largest drive that makes sense&amp;rdquo; without ever computing cost per terabyte — which, as our table shows, is exactly where the counterintuitive results hide (bigger isn&amp;rsquo;t always cheaper per-TB).&lt;/li>
&lt;li>&lt;strong>Recertified/refurbished economics.&lt;/strong> Even though cheap-drive shopping is one of the most common questions homelabbers ask, the standard listicles say nothing about the ~19-22% recertified discount (measured in our dated table above) or the warranty trade-off. That&amp;rsquo;s the single biggest money lever for a homelabber right now.&lt;/li>
&lt;li>&lt;strong>Honest homelab-vs-enterprise separation.&lt;/strong> Guides tend to jump from &amp;ldquo;home&amp;rdquo; straight to &amp;ldquo;small business,&amp;rdquo; glossing over the fact that a 4-bay household NAS is genuinely better served by the cheaper, quieter Red Plus tier than by an enterprise drive.&lt;/li>
&lt;/ul>
&lt;p>That&amp;rsquo;s the gap this guide fills: cited specs for reliability, a dated $/TB table for price, and the recertified math laid out honestly.&lt;/p>
&lt;h2 id="related-reading">Related reading&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/best-budget-nas-builds-2025/">Best budget NAS builds 2026&lt;/a> — the chassis and platform these drives go into.&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/das-vs-nas-2026/">DAS vs NAS in 2026&lt;/a> — whether you even need a networked box, or a simpler direct-attached enclosure.&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/proxmox-truenas-unraid-storage-backend-2026/">TrueNAS vs Unraid vs Proxmox storage backend&lt;/a> — the OS/filesystem layer that turns these disks into a pool.&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tools/nas-storage-calculator/">NAS storage calculator&lt;/a> — work out real usable capacity after RAID redundancy before you buy.&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tools/transfer-time-calculator/">Transfer time calculator&lt;/a> — estimate how long it takes to fill or migrate an array.&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/articles/best-nvme-ssd-homelab-2026/">Best NVMe SSDs for a homelab 2026&lt;/a> — the cache/fast-pool half of a hybrid NAS.&lt;/li>
&lt;/ul></description></item><item><title>Self-Hosted Discord Alternatives (2026): The Honest Hardware-Grounded Comparison</title><link>https://techfuelhq.com/articles/self-hosted-discord-alternatives-2026/</link><pubDate>Fri, 03 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/self-hosted-discord-alternatives-2026/</guid><description>&lt;img src="https://techfuelhq.com/images/articles/hero-self-hosted-discord-alternatives-2026.svg" alt="Self-hosted Discord alternatives 2026 comparison: Stoat, Matrix/Element, Mattermost, Rocket.Chat, Zulip, and Mumble with their voice and video reality" width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;width:100%;" />
&lt;p>&lt;strong>The one-paragraph version:&lt;/strong> There is no drop-in self-hosted replacement for Discord in 2026, and any guide that hands you a single &amp;ldquo;winner&amp;rdquo; is skipping the hard part. The honest answer is a match to &lt;em>what you use Discord for&lt;/em>. Want the closest-looking clone? &lt;strong>Stoat&lt;/strong> (the platform formerly called Revolt) - but it is pre-1.0 and self-hosting its voice/video is still immature. Want a federated text community with real native group calling? &lt;strong>Matrix + Element&lt;/strong>, at the cost of the most complex setup. Running a team or workplace? &lt;strong>Mattermost&lt;/strong> or &lt;strong>Rocket.Chat&lt;/strong>. Threaded text only? &lt;strong>Zulip&lt;/strong>, with the cleanest license. Just voice for a gaming group? A tiny &lt;strong>Mumble&lt;/strong> server. The realistic outcome most communities land on is a &lt;em>combination&lt;/em> - text on one tool, voice on another - plus accepting real onboarding drop-off. This guide gives you the piece the copy-paste roundups leave out: current versions, license caveats, the honest voice/video reality, and the resource footprints that are actually documented.&lt;/p>
&lt;p>Most competing roundups converge on the same six-to-eight tools and produce near-identical pros/cons lists, but they share three universal blind spots: no real hardware requirements, no honest voice/video assessment, and no actual migration path. That trio is exactly where a PC-hardware-first site should be useful, so that is where this article spends its words.&lt;/p>
&lt;h2 id="the-quick-verdict-by-use-case">The quick verdict, by use case&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Your priority&lt;/th>
&lt;th scope="col">Best pick&lt;/th>
&lt;th scope="col">The honest caveat&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Closest Discord clone (look and feel)&lt;/td>
&lt;td>&lt;strong>Stoat&lt;/strong> (formerly Revolt)&lt;/td>
&lt;td>Pre-1.0; self-hosting voice/video is transitional and undocumented&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Federated text community, many spaces one login&lt;/td>
&lt;td>&lt;strong>Matrix + Element&lt;/strong>&lt;/td>
&lt;td>Hardest setup; no native voice channels without extra services&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Team / workplace (Slack-style)&lt;/td>
&lt;td>&lt;strong>Mattermost&lt;/strong> or &lt;strong>Rocket.Chat&lt;/strong>&lt;/td>
&lt;td>Group voice and video sit behind paid tiers or external add-ons&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Threaded, organized text&lt;/td>
&lt;td>&lt;strong>Zulip&lt;/strong>&lt;/td>
&lt;td>No native voice or video at all&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Low-latency voice for a gaming group&lt;/td>
&lt;td>&lt;strong>Mumble&lt;/strong>&lt;/td>
&lt;td>Voice only; dated interface; no async text chat&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The recurring pattern in real community threads is that no single self-hosted product covers Discord&amp;rsquo;s full text-plus-voice-plus-video-plus-forum-plus-roles-plus-bots bundle, so people deploy a stack: Matrix or Zulip for text alongside Mumble or Jitsi for voice. Keep that in mind before you expect one install to do everything.&lt;/p>
&lt;h2 id="stoat-formerly-revolt-the-closest-clone-still-under-construction">Stoat (formerly Revolt): the closest clone, still under construction&lt;/h2>
&lt;p>First, the naming, because half the guides online are stale on it. &lt;strong>Revolt was renamed to Stoat.&lt;/strong> The GitHub organization migrated from &lt;code>revoltchat&lt;/code> to &lt;a href="https://github.com/stoatchat" rel="noopener">&lt;code>stoatchat&lt;/code>&lt;/a> and now describes itself as &amp;ldquo;Open source, user-first chat platform. (formerly Revolt).&amp;rdquo; The self-hosted repository documents a breaking change dated October 5, 2025 that renamed the Docker Compose project from &lt;code>revolt&lt;/code> to &lt;code>stoat&lt;/code>, and revolt.chat now redirects to stoat.chat. If you find a 2022-era &amp;ldquo;Revolt review,&amp;rdquo; it is describing this same software under its old name.&lt;/p>
&lt;p>Stoat is the pick when you want the interface that looks and feels most like Discord. The backend, written in Rust, is at &lt;a href="https://github.com/stoatchat/stoatchat/releases/tag/v0.13.9" rel="noopener">v0.13.9, published July 2, 2026&lt;/a> - meaning it is still &lt;strong>pre-1.0 software&lt;/strong>. It self-hosts via Docker Compose from the &lt;a href="https://github.com/stoatchat/self-hosted/blob/main/README.md" rel="noopener">stoatchat/self-hosted repo&lt;/a>, whose README recommends a minimum footprint of &lt;strong>at least 2 vCPUs and 2 GB of memory&lt;/strong> - notably the only candidate here that publishes a clear minimum.&lt;/p>
&lt;p>The honesty gap the ranking list-posts gloss over is voice and video. Stoat is migrating its voice stack to &lt;a href="https://github.com/orgs/stoatchat/discussions/593" rel="noopener">LiveKit&lt;/a> (replacing the older &amp;ldquo;Vortex&amp;rdquo; voice server), and self-hosting voice/video is transitional: documentation is essentially non-existent, community front-end patches have been needed to enable features, and the video implementation is incomplete - the self-hosted README even warns the server will kick any user who tries to stream video larger than a configured maximum. Voice also requires opening RTC ports (7881/tcp plus a 50000-50100/udp range). Community self-host reports back this up, describing a buggy interface, missing features, channel-creation quirks, and no built-in way to stop random users spinning up servers on your instance. &lt;strong>Verdict:&lt;/strong> best UX match, weakest maturity. Use it for experimentation; do not bet a large community on it yet.&lt;/p>
&lt;h2 id="matrix--element-the-most-deployed-most-federated-hardest-to-master">Matrix + Element: the most-deployed, most-federated, hardest to master&lt;/h2>
&lt;p>Matrix is a protocol, not one app. You run a &lt;strong>homeserver&lt;/strong> and users connect with a client - usually &lt;a href="https://element.io/" rel="noopener">Element&lt;/a>. The recommended homeserver is &lt;strong>Synapse&lt;/strong>, currently &lt;a href="https://github.com/element-hq/synapse/releases" rel="noopener">v1.155.0 (June 16, 2026)&lt;/a>. An important caveat for anyone following old links: the original &lt;code>matrix-org/synapse&lt;/code> repository is archived and read-only; active development moved to the &lt;code>element-hq/synapse&lt;/code> fork. Synapse is dual-licensed - free under AGPLv3, or under a paid Element Commercial License - an open-core arrangement that followed the 2024 relicensing.&lt;/p>
&lt;p>There is a second-generation Go homeserver, &lt;strong>Dendrite&lt;/strong> (v0.15.2, August 15, 2025), but its &lt;a href="https://github.com/element-hq/dendrite" rel="noopener">README states it is in maintenance mode&lt;/a>, meaning only security fixes are applied, and the project positions it for small deployments (tens to hundreds of users) and in-browser or mobile peer-to-peer nodes rather than large community hosting. For a Discord replacement you want Synapse.&lt;/p>
&lt;p>Matrix&amp;rsquo;s genuine, unique draw is &lt;strong>federation&lt;/strong>: it is the one option that mirrors Discord&amp;rsquo;s multi-server model by letting you join many communities from a single login. That is why power users stay on it. The recurring first-hand complaint is voice: Matrix has &lt;strong>no always-on, Discord-style voice channels by default&lt;/strong>. Native group voice and video come from &lt;strong>Element Call&lt;/strong> (v0.20.3, June 29, 2026), which &lt;a href="https://element.io/blog/element-call-redefining-conferencing-for-privacy-scale-and-sovereignty/" rel="noopener">Element&amp;rsquo;s own writeup&lt;/a> describes as built on MatrixRTC using LiveKit as its backend. Self-hosting it means deploying a LiveKit SFU &lt;em>plus&lt;/em> a MatrixRTC authorization service alongside the homeserver. Once running, it supports 1:1 calls, ad-hoc in-room calls, and standalone conferences; Element&amp;rsquo;s own performance testing states that &lt;strong>a single standard VPS machine can host up to 500 participants&lt;/strong>. The second recurring complaint is the client model itself - the Space-and-room structure is widely described as unintuitive, and setup documentation as scattered. Difficulty reports are split (some call basic server standup easy; Matrix-plus-voice is where people get stuck), and the community &lt;code>matrix-docker-ansible-deploy&lt;/code> playbook is the usual recommendation to ease the base install. &lt;strong>Verdict:&lt;/strong> best for a federated text community that will invest the setup time; the strongest native group-call story here, but not the easiest.&lt;/p>
&lt;h2 id="mattermost-and-rocketchat-team-chat-not-gaming-communities">Mattermost and Rocket.Chat: team chat, not gaming communities&lt;/h2>
&lt;p>These two are consistently classed by their own users as &lt;strong>Slack/Teams replacements&lt;/strong> rather than community or gaming Discord replacements - more corporate, with per-user considerations even when self-hosted.&lt;/p>
&lt;p>&lt;strong>Mattermost&lt;/strong> is at &lt;a href="https://docs.mattermost.com/product-overview/mattermost-v11-changelog.html" rel="noopener">v11.8.2 (June 26, 2026)&lt;/a>, which includes a medium-severity security fix, so keep it patched. Two free self-host paths exist: Team Edition is free and open source under the MIT license (a single Linux binary with PostgreSQL), and Mattermost Entry is a free, feature-capped tier of the Enterprise Edition (see &lt;a href="https://docs.mattermost.com/product-overview/editions-and-offerings.html" rel="noopener">editions and offerings&lt;/a>). The Enterprise binary itself is commercial (open-core). On voice: the &lt;a href="https://docs.mattermost.com/administration-guide/configure/calls-deployment-guide.html" rel="noopener">Calls plugin is bundled by default&lt;/a> and does WebRTC voice and screen sharing - but the free Team/Entry editions get only 1:1 calling and screen sharing (up to 40 minutes); &lt;strong>group calling with no time limit requires a paid Professional tier or above&lt;/strong>, and scaling past roughly 50 concurrent callers needs a separate RTCD service to offload media. (Third-party pages cite Professional at around $10/user/month billed annually, but that figure was not confirmed on Mattermost&amp;rsquo;s own pricing page - treat the dollar amount as unverified; the tier &lt;em>structure&lt;/em> is from official docs.)&lt;/p>
&lt;p>&lt;strong>Rocket.Chat&lt;/strong> is at &lt;a href="https://github.com/RocketChat/Rocket.Chat/releases" rel="noopener">v8.5.1 (June 15, 2026)&lt;/a>, MIT-licensed but with an open-core split (an &lt;code>ee&lt;/code> enterprise folder and paid premium features). It self-hosts via official Docker Compose (Rocket.Chat plus MongoDB). Its video story is the weakest-by-default of the team tools: video conferencing is &lt;strong>not native WebRTC&lt;/strong> out of the box - the documented standard path integrates an &lt;a href="https://docs.rocket.chat/docs/jitsi-app" rel="noopener">external Jitsi provider&lt;/a> you point at your own Jitsi Meet domain. &lt;strong>Verdict:&lt;/strong> reach for these if you are replacing Slack or standing up a workplace; they are a poor fit for a casual gaming friend-group where free, low-friction group voice is the whole point.&lt;/p>
&lt;h2 id="zulip-excellent-threaded-text-no-native-calling">Zulip: excellent threaded text, no native calling&lt;/h2>
&lt;p>&lt;a href="https://github.com/zulip/zulip/releases/tag/12.1" rel="noopener">Zulip Server 12.1 (June 26, 2026)&lt;/a> is the cleanest license of the bunch - fully open source under Apache 2.0, with no open-core caveat on the server. Its threaded model is genuinely good for organized, high-volume text discussion. But for a Discord replacement it has the weakest voice story of all the candidates: &lt;strong>Zulip has no native built-in voice or video calling.&lt;/strong> It only &lt;a href="https://zulip.com/help/start-a-call" rel="noopener">inserts call links&lt;/a> via a configured external provider - Jitsi Meet (default), Zoom, BigBlueButton, or Nextcloud Talk. There are no persistent voice channels and no built-in media server. &lt;strong>Verdict:&lt;/strong> a strong pick if your community lives in text and you are content bolting voice on externally; a poor standalone Discord swap if voice matters.&lt;/p>
&lt;h2 id="the-voicevideo-reality-the-part-other-guides-skip">The voice/video reality (the part other guides skip)&lt;/h2>
&lt;p>This is the single sharpest differentiator, and almost no competing roundup benchmarks it. Here is how native, self-hosted voice and video actually stand today:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Tool&lt;/th>
&lt;th scope="col">Native group voice/video?&lt;/th>
&lt;th scope="col">How it works&lt;/th>
&lt;th scope="col">The real cost&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Matrix + Element&lt;/strong>&lt;/td>
&lt;td>Yes&lt;/td>
&lt;td>Element Call on MatrixRTC + LiveKit SFU&lt;/td>
&lt;td>Must deploy LiveKit + auth service; scales to ~500/call&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Mattermost&lt;/strong>&lt;/td>
&lt;td>Yes (bundled)&lt;/td>
&lt;td>Calls plugin, WebRTC&lt;/td>
&lt;td>Free tiers = 1:1 up to 40 min; group needs paid tier; 50+ callers need RTCD&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Stoat&lt;/strong>&lt;/td>
&lt;td>In transition&lt;/td>
&lt;td>Migrating to LiveKit voice&lt;/td>
&lt;td>Undocumented self-host; community patches needed; video incomplete&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Rocket.Chat&lt;/strong>&lt;/td>
&lt;td>Not by default&lt;/td>
&lt;td>External Jitsi integration&lt;/td>
&lt;td>You run a separate Jitsi instance&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Zulip&lt;/strong>&lt;/td>
&lt;td>No&lt;/td>
&lt;td>External call links only&lt;/td>
&lt;td>No persistent voice channels&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Mumble&lt;/strong>&lt;/td>
&lt;td>Voice only&lt;/td>
&lt;td>Opus codec (which itself scales up to 510 kbps)&lt;/td>
&lt;td>No text/video; low latency; tiny footprint&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Two practical takeaways. First, &lt;strong>screen sharing&lt;/strong> - an under-served sub-intent that appears in the related searches for this topic - is best served today by Mattermost&amp;rsquo;s bundled Calls plugin, then by Matrix via Element Call; Rocket.Chat routes it through Jitsi, and Zulip cannot do it natively. Second, if all you need is &lt;strong>voice for a gaming group&lt;/strong>, a self-hosted Mumble server remains the community favorite: it is praised for low latency and near-zero resource use, it uses the Opus codec (which itself scales up to 510 kbps), and its main limitation is that it is voice-only with a dated interface and no async chat.&lt;/p>
&lt;h2 id="resource-footprint-what-is-actually-documented">Resource footprint: what is actually documented&lt;/h2>
&lt;p>A word of caution, because this is where roundups invent numbers. Of these projects, &lt;strong>only Stoat publishes a clear minimum&lt;/strong> in the sources checked: at least 2 vCPUs and 2 GB of memory. Synapse, Mattermost, Rocket.Chat, and Zulip did not surface hard minimums on the pages reviewed, so anyone quoting exact RAM figures for those is usually guessing.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Tool&lt;/th>
&lt;th scope="col">Documented minimum&lt;/th>
&lt;th scope="col">Notes&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Stoat&lt;/strong>&lt;/td>
&lt;td>2 vCPUs, 2 GB RAM&lt;/td>
&lt;td>From the self-hosted README&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Matrix (Synapse)&lt;/strong>&lt;/td>
&lt;td>Not published on pages checked&lt;/td>
&lt;td>Plan by workload; voice adds a LiveKit SFU&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Mattermost&lt;/strong>&lt;/td>
&lt;td>Not published on pages checked&lt;/td>
&lt;td>Single binary + PostgreSQL; RTCD for scale&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Rocket.Chat&lt;/strong>&lt;/td>
&lt;td>Not published on pages checked&lt;/td>
&lt;td>Runs with MongoDB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Zulip&lt;/strong>&lt;/td>
&lt;td>Not published on pages checked&lt;/td>
&lt;td>Install script or Docker&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The honest planning rule: a small, text-only community is light on any of these, but the moment you add native voice/video the picture changes - a LiveKit SFU for Matrix or an RTCD service for Mattermost adds both CPU load and real bandwidth. If you want to size a chat server against the rest of your homelab, our &lt;a href="https://techfuelhq.com/tools/docker-ram-planner/">Docker RAM planner&lt;/a> helps you budget memory across a multi-service stack, and chat servers are firmly in the &amp;ldquo;give them headroom&amp;rdquo; category.&lt;/p>
&lt;h2 id="migration-reality-expect-friction-plan-to-dual-run">Migration reality: expect friction, plan to dual-run&lt;/h2>
&lt;p>The 2026 wave of interest is driven by &lt;a href="https://discord.com/blog/getting-global-age-assurance-right-what-we-got-wrong-and-whats-changing" rel="noopener">Discord&amp;rsquo;s age-assurance rollout&lt;/a>, which introduced age-verification methods (an on-device facial age estimate or an ID/selfie check) and pushed communities to look for exits. But wanting to leave and actually moving your people are different problems, and the community consensus is blunt about the gap.&lt;/p>
&lt;p>None of these tools ship a real Discord-community migration path or import tooling - that is the third universal gap across every competing guide. And the single biggest reason people give up and stay on, or return to, Discord is &lt;strong>onboarding friction for non-technical members&lt;/strong>. Discord&amp;rsquo;s &amp;ldquo;open this link and you are in the voice call&amp;rdquo; flow has no self-hosted equal; even a few-dollars-a-year hosted alternative adds enough friction to stall adoption among casual users. Churn runs both ways, too - screen-sharing quality is a documented reason some groups moved &lt;em>to&lt;/em> Discord in the first place.&lt;/p>
&lt;p>So the realistic plan is not a clean cutover. It is:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Match the tool to your primary need&lt;/strong> using the verdict table above - text-first vs voice-first is the fork that matters most.&lt;/li>
&lt;li>&lt;strong>Accept a combination stack&lt;/strong> if you need both - text on Matrix or Zulip, voice on Mumble or Jitsi - because no single product covers the whole bundle.&lt;/li>
&lt;li>&lt;strong>Dual-run&lt;/strong> the self-hosted space alongside Discord for a while, and expect meaningful drop-off from members who will not install a second app.&lt;/li>
&lt;/ol>
&lt;p>If self-hosted chat is your first serious service, our &lt;a href="https://techfuelhq.com/articles/self-hosting-essentials/">self-hosting essentials priority guide&lt;/a> covers what to stand up first and why, the broader &lt;a href="https://techfuelhq.com/articles/self-hosted-apps-replace-saas-2026/">self-hosted apps to replace SaaS roundup&lt;/a> sets the context, and since Matrix and Rocket.Chat both ship Compose files, the &lt;a href="https://techfuelhq.com/tutorials/docker-compose-starter-stack-homelab-2026/">Docker Compose starter-stack tutorial&lt;/a> is the fastest way to get a test instance running.&lt;/p>
&lt;h2 id="bottom-line">Bottom line&lt;/h2>
&lt;p>Do not chase a single &amp;ldquo;best&amp;rdquo; self-hosted Discord alternative - it does not exist in 2026. Decide whether your community is fundamentally about &lt;em>text&lt;/em> or &lt;em>voice&lt;/em>, pick the tool that owns that axis (Matrix or Zulip for text, Mumble for voice, Stoat if you truly need the Discord look and can tolerate pre-1.0 rough edges, Mattermost or Rocket.Chat for teams), and plan for the migration friction that sinks most attempts. Get the voice/video architecture and the onboarding right and the tool choice mostly takes care of itself.&lt;/p></description></item><item><title>Grafana vs Prometheus: What Each Actually Does (And Do You Need Both?)</title><link>https://techfuelhq.com/homelab/grafana-vs-prometheus-2026/</link><pubDate>Thu, 02 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/homelab/grafana-vs-prometheus-2026/</guid><description>&lt;p>Search &amp;ldquo;grafana vs prometheus&amp;rdquo; and the top results all open with the same correct sentence — &lt;em>they&amp;rsquo;re complementary, not competitors&lt;/em> — and then spend two thousand words on Kubernetes federation and enterprise observability platforms. Correct framing, wrong audience. If you&amp;rsquo;re a self-hoster deciding what to actually deploy on your Docker host this weekend, the questions that matter are different: &lt;strong>what does each piece really do, which alerting system should you use (there are two, and that&amp;rsquo;s the real &amp;ldquo;vs&amp;rdquo;), and what does the whole stack cost in RAM?&lt;/strong> Those are the questions this guide answers, with numbers from the stack we actually run.&lt;/p>
&lt;p>The one-paragraph version: &lt;strong>Prometheus collects and stores metrics&lt;/strong> — it scrapes exporters on your machines every 15 seconds into its own time-series database and evaluates alert rules. &lt;strong>Grafana visualizes them&lt;/strong> — it queries Prometheus (or ~50 other data sources) and turns the numbers into dashboards. You deploy both, they fit in well under a gigabyte of RAM, and the only genuine either/or decision inside the stack is Alertmanager vs Grafana Alerting. Everything below unpacks that.&lt;/p>
&lt;h2 id="what-prometheus-actually-does">What Prometheus actually does&lt;/h2>
&lt;p>&lt;a href="https://prometheus.io/" rel="noopener">Prometheus&lt;/a> (currently 3.x LTS, Apache 2.0, an independent CNCF project) is the data layer:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Pull-based scraping.&lt;/strong> Prometheus polls HTTP endpoints called exporters on an interval (15s is the common default). Nothing pushes to it; it fetches.&lt;/li>
&lt;li>&lt;strong>A built-in time-series database (TSDB).&lt;/strong> Metrics land on local disk with configurable retention (15 days by default). Per the &lt;a href="https://prometheus.io/docs/prometheus/latest/storage/" rel="noopener">official storage docs&lt;/a>, Prometheus &amp;ldquo;stores an average of only 1-2 bytes per sample&amp;rdquo; — the documented capacity formula is &lt;code>retention_seconds × samples_per_second × bytes_per_sample&lt;/code>. In practice, our 5-node stack at 15-day retention sits in the low single-digit gigabytes.&lt;/li>
&lt;li>&lt;strong>PromQL.&lt;/strong> The query language for rates, aggregations, and alert conditions — the same expressions power both dashboards and alerts.&lt;/li>
&lt;li>&lt;strong>The exporter ecosystem.&lt;/strong> This is why Prometheus owns homelab monitoring: &lt;a href="https://prometheus.io/docs/guides/node-exporter/" rel="noopener">node_exporter&lt;/a> for Linux hosts (~15MB RAM each), windows_exporter, pve-exporter for Proxmox, cAdvisor for Docker containers, blackbox_exporter for HTTP/ping probes.&lt;/li>
&lt;/ul>
&lt;p>What Prometheus deliberately does &lt;em>not&lt;/em> do: dashboards. Its built-in expression browser is a debugging tool, not a UI you&amp;rsquo;d live in. And it doesn&amp;rsquo;t handle logs — metrics only.&lt;/p>
&lt;h2 id="what-grafana-actually-does">What Grafana actually does&lt;/h2>
&lt;p>&lt;a href="https://grafana.com/" rel="noopener">Grafana&lt;/a> (currently 13.x; OSS core AGPLv3 &lt;a href="https://grafana.com/licensing/" rel="noopener">since v8.0&lt;/a>, plugins Apache 2.0) is the presentation layer:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Dashboards.&lt;/strong> Drag-and-drop panels — time series, gauges, heatmaps, stat panels, tables. The community dashboard library means a full Linux-host dashboard is an import-by-ID away.&lt;/li>
&lt;li>&lt;strong>Data-source agnostic.&lt;/strong> Prometheus is one of dozens of native sources alongside Loki, InfluxDB, MySQL, Elasticsearch, CloudWatch, and more. Grafana is the one pane of glass over all of them.&lt;/li>
&lt;li>&lt;strong>Grafana Alerting.&lt;/strong> Since Grafana 9, a &lt;a href="https://grafana.com/docs/grafana/latest/alerting/" rel="noopener">unified alerting system&lt;/a> that creates alert rules against &lt;em>any&lt;/em> data source through the GUI, with notification &amp;ldquo;contact points&amp;rdquo; configured in the UI.&lt;/li>
&lt;/ul>
&lt;p>What Grafana cannot do: collect or store anything. No scraping, no database. Without a backend it&amp;rsquo;s an empty shell — which is precisely why the &amp;ldquo;vs&amp;rdquo; framing fails.&lt;/p>
&lt;h2 id="the-real-comparison-prometheus-alertmanager-vs-grafana-alerting">The real comparison: Prometheus Alertmanager vs Grafana Alerting&lt;/h2>
&lt;p>Here&amp;rsquo;s the genuine either/or decision inside the stack, and the one the usual comparisons skip entirely. Both tools can fire alerts; they do it very differently.&lt;/p>
&lt;p>&lt;strong>&lt;a href="https://prometheus.io/docs/alerting/latest/alertmanager/" rel="noopener">Prometheus Alertmanager&lt;/a>&lt;/strong> is a separate small binary. Prometheus evaluates alert rules you write in YAML (PromQL expressions with thresholds and durations) and fires them to Alertmanager, which handles deduplication, grouping, silencing, inhibition, and routing to Slack, Discord, email, PagerDuty, Telegram, or webhooks. Its strengths: alerts live in version-controllable YAML files (alerts-as-code), and its routing trees handle genuinely complex logic. Its cost: you&amp;rsquo;re writing YAML and PromQL, not clicking a UI.&lt;/p>
&lt;p>&lt;strong>Grafana Alerting&lt;/strong> builds rules through the GUI against any data source, not just Prometheus. Contact points and notification policies are configured visually, and it can even import Prometheus-compatible rules. Its strengths: much gentler learning curve, and it&amp;rsquo;s your &lt;em>only&lt;/em> option if your data source isn&amp;rsquo;t Prometheus. Its cost: complex routing is weaker than Alertmanager&amp;rsquo;s trees, and click-configured alerts are harder to version-control.&lt;/p>
&lt;p>&lt;strong>The homelab recommendation:&lt;/strong> if you run the full stack, define your core infrastructure alerts (disk filling, host down, RAM pressure) in Prometheus + Alertmanager — they&amp;rsquo;re code, they&amp;rsquo;re in Git, they survive a Grafana reinstall — and use Grafana Alerting for ad-hoc or dashboard-adjacent alerts. The two coexist without conflict. If you only have Grafana over a non-Prometheus source, Grafana Alerting is the answer by default.&lt;/p>
&lt;h2 id="comparison-table">Comparison table&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">&lt;/th>
&lt;th scope="col">Prometheus&lt;/th>
&lt;th scope="col">Grafana&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Primary role&lt;/td>
&lt;td>Metrics collection + time-series storage&lt;/td>
&lt;td>Visualization + dashboards&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Data model&lt;/td>
&lt;td>Pull-based scrape → labeled time series&lt;/td>
&lt;td>Source-agnostic queries to backends&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Alerting&lt;/td>
&lt;td>Alertmanager (YAML rules, routing trees)&lt;/td>
&lt;td>Grafana Alerting (GUI, any data source)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Dashboards&lt;/td>
&lt;td>Minimal expression browser&lt;/td>
&lt;td>Full dashboard builder + community library&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Storage&lt;/td>
&lt;td>Built-in TSDB, ~1-2 bytes/sample&lt;/td>
&lt;td>None — queries external sources&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Homelab RAM (5 nodes)&lt;/td>
&lt;td>200–400MB (15-day retention)&lt;/td>
&lt;td>100–200MB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>License&lt;/td>
&lt;td>Apache 2.0 (CNCF)&lt;/td>
&lt;td>AGPLv3 core (since v8.0), Apache 2.0 plugins&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Can you skip it?&lt;/td>
&lt;td>Only if your metrics live elsewhere&lt;/td>
&lt;td>Only if you never want dashboards&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;h2 id="the-homelab-stack-what-you-actually-deploy-and-what-it-costs">The homelab stack: what you actually deploy, and what it costs&lt;/h2>
&lt;p>The standard self-hosted composition — the one our &lt;a href="https://techfuelhq.com/tutorials/homelab-monitoring-grafana-prometheus-2026/">full setup guide&lt;/a> walks through end to end — is four pieces:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Component&lt;/th>
&lt;th scope="col">Count (5-node homelab)&lt;/th>
&lt;th scope="col">RAM&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Node Exporter&lt;/td>
&lt;td>one per monitored machine&lt;/td>
&lt;td>~15MB each (~75MB)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>pve-exporter (Proxmox)&lt;/td>
&lt;td>1&lt;/td>
&lt;td>~30MB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Prometheus (15-day retention)&lt;/td>
&lt;td>1&lt;/td>
&lt;td>200–400MB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Grafana&lt;/td>
&lt;td>1&lt;/td>
&lt;td>100–200MB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Alertmanager&lt;/td>
&lt;td>1&lt;/td>
&lt;td>~50MB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Total&lt;/strong>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;strong>~450–750MB — budget 600–800MB&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Those are our first-party tested numbers, not vendor specs. CPU is a non-issue on anything with two modern cores; disk lands at a few gigabytes with default retention (compute your own with the &lt;a href="https://prometheus.io/docs/prometheus/latest/storage/" rel="noopener">official formula&lt;/a> above). A Raspberry Pi 4 with 4GB runs the full stack — put the Prometheus TSDB on an SSD, not an SD card, because the write pattern will eat cheap flash. If you&amp;rsquo;re budgeting the whole Docker host, our &lt;a href="https://techfuelhq.com/tools/docker-ram-planner/">Docker RAM planner&lt;/a> accounts for the monitoring stack alongside your other services.&lt;/p>
&lt;p>&lt;strong>Can you skip one?&lt;/strong> Prometheus without Grafana works — your alerts still fire — but you lose the visibility that&amp;rsquo;s half the point. Grafana without Prometheus only makes sense when your metrics already live in another backend. For 95% of homelabs, the answer is both, and at ~600MB total the economics don&amp;rsquo;t justify agonizing over it.&lt;/p>
&lt;h2 id="when-the-full-stack-is-overkill">When the full stack is overkill&lt;/h2>
&lt;p>Honest caveat: if all you want is &amp;ldquo;is my server up and roughly how busy is it,&amp;rdquo; Prometheus + Grafana is more machinery than you need. Lighter single-binary tools — Beszel, Netdata, Glances — give you instant per-host visibility with near-zero setup; we compare them in our &lt;a href="https://techfuelhq.com/homelab/beszel-vs-netdata-vs-glances-2026/">lightweight monitoring roundup&lt;/a>. The Prometheus stack earns its place when you want history (&amp;ldquo;what was the CPU doing three hours before the crash?&amp;rdquo;), cross-host dashboards, and real alerting. And if you&amp;rsquo;d rather not host it at all, Grafana Cloud&amp;rsquo;s free tier (10K series, 14-day retention, 3 users) exists — at the philosophical cost of shipping your homelab&amp;rsquo;s metrics to someone else&amp;rsquo;s cloud.&lt;/p>
&lt;h2 id="bottom-line">Bottom line&lt;/h2>
&lt;p>Prometheus is the data layer; Grafana is the glass. Deploy both — via our &lt;a href="https://techfuelhq.com/tutorials/homelab-monitoring-grafana-prometheus-2026/">step-by-step stack guide&lt;/a> or as an addition to your &lt;a href="https://techfuelhq.com/tutorials/docker-compose-starter-stack-homelab-2026/">Docker Compose stack&lt;/a> — put your load-bearing alerts in Alertmanager where they&amp;rsquo;re version-controlled, use Grafana&amp;rsquo;s alerting for everything visual, and the whole thing costs you well under a gigabyte of RAM. The &amp;ldquo;vs&amp;rdquo; was never real; the layering is.&lt;/p></description></item><item><title>Proxmox vs Docker: They're Not Rivals — What to Actually Run Where (2026)</title><link>https://techfuelhq.com/articles/proxmox-vs-docker-2026/</link><pubDate>Thu, 02 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/proxmox-vs-docker-2026/</guid><description>&lt;p>Type &amp;ldquo;proxmox vs docker&amp;rdquo; into any search engine and you&amp;rsquo;ll find a decade of forum threads arguing about the wrong question. Proxmox VE and Docker are not competitors. &lt;strong>Proxmox VE 9 is a Type-1 hypervisor&lt;/strong> — it owns your physical hardware and carves it into virtual machines and LXC containers. &lt;strong>Docker is an application runtime&lt;/strong> — it packages a single app and its dependencies into a portable image and runs it. One is the foundation of your homelab; the other is something you run &lt;em>on&lt;/em> that foundation. The real 2026 decision is not which to pick — it&amp;rsquo;s &lt;strong>how to layer them&lt;/strong>: Docker inside a Proxmox VM, Docker inside an LXC, Proxmox-native LXC per service with no Docker at all, or (new this cycle) Proxmox&amp;rsquo;s own OCI container support.&lt;/p>
&lt;p>This guide gives you the layered answer with the details the usual comparisons skip: what Proxmox&amp;rsquo;s documentation actually recommends (with the real quote, not the folklore), the ZFS storage-driver conflict that silently breaks Docker-in-LXC on most Proxmox hosts, where GPU passthrough really stands for each option, and a decision tree you can run your own setup through. If you&amp;rsquo;re still deciding between containers and VMs at the Proxmox layer itself, start with our &lt;a href="https://techfuelhq.com/homelab/lxc-vs-vm-proxmox-2026/">LXC vs VM breakdown&lt;/a> — this article picks up where that one ends.&lt;/p>
&lt;h2 id="what-proxmox-ve-actually-is-2026">What Proxmox VE actually is (2026)&lt;/h2>
&lt;p>&lt;a href="https://www.proxmox.com/en/proxmox-virtual-environment/overview" rel="noopener">Proxmox VE&lt;/a> is a free, open-source (AGPLv3) Type-1 hypervisor, currently at version 9.2. In Proxmox&amp;rsquo;s own words, it &amp;ldquo;tightly integrates the KVM hypervisor and Linux Containers (LXC), software-defined storage and networking functionality, on a single platform.&amp;rdquo; In practice that means:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Full KVM virtual machines&lt;/strong> — Windows, pfSense/OPNsense, Home Assistant OS, anything with its own kernel.&lt;/li>
&lt;li>&lt;strong>LXC system containers&lt;/strong> — lightweight full-Linux-OS containers sharing the host kernel, each with its own IP and filesystem.&lt;/li>
&lt;li>&lt;strong>A web UI, clustering, and snapshots&lt;/strong> — plus first-class &lt;a href="https://www.proxmox.com/en/proxmox-backup-server" rel="noopener">Proxmox Backup Server&lt;/a> integration for deduplicated, incremental backups of every VM and container.&lt;/li>
&lt;/ul>
&lt;p>The no-subscription repository makes it fully usable for homelab without paying anything.&lt;/p>
&lt;h2 id="what-docker-actually-is">What Docker actually is&lt;/h2>
&lt;p>Docker Engine is an application container runtime. It pulls OCI-format images (from Docker Hub or anywhere else), layers them onto a shared host kernel, and starts them in under a second. Its real superpower for self-hosters is the ecosystem: nearly every project you&amp;rsquo;d want to self-host publishes a &lt;code>docker-compose.yml&lt;/code>, and Docker Compose turns a whole multi-service stack into one file and one command. What Docker is &lt;em>not&lt;/em>: a hypervisor. It can&amp;rsquo;t run Windows, can&amp;rsquo;t give a workload its own kernel, and doesn&amp;rsquo;t manage your physical host. It also isn&amp;rsquo;t the only engine that runs OCI images — &lt;a href="https://techfuelhq.com/articles/podman-vs-docker-2026/">Podman does the same thing daemonlessly and rootless by default&lt;/a>, which is a separate decision from the layering question here.&lt;/p>
&lt;h2 id="why-the-question-is-framed-wrong">Why the question is framed wrong&lt;/h2>
&lt;p>Because the two tools sit at different layers, &amp;ldquo;Proxmox vs Docker&amp;rdquo; really decomposes into two separate questions:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Should my bare metal run Proxmox?&lt;/strong> For almost any homelab beyond a single-purpose box: yes. Even if you only ever run Docker, putting Proxmox underneath costs you a few percent overhead and buys you snapshots, easy reinstalls, backups, and the freedom to add a VM later. (If you are weighing that hypervisor choice against VMware, the &lt;a href="https://techfuelhq.com/articles/proxmox-vs-esxi-2025/">Proxmox vs ESXi breakdown&lt;/a> covers why the free tier lands on Proxmox after Broadcom.)&lt;/li>
&lt;li>&lt;strong>How should Docker run on that host?&lt;/strong> This is the decision with real trade-offs — and it&amp;rsquo;s the rest of this article.&lt;/li>
&lt;/ol>
&lt;h2 id="the-four-ways-to-run-containers-on-proxmox">The four ways to run containers on Proxmox&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">&lt;/th>
&lt;th scope="col">Proxmox LXC (native)&lt;/th>
&lt;th scope="col">Docker in a VM&lt;/th>
&lt;th scope="col">Docker in an LXC&lt;/th>
&lt;th scope="col">Proxmox OCI (PVE 9.1+, preview)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Shares host kernel&lt;/td>
&lt;td>Yes&lt;/td>
&lt;td>No (own kernel)&lt;/td>
&lt;td>Yes&lt;/td>
&lt;td>Yes&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Isolation&lt;/td>
&lt;td>Medium&lt;/td>
&lt;td>High&lt;/td>
&lt;td>Low–medium&lt;/td>
&lt;td>Medium&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>RAM overhead&lt;/td>
&lt;td>Minimal&lt;/td>
&lt;td>~0.5–1 GB per VM&lt;/td>
&lt;td>Minimal&lt;/td>
&lt;td>Minimal&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Boot time&lt;/td>
&lt;td>&amp;lt;1 s&lt;/td>
&lt;td>15–45 s&lt;/td>
&lt;td>&amp;lt;1 s&lt;/td>
&lt;td>&amp;lt;1 s&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>PBS backup story&lt;/td>
&lt;td>Full container backup&lt;/td>
&lt;td>Full VM backup, volumes included&lt;/td>
&lt;td>Full container backup&lt;/td>
&lt;td>Container backup&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Docker Compose&lt;/td>
&lt;td>No&lt;/td>
&lt;td>Yes, native&lt;/td>
&lt;td>Yes (nesting=1)&lt;/td>
&lt;td>No&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GPU access&lt;/td>
&lt;td>Device bind mount&lt;/td>
&lt;td>Full VFIO passthrough&lt;/td>
&lt;td>Device bind mount&lt;/td>
&lt;td>Not documented&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ZFS host compatibility&lt;/td>
&lt;td>Native&lt;/td>
&lt;td>Native&lt;/td>
&lt;td>Native since OpenZFS 2.2 (PVE 8.1+)&lt;/td>
&lt;td>Native&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Official Proxmox guidance&lt;/td>
&lt;td>First-class&lt;/td>
&lt;td>Recommended for Docker&lt;/td>
&lt;td>VM recommended instead&lt;/td>
&lt;td>Technology preview&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Best for&lt;/td>
&lt;td>Single Linux services&lt;/td>
&lt;td>Compose stacks, anything important&lt;/td>
&lt;td>RAM-starved hosts, trusted services&lt;/td>
&lt;td>Experiments&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;h2 id="the-docker-in-lxc-debate-what-proxmox-actually-says">The Docker-in-LXC debate: what Proxmox actually says&lt;/h2>
&lt;p>The claim you&amp;rsquo;ll see everywhere is &amp;ldquo;Proxmox officially discourages Docker in LXC.&amp;rdquo; The reality is more precise. There is no wiki page banning it (the oft-cited &lt;code>Docker_on_LXC&lt;/code> page simply doesn&amp;rsquo;t exist), but the official Proxmox documentation does take a position — quoted in &lt;a href="https://forum.proxmox.com/threads/docker-in-ct-or-vm-best-practices.134164/" rel="noopener">Proxmox&amp;rsquo;s own forum best-practices thread&lt;/a>:&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;…it is recommended that you run them inside a Proxmox QEMU VM. This will give you all the advantages of application containerization, while also providing the benefits that VMs offer, such as strong isolation from the host and the ability to live-migrate.&amp;rdquo;&lt;/p>&lt;/blockquote>
&lt;p>So: a recommendation toward VMs, not a prohibition of LXC. In homelab practice, Docker inside an LXC with &lt;code>features: nesting=1&lt;/code> (add &lt;code>keyctl=1&lt;/code> for some workloads) runs reliably for trusted, internal services — that&amp;rsquo;s the long-standing consensus across the &lt;a href="https://forum.proxmox.com/threads/proxmox-containers-vs-running-a-vm-and-using-docker.123987/" rel="noopener">Proxmox forums&lt;/a> and communities like &lt;a href="https://community.learnlinux.tv/t/lxc-vs-docker-on-proxmox/392" rel="noopener">LearnLinuxTV&lt;/a>.&lt;/p>
&lt;p>&lt;strong>The famous ZFS gotcha — now mostly historical.&lt;/strong> For years, Docker&amp;rsquo;s default &lt;code>overlay2&lt;/code> storage driver &lt;a href="https://docs.docker.com/engine/storage/drivers/select-storage-driver/" rel="noopener">didn&amp;rsquo;t support ZFS backing filesystems&lt;/a>, so Docker inside an LXC on a ZFS-backed Proxmox host fell back badly out of the box, and the community fix was switching to &lt;code>fuse-overlayfs&lt;/code>. &lt;strong>OpenZFS 2.2 changed this&lt;/strong>: it added native overlayfs support, so on Proxmox VE 8.1+ (and PVE 9, which ships OpenZFS 2.3) &lt;code>overlay2&lt;/code> simply works in an LXC on ZFS. If you&amp;rsquo;re on an older pool or you see overlay errors, &lt;code>fuse-overlayfs&lt;/code> remains the fallback — or skip the whole question and run Docker in a VM, where the guest&amp;rsquo;s ext4 makes it a non-issue.&lt;/p>
&lt;h2 id="backup-reality-where-each-option-wins">Backup reality: where each option wins&lt;/h2>
&lt;p>This is the most under-weighted factor in every comparison we read, and it&amp;rsquo;s where the layered setup pays off:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Docker in a VM + PBS&lt;/strong> — &lt;a href="https://techfuelhq.com/tutorials/proxmox-backup-server-3-2-1-2026/">Proxmox Backup Server&lt;/a> snapshots the entire VM: Docker Engine, every container, every named volume, all application data. Restoring your whole stack after a bad upgrade is one operation. This is the best backup story in self-hosting.&lt;/li>
&lt;li>&lt;strong>LXC (native or with Docker) + PBS&lt;/strong> — also good: PBS backs up the full container.&lt;/li>
&lt;li>&lt;strong>Docker on bare metal&lt;/strong> — you own the problem: volume-by-volume backups with &lt;code>tar&lt;/code> jobs or Restic, plus the compose files, plus remembering how it all fit together. It works, but it&amp;rsquo;s the reason bare-metal Docker hosts tend to be rebuilt rather than restored.&lt;/li>
&lt;/ul>
&lt;h2 id="gpu-passthrough-which-setup-actually-works">GPU passthrough: which setup actually works&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>VM + VFIO&lt;/strong> — the reliable path. Pass the full GPU to a VM (&lt;a href="https://techfuelhq.com/tutorials/gpu-passthrough-proxmox-vm-2026/">our step-by-step guide&lt;/a>), then install Docker plus the NVIDIA Container Toolkit inside it. This is the standard setup for Ollama, Stable Diffusion, Jellyfin/Plex hardware transcode.&lt;/li>
&lt;li>&lt;strong>LXC + device bind mount&lt;/strong> — contrary to what some comparison pages claim, LXC GPU access &lt;em>does&lt;/em> exist: you bind-mount the &lt;code>/dev/nvidia*&lt;/code> devices and match driver versions between host and container. It works for CUDA workloads and it&amp;rsquo;s lighter than a VM — but it&amp;rsquo;s a different mechanism from VFIO, it couples the container to host driver versions, and it&amp;rsquo;s more fragile across upgrades.&lt;/li>
&lt;li>&lt;strong>Docker bare metal&lt;/strong> — works, but again forfeits the hypervisor&amp;rsquo;s snapshot/backup layer around it.&lt;/li>
&lt;/ul>
&lt;h2 id="what-about-proxmox-9s-native-oci-support">What about Proxmox 9&amp;rsquo;s native OCI support?&lt;/h2>
&lt;p>New since PVE 9.1: you can create LXC containers directly from OCI images — the same image format Docker uses. Per the &lt;a href="https://pve.proxmox.com/wiki/Roadmap" rel="noopener">official release notes&lt;/a>, creating &lt;em>system&lt;/em> containers from suitable OCI images is supported, while &lt;em>application&lt;/em> containers from OCI images are explicitly a &lt;strong>technology preview&lt;/strong>. There is no Compose equivalent, no orchestration, and no ecosystem around it yet. It&amp;rsquo;s a genuinely interesting direction — one image standard across your whole stack — but in mid-2026 it is not a Docker replacement for a real homelab. Watch it; don&amp;rsquo;t build on it.&lt;/p>
&lt;h2 id="the-honest-decision-tree">The honest decision tree&lt;/h2>
&lt;p>Run your setup through this, top to bottom:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Need Windows, pfSense, Home Assistant OS, or any non-Linux workload?&lt;/strong> You need Proxmox VMs regardless. Docker slots in as one more VM.&lt;/li>
&lt;li>&lt;strong>GPU-accelerated containers (LLMs, Stable Diffusion, transcoding)?&lt;/strong> Docker in a VM with VFIO passthrough.&lt;/li>
&lt;li>&lt;strong>Want one-step restore of your whole stack, data included?&lt;/strong> Docker in a VM, backed up by PBS.&lt;/li>
&lt;li>&lt;strong>Proxmox host on ZFS and set on Docker-in-LXC?&lt;/strong> On PVE 8.1+ (OpenZFS 2.2+) &lt;code>overlay2&lt;/code> works natively; on an older pool, use &lt;code>fuse-overlayfs&lt;/code> inside the container — and know why.&lt;/li>
&lt;li>&lt;strong>Under 16 GB of RAM and every megabyte counts?&lt;/strong> Docker in an LXC with &lt;code>nesting=1&lt;/code> for trusted, internal-only services is a legitimate choice — size it with our &lt;a href="https://techfuelhq.com/tools/docker-ram-planner/">Docker RAM planner&lt;/a>.&lt;/li>
&lt;li>&lt;strong>Just running a handful of single Linux services (DNS, reverse proxy, monitoring)?&lt;/strong> Proxmox-native LXC per service, no Docker needed — lowest overhead, per-service IPs, clean PBS backups.&lt;/li>
&lt;/ol>
&lt;p>Most homelabs end up hybrid: a couple of native LXCs for infrastructure services, one Docker VM for the Compose stacks, and headroom for the odd full VM. If that&amp;rsquo;s where you land, our &lt;a href="https://techfuelhq.com/tutorials/docker-compose-starter-stack-homelab-2026/">Docker Compose starter stack&lt;/a> fills the Docker VM in about half an hour, and the &lt;a href="https://techfuelhq.com/tools/proxmox-capacity-planner/">Proxmox capacity planner&lt;/a> tells you how much host you actually need.&lt;/p>
&lt;h2 id="bottom-line">Bottom line&lt;/h2>
&lt;p>Proxmox and Docker answer different questions. Proxmox decides how your hardware is divided; Docker decides how applications are packaged. Put Proxmox on the metal, put Docker in a VM on top of it (or in an LXC if you know the trade-offs and your storage driver), and you get the ecosystem of Docker with the snapshots, backups, and flexibility of a real hypervisor underneath. That layered setup — not a winner-take-all choice — is why the &amp;ldquo;vs&amp;rdquo; framing never quite made sense.&lt;/p></description></item><item><title>WireGuard vs OpenVPN for the Homelab (2026): A Self-Hoster's Decision Guide</title><link>https://techfuelhq.com/networking/wireguard-vs-openvpn-homelab-2026/</link><pubDate>Thu, 02 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/networking/wireguard-vs-openvpn-homelab-2026/</guid><description>&lt;p>If you&amp;rsquo;re comparing WireGuard and OpenVPN, most of what you&amp;rsquo;ll find is written for commercial VPN shoppers — which provider&amp;rsquo;s app is faster, which unblocks more streaming. This is the other version of the question: you&amp;rsquo;re a self-hoster putting a VPN server on your &lt;strong>own&lt;/strong> router, Raspberry Pi, or Proxmox container so you can reach your homelab from anywhere (and maybe link two sites). For that job, the 2026 answer is direct: &lt;strong>WireGuard is the default, and OpenVPN survives for exactly one scenario — networks where UDP is blocked and only TCP on port 443 gets out.&lt;/strong> The rest of this guide is the evidence, the benchmarks from our own hardware, and the configurations where each one earns its place.&lt;/p>
&lt;p>(If your actual question is &amp;ldquo;WireGuard or Tailscale,&amp;rdquo; that&amp;rsquo;s a different comparison — &lt;a href="https://techfuelhq.com/networking/tailscale-vs-wireguard-2026/">Tailscale is WireGuard plus a coordination layer&lt;/a>. This article is about the raw protocols you host yourself.)&lt;/p>
&lt;h2 id="protocol-architecture-what-youre-actually-running">Protocol architecture: what you&amp;rsquo;re actually running&lt;/h2>
&lt;p>&lt;strong>WireGuard&lt;/strong> lives in the Linux kernel (mainlined in 5.6, 2020) and is famously small — about 4,000 lines of code in the original kernel implementation, per its &lt;a href="https://www.wireguard.com/papers/wireguard.pdf" rel="noopener">NDSS 2017 academic paper&lt;/a>. Its cryptography is fixed, not negotiated: ChaCha20-Poly1305 for authenticated encryption, Curve25519 for key exchange, BLAKE2s for hashing, HKDF for key derivation, in a Noise IKpsk2 handshake — all specified on the &lt;a href="https://www.wireguard.com/protocol/" rel="noopener">official protocol page&lt;/a>. Identity is just a key pair, like SSH. It is &lt;strong>UDP-only by design&lt;/strong> (the project &lt;a href="https://www.wireguard.com/known-limitations/" rel="noopener">explicitly avoids TCP tunneling&lt;/a> because TCP-over-TCP degrades badly), and it roams beautifully: when your phone hops from WiFi to LTE, the server just starts replying to the new address — no re-key, no reconnect dance.&lt;/p>
&lt;p>&lt;strong>OpenVPN&lt;/strong> is the two-decade veteran: a userspace daemon built on TLS via OpenSSL, with negotiated ciphers (AES-256-GCM is typical; ChaCha20-Poly1305 is available in modern builds), a full PKI — CA certificate, server certificate, client certificates — and both &lt;strong>UDP and TCP modes&lt;/strong>. The codebase is roughly 70,000 lines, an order of magnitude larger than WireGuard. That heft buys flexibility: cipher policy compliance, user/password auth options, and the single killer feature WireGuard deliberately lacks — &lt;strong>TCP on port 443&lt;/strong>, where VPN traffic is effectively indistinguishable from ordinary HTTPS at the packet-inspection layer.&lt;/p>
&lt;h2 id="performance-the-honest-picture-on-homelab-hardware">Performance: the honest picture on homelab hardware&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Test&lt;/th>
&lt;th scope="col">WireGuard&lt;/th>
&lt;th scope="col">OpenVPN&lt;/th>
&lt;th scope="col">Source&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Netgate 4100, single tunnel&lt;/td>
&lt;td>941 Mbps&lt;/td>
&lt;td>not benched&lt;/td>
&lt;td>our own &lt;a href="https://techfuelhq.com/networking/homelab-firewall-router-stack-2026/">firewall stack bench&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GL.iNet Flint 2 (OpenWrt)&lt;/td>
&lt;td>~900 Mbps&lt;/td>
&lt;td>not benched&lt;/td>
&lt;td>independent reviews, per our gear guide&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>PIA vendor test (US)&lt;/td>
&lt;td>~180 Mbps&lt;/td>
&lt;td>~120 Mbps&lt;/td>
&lt;td>vendor-conducted, conditions undisclosed&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ExpressVPN latency (UK, same server)&lt;/td>
&lt;td>40 ms&lt;/td>
&lt;td>113 ms (TCP)&lt;/td>
&lt;td>vendor-conducted&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The honest framing: the &amp;ldquo;3–4x faster&amp;rdquo; claim that circulates comes from vendor tests and old benchmarks — &lt;a href="https://www.wireguard.com/performance/" rel="noopener">WireGuard&amp;rsquo;s own performance page&lt;/a> openly calls its published numbers &amp;ldquo;old, crusty, and not super well conducted,&amp;rdquo; and critics have noted the original whitepaper benchmarks used 64KB jumbo frames rather than real ~1500-byte internet packets. The defensible version: on Linux, WireGuard&amp;rsquo;s kernel-space path gives it a real CPU-efficiency edge (roughly 1.3–1.5x in comparable tests, and much lower latency than OpenVPN-over-TCP), while on Windows and macOS it runs in userspace (wireguard-go) and the gap narrows. &lt;strong>For a homelab, both protocols are faster than your WAN link.&lt;/strong> A modest firewall appliance pushes WireGuard at wire speed — 941 Mbps on our Netgate 4100 at 14W. The protocol is not your bottleneck; pick on traversal, config complexity, and use case instead.&lt;/p>
&lt;h2 id="the-comparison-table">The comparison table&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">&lt;/th>
&lt;th scope="col">WireGuard&lt;/th>
&lt;th scope="col">OpenVPN&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Transport&lt;/td>
&lt;td>UDP only&lt;/td>
&lt;td>UDP or TCP (incl. port 443)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Blocked-network traversal&lt;/td>
&lt;td>Fails if UDP filtered (needs a wrapper)&lt;/td>
&lt;td>TCP/443 passes almost everything&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Crypto&lt;/td>
&lt;td>Fixed modern suite (ChaCha20-Poly1305, Curve25519)&lt;/td>
&lt;td>Negotiated via OpenSSL (agile, misconfigurable)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Codebase&lt;/td>
&lt;td>~4,000 lines (kernel implementation)&lt;/td>
&lt;td>~70,000 lines&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Security review&lt;/td>
&lt;td>Formal verifications (Tamarin, eCK/ACCE, ProVerif, verified Curve25519)&lt;/td>
&lt;td>Two decades of production use + independent audits&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Setup&lt;/td>
&lt;td>Key pair + a dozen config lines per peer&lt;/td>
&lt;td>Full PKI: CA, server cert, client certs, config&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Roaming (WiFi ↔ LTE)&lt;/td>
&lt;td>Automatic, no reconnect&lt;/td>
&lt;td>Reconnect required&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Site-to-site&lt;/td>
&lt;td>Symmetric peer config&lt;/td>
&lt;td>Server/client model, more moving parts&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Kernel-space (Linux)&lt;/td>
&lt;td>Yes&lt;/td>
&lt;td>No (userspace + tun driver)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>DPI visibility&lt;/td>
&lt;td>Identifiable as WireGuard&lt;/td>
&lt;td>TCP/443 mode blends with HTTPS&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;h2 id="road-warrior-reaching-your-homelab-from-anywhere">Road-warrior: reaching your homelab from anywhere&lt;/h2>
&lt;p>This is the case most self-hosters actually have — laptop or phone out in the world, homelab at home.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>WireGuard wins every normal network&lt;/strong>: home WiFi, coffee shops, cellular. Sub-second connections, silent roaming, a battery-friendly protocol, and clients on every platform. Our &lt;a href="https://techfuelhq.com/tutorials/wireguard-self-hosted-vpn-proxmox-2026/">WireGuard-on-Proxmox guide&lt;/a> gets a road-warrior server running in an afternoon.&lt;/li>
&lt;li>&lt;strong>OpenVPN wins the hostile networks&lt;/strong>: corporate offices that block outbound UDP, hotel and airport captive portals, ISPs that filter VPN traffic. OpenVPN in TCP mode on port 443 looks like HTTPS and gets through.&lt;/li>
&lt;li>&lt;strong>The simple test&lt;/strong>: from the restrictive network, check whether you can reach your home IP on UDP 51820. Reachable → WireGuard. Blocked → OpenVPN TCP/443 (or a TCP wrapper like wstunnel around WireGuard, if you&amp;rsquo;d rather carry the complexity than run a second server).&lt;/li>
&lt;/ul>
&lt;p>Our own setup, documented in the &lt;a href="https://techfuelhq.com/networking/homelab-firewall-router-stack-2026/">firewall stack article&lt;/a>, is the honest real-world answer: &lt;strong>WireGuard for road-warrior duty, with a small OpenVPN TCP-443 instance kept alive as the fallback&lt;/strong> for the two situations a year where UDP dies. On &lt;a href="https://techfuelhq.com/tutorials/opnsense-mini-pc-setup-2026/">OPNsense&lt;/a> or pfSense, running both side by side is a couple of tabs in the same UI (&lt;a href="https://docs.opnsense.org/manual/vpnet.html" rel="noopener">OPNsense VPN docs&lt;/a> cover both first-class).&lt;/p>
&lt;h2 id="site-to-site-linking-two-networks">Site-to-site: linking two networks&lt;/h2>
&lt;p>Connecting your home network to a VPS, a parent&amp;rsquo;s house, or a second site changes the calculus slightly:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>WireGuard&lt;/strong> does site-to-site with a pleasingly symmetric config — each side lists the other as a peer, &lt;code>AllowedIPs&lt;/code> carries the remote subnet, IP forwarding on, done (&lt;a href="https://www.procustodibus.com/blog/2020/12/wireguard-site-to-site-config/" rel="noopener">worked reference config&lt;/a>). The catch: at least one side needs a reachable endpoint (public IP or port forward); WireGuard has no built-in relay for two-sides-behind-CGNAT (that&amp;rsquo;s the problem &lt;a href="https://techfuelhq.com/networking/tailscale-vs-wireguard-2026/">Tailscale exists to solve&lt;/a>).&lt;/li>
&lt;li>&lt;strong>OpenVPN&lt;/strong> uses a server/client model for site-to-site, with the extra PKI ceremony that entails — but inherits its TCP fallback, which matters if one site sits behind a UDP-hostile ISP.&lt;/li>
&lt;/ul>
&lt;p>Default to WireGuard here too; reach for OpenVPN when one end&amp;rsquo;s network conditions demand TCP.&lt;/p>
&lt;h2 id="what-about-the-criticisms-of-wireguard">What about the criticisms of WireGuard?&lt;/h2>
&lt;p>Two are worth taking seriously. &lt;strong>No cipher agility&lt;/strong>: if ChaCha20 or Curve25519 is ever weakened, every WireGuard endpoint must upgrade in lockstep — a legitimate enterprise objection that is mostly moot in a homelab where you control all five endpoints. &lt;strong>No obfuscation and UDP-only&lt;/strong>: covered above; that&amp;rsquo;s precisely OpenVPN&amp;rsquo;s remaining lane. The security fundamentals, meanwhile, are unusually strong — WireGuard&amp;rsquo;s protocol carries &lt;a href="https://www.wireguard.com/formal-verification/" rel="noopener">multiple published formal verifications&lt;/a> (symbolic and computational proofs plus formally verified crypto implementations), a level of analysis very few network protocols get. OpenVPN counters with something different but real: twenty years of production hardening and independent audit history.&lt;/p>
&lt;h2 id="bottom-line">Bottom line&lt;/h2>
&lt;p>Run WireGuard. It&amp;rsquo;s in the kernel, it&amp;rsquo;s a dozen lines of config, it roams silently, it&amp;rsquo;s formally verified, and it moves at wire speed on a $60 router — while you&amp;rsquo;ll hit your WAN cap long before you hit the protocol&amp;rsquo;s. Keep OpenVPN in your toolkit for the one thing it still does better than anything: escaping UDP-hostile networks over TCP 443, either as a standing fallback server (our setup) or spun up when a work trip demands it. And if what you actually want is WireGuard without thinking about keys and endpoints, that&amp;rsquo;s &lt;a href="https://techfuelhq.com/tutorials/tailscale-remote-access-homelab-2026/">Tailscale&amp;rsquo;s job&lt;/a> — a different trade, covered in a different comparison.&lt;/p></description></item><item><title>CPU Mining in 2026: Is It Worth It, and Which Coins?</title><link>https://techfuelhq.com/crypto/cpu-mining-guide-2026/</link><pubDate>Wed, 01 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/crypto/cpu-mining-guide-2026/</guid><description>&lt;p>If you have a decent desktop or a homelab box sitting idle, &amp;ldquo;can I just mine some crypto on it&amp;rdquo; is a fair question. The honest answer in 2026 is: yes, on exactly one coin worth taking seriously, for a few dimes to a couple of dollars a day, and only if your electricity is cheap. This guide is the math and the method, from the hardware side, with none of the &amp;ldquo;passive income&amp;rdquo; fantasy.&lt;/p>
&lt;h2 id="the-bottom-line-up-front">The bottom line, up front&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>The coin is Monero (XMR).&lt;/strong> Its RandomX algorithm is the one major mining algorithm deliberately designed to run best on ordinary CPUs. Almost everything else worth mining now needs ASICs or GPUs.&lt;/li>
&lt;li>&lt;strong>The money is small.&lt;/strong> A high-end Ryzen earns roughly &lt;strong>$0.60–$0.80/day&lt;/strong> in XMR at a ~$200 price, before power. Net profit is measured in cents unless your electricity is very cheap.&lt;/li>
&lt;li>&lt;strong>The electricity rate decides everything.&lt;/strong> Below ~$0.08/kWh it is worth running; above ~$0.17/kWh you are paying to mine.&lt;/li>
&lt;li>&lt;strong>Never buy hardware to do this.&lt;/strong> The payback on a bought rig runs past five years. Mine on a machine you already own and would keep anyway.&lt;/li>
&lt;li>&lt;strong>The real risk is malware, not money.&lt;/strong> Mining software is one of the most abused categories on the internet. Getting the download wrong is how people lose far more than they ever mine.&lt;/li>
&lt;/ul>
&lt;p>If that is enough for you, great — that restraint is the whole point. If you want to actually do it well, here is the rest.&lt;/p>
&lt;h2 id="what-cpu-mining-is-and-why-it-still-exists">What CPU mining is (and why it still exists)&lt;/h2>
&lt;p>Most crypto mining abandoned CPUs over a decade ago. Bitcoin moved to purpose-built ASICs, and GPU mining dominated everything else until Ethereum — the coin that made graphics cards worth buying by the pallet — switched to proof-of-stake and stopped being mined at all. That should have been the end of the CPU miner.&lt;/p>
&lt;p>It was not, because of one deliberate design choice. Monero uses an algorithm called &lt;strong>RandomX&lt;/strong>, built specifically to be &lt;em>ASIC-resistant&lt;/em> and CPU-friendly. It works by generating random program code and forcing miners through large, unpredictable memory-access patterns — exactly the workload a general-purpose CPU with a big cache is built for, and exactly what a fixed-function ASIC circuit is bad at. Per reputable 2026 mining coverage, no dedicated Monero ASIC meaningfully beats a well-tuned CPU, and GPUs generally lose to CPUs on a hash-per-watt basis for RandomX.&lt;/p>
&lt;p>That single design decision is why CPU mining is a real, if niche, thing in 2026 — and why the chips that win are the same big-cache processors that win at gaming.&lt;/p>
&lt;h2 id="is-cpu-mining-profitable-the-actual-math">Is CPU mining profitable? The actual math&lt;/h2>
&lt;p>Here is the whole calculation. There is no magic in it, which is the point.&lt;/p>
&lt;p>&lt;strong>Daily profit = (your XMR per day × XMR price) − (watts ÷ 1000 × 24 × your $/kWh)&lt;/strong>&lt;/p>
&lt;p>Work a real example — a &lt;strong>Ryzen 9 7950X&lt;/strong>, one of the strongest home mining CPUs, tuned to about &lt;strong>27 KH/s&lt;/strong>, which earns roughly &lt;strong>0.0035 XMR/day&lt;/strong>. At an illustrative &lt;strong>$200&lt;/strong> XMR price that is about &lt;strong>$0.70/day&lt;/strong> of revenue, and the chip draws about &lt;strong>170W&lt;/strong> while doing it (≈ 4.08 kWh/day):&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Your electricity rate&lt;/th>
&lt;th scope="col">Daily power cost&lt;/th>
&lt;th scope="col">Daily &lt;em>net&lt;/em> profit&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>$0.05 / kWh&lt;/td>
&lt;td>$0.20&lt;/td>
&lt;td>&lt;strong>$0.50&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>$0.10 / kWh&lt;/td>
&lt;td>$0.41&lt;/td>
&lt;td>&lt;strong>$0.29&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>$0.15 / kWh&lt;/td>
&lt;td>$0.61&lt;/td>
&lt;td>&lt;strong>$0.09&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>$0.17 / kWh&lt;/td>
&lt;td>$0.69&lt;/td>
&lt;td>&lt;strong>$0.01&lt;/strong> (break-even)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>$0.20 / kWh&lt;/td>
&lt;td>$0.82&lt;/td>
&lt;td>&lt;strong>−$0.12 (loss)&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Two things fall out of that table. First, &lt;strong>the electricity rate is the entire game&lt;/strong> — the same machine is a modest earner or a money-loser depending only on what you pay per kilowatt-hour. The break-even here is about &lt;strong>$0.17/kWh&lt;/strong>; the U.S. residential average is near that line, which is why &amp;ldquo;it depends where you live&amp;rdquo; is the real answer.&lt;/p>
&lt;p>Second, &lt;strong>buying hardware to mine is a bad trade.&lt;/strong> At $0.29/day net, a $600 machine takes over &lt;strong>2,000 days — more than five years — to pay for itself&lt;/strong>, and that is before the XMR price or network difficulty moves against you. Mining only makes sense on a capable CPU you &lt;em>already own and would keep running anyway&lt;/em>. On this site we are big fans of &lt;a href="https://techfuelhq.com/articles/repurpose-gaming-pc-proxmox-server-2026/">turning an old gaming PC into a homelab server&lt;/a>; letting spare cycles on that box mine a little XMR is a reasonable use of hardware you already paid for. Buying a box for it is not.&lt;/p>
&lt;blockquote>
&lt;p>These numbers are &lt;strong>illustrative and move constantly.&lt;/strong> XMR price and network difficulty change daily, so plug your own CPU, wattage, and power rate into a live Monero mining calculator (CoinWarz and MoneroOcean both publish one) before you commit. Treat any single day&amp;rsquo;s figure as a snapshot, not a promise.&lt;/p>&lt;/blockquote>
&lt;h2 id="which-cpus-actually-mine-well">Which CPUs actually mine well&lt;/h2>
&lt;p>RandomX rewards three things: cores, &lt;strong>L3 cache&lt;/strong>, and memory bandwidth. That is an unusual profile — it means the chips built for high-end gaming and workstation loads are also the best miners, and that cache can matter as much as core count.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Enthusiast (≈25–31 KH/s):&lt;/strong> AMD Ryzen 9 7950X / 7950X3D / 9950X. The top of the home range.&lt;/li>
&lt;li>&lt;strong>Mid-range (≈10–15 KH/s):&lt;/strong> six-to-eight-core Ryzen and recent Intel Core chips — this is where most people&amp;rsquo;s existing desktop lands.&lt;/li>
&lt;li>&lt;strong>Budget / SBC (≈1–5 KH/s):&lt;/strong> older CPUs and Raspberry-Pi-class boards. Real, but the earnings are rounding error.&lt;/li>
&lt;/ul>
&lt;p>Because RandomX leans on cache and RAM, fast dual-channel memory genuinely helps — this is one of the few consumer workloads where your &lt;a href="https://techfuelhq.com/articles/ddr5-ram-buying-guide-2025/">DDR5 kit choice&lt;/a> shows up in the result — and AMD&amp;rsquo;s stacked-cache X3D chips punch above their core count. The same &lt;a href="https://techfuelhq.com/reviews/ryzen-7-7800x3d-review-2026/">Ryzen 7 7800X3D&lt;/a> that tops gaming charts for its cache is, for the same reason, an efficient little RandomX miner. If you want exact per-model numbers, the XMRig benchmark page and the community Monero Benchmarks site list tuned hashrates by CPU.&lt;/p>
&lt;h2 id="how-to-mine-monero-safely">How to mine Monero, safely&lt;/h2>
&lt;p>Four pieces, in order. Do them in this order and you avoid every common beginner mistake.&lt;/p>
&lt;ol>
&lt;li>&lt;strong>A Monero wallet.&lt;/strong> Get an address to be paid into first. The official GUI/CLI wallet from getmonero.org is the reference; a reputable hardware or mobile wallet also works. You only need the receiving address to start.&lt;/li>
&lt;li>&lt;strong>A pool (or P2Pool).&lt;/strong> Solo mining a single CPU will realistically never find a block, so you join a pool and earn a steady share. &lt;strong>SupportXMR&lt;/strong> and &lt;strong>MoneroOcean&lt;/strong> are the common centralized pools; &lt;strong>P2Pool&lt;/strong> is the decentralized option that keeps mining trustless and is the community&amp;rsquo;s preferred choice for network health. You point your miner at the pool and paste your wallet address.&lt;/li>
&lt;li>&lt;strong>The miner: XMRig.&lt;/strong> This is the standard RandomX miner. Download it &lt;strong>only from the official XMRig GitHub releases page&lt;/strong>, and read the safety section below before you run anything.&lt;/li>
&lt;li>&lt;strong>Tune and monitor.&lt;/strong> Enable large/huge pages and set thread count for your chip (XMRig&amp;rsquo;s docs and its &lt;code>--randomx&lt;/code> guidance cover this), then watch temperatures and the pool dashboard for your accepted shares. A CPU pinned at 100% for days runs hot — make sure cooling and your &lt;a href="https://techfuelhq.com/tools/psu-wattage-calculator/">power supply&lt;/a> are actually up to a sustained 24/7 load, which is a different thing from a gaming spike.&lt;/li>
&lt;/ol>
&lt;h2 id="the-part-that-actually-matters-dont-get-owned">The part that actually matters: don&amp;rsquo;t get owned&lt;/h2>
&lt;p>This is where CPU mining hurts people, and it has nothing to do with profit.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Mining software is a top malware category.&lt;/strong> XMRig is legitimate and open-source, but it is also &lt;em>the&lt;/em> miner attackers bundle into cracked games, &amp;ldquo;free&amp;rdquo; tools, and drive-by installs to quietly mine on other people&amp;rsquo;s machines. That reputation is earned.&lt;/li>
&lt;li>&lt;strong>Only use official sources.&lt;/strong> Download XMRig from its official GitHub releases and verify the published checksum. Never run a build from a random forum post, a YouTube description, or anything advertising &lt;strong>&amp;ldquo;double hashrate,&amp;rdquo; &amp;ldquo;AV-bypass,&amp;rdquo; or &amp;ldquo;no-fee unlocked&amp;rdquo;&lt;/strong> — those are the exact lures used to ship wallet-stealers.&lt;/li>
&lt;li>&lt;strong>Expect an antivirus flag on the &lt;em>real&lt;/em> binary.&lt;/strong> Because the genuine miner is so widely abused, Windows Defender and most AV tools flag even the legitimate XMRig as riskware or a &amp;ldquo;coin miner.&amp;rdquo; That is expected. Whitelist it &lt;em>only after&lt;/em> you have verified you downloaded the real thing yourself — do not blindly disable protection because a &amp;ldquo;guide&amp;rdquo; told you to.&lt;/li>
&lt;li>&lt;strong>Watch the thermals and the bill.&lt;/strong> Sustained all-core load is a real stress test. Confirm your cooling holds and that mining a few dimes a day is not quietly adding dollars to your power bill.&lt;/li>
&lt;/ul>
&lt;h2 id="the-honest-verdict-who-should-and-who-shouldnt">The honest verdict: who should, and who shouldn&amp;rsquo;t&lt;/h2>
&lt;p>&lt;strong>Do it if:&lt;/strong> you already own a capable CPU, your electricity is cheap (roughly $0.10/kWh or less), and you see it as slowly accumulating a bit of a genuinely private coin and supporting a network you like — not as income. Running it on a homelab box you keep on anyway, especially in winter when the heat is not wasted, is the sweet spot.&lt;/p>
&lt;p>&lt;strong>Skip it if:&lt;/strong> you would need to buy hardware, your power is expensive, or you are expecting meaningful money. The five-year payback and cents-per-day margins are real, and no amount of tuning changes the arithmetic. There is no shame in concluding the honest answer is &amp;ldquo;not worth it for me&amp;rdquo; — for a lot of people it is, and knowing that before you install anything is the win.&lt;/p>
&lt;p>Either way, mine the math first. That is the one step that never depends on the price.&lt;/p></description></item><item><title>OPNsense vs pfSense (2026): Which Firewall Should You Actually Run?</title><link>https://techfuelhq.com/networking/opnsense-vs-pfsense-2026/</link><pubDate>Wed, 01 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/networking/opnsense-vs-pfsense-2026/</guid><description>&lt;p>If you are standing up a real firewall for a home network or a homelab in 2026, the choice almost always comes down to two FreeBSD-based, open-source platforms: &lt;strong>OPNsense&lt;/strong> and &lt;strong>pfSense&lt;/strong>. They look similar on a feature checklist, they share a common ancestor, and both will happily route, filter, VPN, and inspect traffic for a small network. The interesting differences are not on the spec sheet - they are in licensing direction, interface philosophy, update cadence, and the plugin you happen to depend on.&lt;/p>
&lt;p>This is the focused two-way version of that decision. If you are trying to pick the &lt;em>hardware&lt;/em> to run either of these on - Netgate boxes, Protectli, MikroTik, or UniFi - that is a different question, and we cover it with real throughput numbers in the &lt;a href="https://techfuelhq.com/networking/homelab-firewall-router-stack-2026/">homelab firewall and router stack comparison&lt;/a>.&lt;/p>
&lt;h2 id="the-20-second-answer">The 20-second answer&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>New build, commodity hardware, want a modern UI and fast updates:&lt;/strong> &lt;strong>OPNsense.&lt;/strong> It is the better default for most people starting fresh in 2026.&lt;/li>
&lt;li>&lt;strong>You already run pfSense and it works, or you depend on pfBlockerNG / a pfSense-specific package:&lt;/strong> &lt;strong>stay on pfSense CE.&lt;/strong> It is stable and there is no urgency to move.&lt;/li>
&lt;li>&lt;strong>You want a paid, vendor-backed appliance with US support and legendary uptime:&lt;/strong> &lt;strong>pfSense Plus on Netgate hardware.&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>Both are genuinely good. Nobody picking either one is making a mistake. What follows is where they actually diverge.&lt;/p>
&lt;h2 id="common-roots-a-decade-apart">Common roots, a decade apart&lt;/h2>
&lt;p>OPNsense began as a fork of pfSense and the older m0n0wall project in &lt;strong>2014&lt;/strong>, with its first official release in &lt;strong>January 2015&lt;/strong> (&lt;a href="https://opnsense.org/opnsense/" rel="noopener">OPNsense project history&lt;/a>). That shared lineage is why the two feel familiar - the same FreeBSD packet-filtering core (&lt;code>pf&lt;/code>), the same broad feature set, similar concepts for rules, NAT, and VPN.&lt;/p>
&lt;p>But a decade of separate development has pulled them apart. OPNsense is maintained by &lt;strong>Deciso&lt;/strong>, a Netherlands-based company, and follows a calendar-versioned release train - the current 2026 series is &lt;strong>26.1 (&amp;ldquo;Witty Woodpecker&amp;rdquo;)&lt;/strong>, with two major releases a year (January and July) and non-breaking updates roughly every two weeks (&lt;a href="https://docs.opnsense.org/releases.html" rel="noopener">OPNsense releases&lt;/a>). pfSense is developed by &lt;strong>Netgate&lt;/strong> in the US and ships as two editions: &lt;strong>pfSense CE&lt;/strong> (Community Edition, free and open source, currently on the 2.8.x line built on FreeBSD 14 - &lt;a href="https://www.pfsense.org/download/" rel="noopener">pfSense download&lt;/a>) and &lt;strong>pfSense Plus&lt;/strong>, the commercial edition that runs on Netgate appliances or registered installations.&lt;/p>
&lt;h2 id="licensing-the-quiet-reason-a-lot-of-people-moved">Licensing: the quiet reason a lot of people moved&lt;/h2>
&lt;p>This is the single biggest non-technical driver of the 2026 conversation, and it is worth being clear-eyed about.&lt;/p>
&lt;p>OPNsense is fully open source under a &lt;strong>2-clause BSD license&lt;/strong>, with no paid tier gating firewall features. pfSense CE is also open source and free - but Netgate&amp;rsquo;s development attention and newest features flow to &lt;strong>pfSense Plus&lt;/strong>, the paid edition, and CE has at times lagged behind it. Community discussion since roughly 2020 has centered on unease about that CE-versus-Plus direction and Netgate&amp;rsquo;s stewardship, and that unease is a real part of why some long-time pfSense users switched. You will find this sentiment stated plainly across &lt;a href="https://www.reddit.com/r/homelab/comments/1ix85pw/pfsense_vs_opnsense/" rel="noopener">r/homelab&lt;/a> and &lt;a href="https://www.reddit.com/r/selfhosted/comments/1h1zvhq/pfsense_vs_opnsense/" rel="noopener">r/selfhosted&lt;/a> threads on the topic.&lt;/p>
&lt;p>None of that makes pfSense CE a bad firewall - it is still free, capable, and widely run. But if &amp;ldquo;will the free edition keep getting first-class attention&amp;rdquo; is a question you care about, OPNsense&amp;rsquo;s answer is simpler.&lt;/p>
&lt;h2 id="interface-and-daily-use">Interface and daily use&lt;/h2>
&lt;p>The most commonly cited difference, and the one you feel every time something breaks at 2 a.m., is the web UI.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>OPNsense&lt;/strong> uses a &lt;strong>collapsible left-side menu with a built-in search bar&lt;/strong>. Menus are grouped logically, inline help is current, and finding a setting you rarely touch is fast. It also ships &lt;strong>built-in two-factor authentication&lt;/strong> for the web UI and a &lt;strong>built-in REST API&lt;/strong>, which is a real advantage if you automate anything.&lt;/li>
&lt;li>&lt;strong>pfSense&lt;/strong> uses the &lt;strong>traditional top-drop menu&lt;/strong> layout. It is dense, it is what a lot of people learned on, and once you know where things live it is perfectly efficient - but there is no built-in search, and the learning curve is steeper for a newcomer.&lt;/li>
&lt;/ul>
&lt;p>If you are new to firewalls, OPNsense&amp;rsquo;s interface is the friendlier place to start. If you have muscle memory for pfSense&amp;rsquo;s menus, that familiarity is worth something real.&lt;/p>
&lt;h2 id="plugins-and-packages">Plugins and packages&lt;/h2>
&lt;p>pfSense&amp;rsquo;s &lt;strong>package library is larger and older&lt;/strong>, and its headline package is &lt;strong>pfBlockerNG&lt;/strong> for DNS and IP blocklisting - a genuinely excellent tool that many pfSense users consider load-bearing. Mature packages like HAProxy, ntopng, and ACME are well established.&lt;/p>
&lt;p>OPNsense takes a &lt;strong>more curated approach&lt;/strong>: a tighter, quality-controlled plugin set, with several things built in that pfSense treats as add-ons (reporting/NetFlow insight, for example). It does not have pfBlockerNG, but it covers the same ground with built-in Unbound DNS blocklists, native alias/GeoIP features, and optional plugins like Zenarmor for next-gen filtering.&lt;/p>
&lt;p>The practical read: if a specific pfSense package - especially pfBlockerNG - is central to your setup, that is a legitimate reason to stay on pfSense. If you want a clean, curated set that mostly works out of the box, OPNsense&amp;rsquo;s model is less likely to leave you running an abandoned package.&lt;/p>
&lt;h2 id="security-cadence---with-an-honest-caveat">Security cadence - with an honest caveat&lt;/h2>
&lt;p>OPNsense&amp;rsquo;s frequent, roughly biweekly release train means new features and fixes generally land faster, and the project publishes security updates on a fast cycle. That cadence is a real advantage.&lt;/p>
&lt;p>The honest caveat: a faster &lt;em>release&lt;/em> cadence is not automatically a faster &lt;em>patch-for-a-specific-CVE&lt;/em> cadence. There have been &lt;a href="https://forums.lawrencesystems.com/t/opnsense-vs-pfsense-security/19842" rel="noopener">documented community discussions&lt;/a> arguing pfSense has at times shipped certain upstream security fixes sooner, despite its slower release rhythm. Both projects take security seriously; neither is negligent. Do not pick a firewall on a blanket &amp;ldquo;one patches faster&amp;rdquo; claim - the reality is more nuanced than either camp&amp;rsquo;s marketing.&lt;/p>
&lt;h2 id="performance-effectively-a-tie-where-it-counts">Performance: effectively a tie where it counts&lt;/h2>
&lt;p>Raw throughput is a function of your CPU and NIC, not which firewall you install. Both OPNsense and pfSense now use &lt;strong>kernel-mode WireGuard&lt;/strong>, which closed the old user-space VPN ceiling.&lt;/p>
&lt;p>On our own bench, at a 1 Gbps WAN:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Firewall / hardware&lt;/th>
&lt;th scope="col">NAT throughput&lt;/th>
&lt;th scope="col">WireGuard (1 tunnel)&lt;/th>
&lt;th scope="col">Idle power&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>pfSense Plus, Netgate 4100&lt;/td>
&lt;td>~938 Mbps&lt;/td>
&lt;td>~941 Mbps&lt;/td>
&lt;td>14 W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>OPNsense, Protectli VP2420 (i3-N305)&lt;/td>
&lt;td>~941 Mbps&lt;/td>
&lt;td>~938 Mbps&lt;/td>
&lt;td>11 W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>OPNsense, N100 mini-PC&lt;/td>
&lt;td>~939 Mbps&lt;/td>
&lt;td>~692 Mbps&lt;/td>
&lt;td>7 W&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>They are, for practical purposes, tied at line rate. The one place a gap opens is &lt;strong>Suricata IDS on underpowered hardware&lt;/strong>: a single-threaded N100 starts to bottleneck with IDS enabled, while a multi-core box (i3-N305 class or better) keeps up. That is a CPU story, not an OPNsense-versus-pfSense story. Full methodology and the four-way hardware bench are in the &lt;a href="https://techfuelhq.com/networking/homelab-firewall-router-stack-2026/">homelab firewall and router stack piece&lt;/a>.&lt;/p>
&lt;h2 id="how-to-actually-decide">How to actually decide&lt;/h2>
&lt;p>Skip the feature-checklist paralysis. Answer these instead:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Do you already run pfSense and is it working?&lt;/strong> Stay. There is no prize for switching.&lt;/li>
&lt;li>&lt;strong>Do you depend on pfBlockerNG or another pfSense-specific package?&lt;/strong> Stay on pfSense.&lt;/li>
&lt;li>&lt;strong>Starting fresh, on your own commodity hardware, want the nicer UI and faster updates?&lt;/strong> OPNsense.&lt;/li>
&lt;li>&lt;strong>Want a paid appliance with vendor support and set-and-forget uptime?&lt;/strong> pfSense Plus on a Netgate box.&lt;/li>
&lt;li>&lt;strong>Uneasy about the pfSense CE/Plus licensing direction?&lt;/strong> OPNsense removes that question entirely.&lt;/li>
&lt;/ol>
&lt;p>Once you have picked, the next step is hardware and setup. For a clean, quiet, low-power box to run either one, see &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">the best mini PCs for a homelab&lt;/a>, and for a step-by-step OPNsense install on a mini PC, our &lt;a href="https://techfuelhq.com/tutorials/opnsense-mini-pc-setup-2026/">OPNsense mini-PC setup guide&lt;/a> walks the whole thing. If you are also planning VLANs behind the firewall, start with the &lt;a href="https://techfuelhq.com/tutorials/vlans-homelab-2026/">homelab VLAN guide&lt;/a>.&lt;/p>
&lt;h2 id="bottom-line">Bottom line&lt;/h2>
&lt;p>In 2026, &lt;strong>OPNsense is the better default for a new homelab firewall&lt;/strong> - modern UI, fast updates, commodity-hardware friendly, and free of the licensing question hanging over pfSense CE. &lt;strong>pfSense remains an excellent choice&lt;/strong> if you already run it, value its maturity and stability, or depend on a pfSense-specific package. Both are FreeBSD-grade, both will serve a home network for years, and the &amp;ldquo;wrong&amp;rdquo; choice here is still a very good firewall.&lt;/p></description></item><item><title>Podman vs Docker (2026): Which Container Engine Should You Actually Run?</title><link>https://techfuelhq.com/articles/podman-vs-docker-2026/</link><pubDate>Wed, 01 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/podman-vs-docker-2026/</guid><description>&lt;p>If you are running containers on a home server or a developer laptop in 2026, the choice has quietly narrowed to two engines: &lt;strong>Docker&lt;/strong>, the incumbent that made containers mainstream, and &lt;strong>Podman&lt;/strong>, Red Hat&amp;rsquo;s daemonless, rootless-by-default challenger. They run the same images, read the same Dockerfiles, and share almost the same command line - so on a feature checklist they look nearly identical. The differences that matter are architectural: whether there is a background daemon, whether containers run as root, and how much ecosystem friction you are willing to trade for a smaller attack surface.&lt;/p>
&lt;p>This is the focused two-way version of that decision. If you are just trying to get containers running for the first time, our &lt;a href="https://techfuelhq.com/tutorials/install-docker-ubuntu-2026/">install Docker on Ubuntu guide&lt;/a> and &lt;a href="https://techfuelhq.com/tutorials/docker-compose-starter-stack-homelab-2026/">Docker Compose starter stack&lt;/a> get you moving fast - everything below applies whichever engine you land on. And if you are also weighing the host layer itself, &lt;a href="https://techfuelhq.com/articles/proxmox-vs-docker-2026/">Proxmox vs Docker&lt;/a> explains why that is a layering question, not a rivalry.&lt;/p>
&lt;h2 id="the-20-second-answer">The 20-second answer&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>New to containers, want the smoothest on-ramp and the biggest pile of tutorials:&lt;/strong> &lt;strong>Docker.&lt;/strong> It is still the better place to learn.&lt;/li>
&lt;li>&lt;strong>Security-conscious, run on Linux, or manage containers as systemd services:&lt;/strong> &lt;strong>Podman.&lt;/strong> Rootless-by-default and Quadlet make it the cleaner production-style choice.&lt;/li>
&lt;li>&lt;strong>You are a larger company worried about Docker Desktop licensing:&lt;/strong> &lt;strong>Podman&lt;/strong> removes that question entirely - it is fully open source with no company-size restriction.&lt;/li>
&lt;li>&lt;strong>You just want your existing images and Compose files to work:&lt;/strong> either one. They share the OCI image format and Podman speaks the Docker API.&lt;/li>
&lt;/ul>
&lt;p>Both are excellent. Nobody picking either is making a mistake. Here is where they actually diverge.&lt;/p>
&lt;h2 id="the-daemon-the-one-architectural-difference-everything-traces-back-to">The daemon: the one architectural difference everything traces back to&lt;/h2>
&lt;p>Docker uses a &lt;strong>client-server model&lt;/strong>. The &lt;code>docker&lt;/code> command you type is a thin client that talks to &lt;strong>&lt;code>dockerd&lt;/code>&lt;/strong>, a background daemon that, by default, runs as &lt;strong>root&lt;/strong> and owns every container on the host. That daemon is convenient - it manages lifecycle, networking, and the API in one place - but it is also a single, always-running, privileged process. If a container escapes its boundary, the daemon it targets is running as root (&lt;a href="https://docs.docker.com/engine/security/rootless/" rel="noopener">Docker rootless docs&lt;/a>).&lt;/p>
&lt;p>Podman is &lt;strong>daemonless&lt;/strong>. There is no background service; &lt;code>podman run&lt;/code> forks the container directly as a child of your shell, and when the container exits, nothing lingers. Combined with &lt;strong>rootless-by-default&lt;/strong> operation, a container escape lands in your unprivileged user account, not root (&lt;a href="https://docs.podman.io/en/latest/" rel="noopener">Podman documentation&lt;/a>). Docker &lt;em>can&lt;/em> run rootless too - it has been an opt-in mode since Docker 19.03 - but it is not the default and takes deliberate setup. Podman&amp;rsquo;s default is the safer posture.&lt;/p>
&lt;p>That is the whole story in one paragraph. Nearly every other Podman-vs-Docker talking point - security, systemd integration, resource usage at idle - flows from &amp;ldquo;there is no root daemon.&amp;rdquo;&lt;/p>
&lt;h2 id="compatibility-podman-speaks-docker">Compatibility: Podman speaks Docker&lt;/h2>
&lt;p>The reason a switch is even feasible is that Podman went out of its way to be Docker-compatible:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Same images.&lt;/strong> Both use the &lt;strong>OCI image format&lt;/strong>, so any image from Docker Hub, GHCR, or your own registry runs unchanged under either engine.&lt;/li>
&lt;li>&lt;strong>Same CLI.&lt;/strong> Podman&amp;rsquo;s commands mirror Docker&amp;rsquo;s closely enough that many people literally run &lt;code>alias docker=podman&lt;/code> and never think about it again.&lt;/li>
&lt;li>&lt;strong>Same Dockerfiles.&lt;/strong> &lt;code>podman build&lt;/code> reads your existing Dockerfile and produces an identical image.&lt;/li>
&lt;li>&lt;strong>Docker API socket.&lt;/strong> Podman exposes a &lt;strong>Docker-compatible REST socket&lt;/strong>, so tools that expect the Docker API - including the official &lt;strong>Docker Compose v2&lt;/strong> CLI - can point at Podman instead (&lt;a href="https://podman-desktop.io/docs/migrating-from-docker/managing-docker-compatibility" rel="noopener">Podman Desktop: managing Docker compatibility&lt;/a>).&lt;/li>
&lt;/ul>
&lt;p>Where compatibility frays: some Compose files that lean on Docker-specific extensions need small edits, &lt;code>podman-compose&lt;/code> (the native tool) occasionally lags the official Compose spec, and any tooling hard-wired to assume a running Docker daemon needs the compatibility socket enabled. For a typical homelab Compose stack, migration is usually &amp;ldquo;enable the socket, re-run &lt;code>docker compose up&lt;/code>, fix one or two warnings.&amp;rdquo;&lt;/p>
&lt;h2 id="pods-kubernetes-and-systemd-where-podman-pulls-ahead">Pods, Kubernetes, and systemd: where Podman pulls ahead&lt;/h2>
&lt;p>Podman was built with Kubernetes in mind, and it shows in two features Docker has no direct answer for:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Pods.&lt;/strong> Podman can group containers into a &lt;strong>pod&lt;/strong> - the same shared-namespace concept Kubernetes uses - and &lt;code>podman kube generate&lt;/code> will emit &lt;strong>Kubernetes-compatible YAML&lt;/strong> from your running containers or pods, easing the jump from a single host to a cluster (&lt;a href="https://developers.redhat.com/blog/2019/01/29/podman-kubernetes-yaml" rel="noopener">Red Hat: Podman and Kubernetes YAML&lt;/a>).&lt;/li>
&lt;li>&lt;strong>Quadlet + systemd.&lt;/strong> On a Linux host, Podman&amp;rsquo;s &lt;strong>Quadlet&lt;/strong> lets you declare a container as a native systemd unit, so it starts on boot, restarts on failure, and shows up in &lt;code>systemctl&lt;/code> like any other service. This is now the recommended approach - the older &lt;code>podman generate systemd&lt;/code> is deprecated (&lt;a href="https://www.redhat.com/en/blog/quadlet-podman" rel="noopener">Red Hat: Quadlet&lt;/a>). For running self-hosted apps as first-class services, this is genuinely nicer than Docker&amp;rsquo;s restart policies.&lt;/li>
&lt;/ul>
&lt;p>Docker&amp;rsquo;s counterweight is &lt;strong>Docker Swarm&lt;/strong> and, more importantly, the enormous ecosystem of tooling, tutorials, and Compose files that assume Docker. If your endgame is Kubernetes, Podman&amp;rsquo;s pod model is a smoother stepping stone; if your endgame is &amp;ldquo;a Compose file that a thousand blog posts already documented,&amp;rdquo; Docker is the path of least resistance.&lt;/p>
&lt;h2 id="licensing-the-business-reason-not-the-technical-one">Licensing: the business reason, not the technical one&lt;/h2>
&lt;p>This is the single biggest &lt;em>non-technical&lt;/em> driver of the 2026 conversation, so it is worth stating precisely.&lt;/p>
&lt;p>&lt;strong>Podman is fully open source (Apache 2.0), with no company-size restriction.&lt;/strong> Free, forever, for anyone.&lt;/p>
&lt;p>&lt;strong>Docker Desktop is free&lt;/strong> for personal use, education, non-commercial open source, and small businesses - defined as &lt;strong>fewer than 250 employees AND less than $10 million in annual revenue&lt;/strong>. Above that threshold, Docker Desktop requires a paid subscription: roughly &lt;strong>Pro $9, Team $15, and Business $24 per user per month&lt;/strong> (billed annually) as of 2026 (&lt;a href="https://docs.docker.com/subscription/desktop-license/" rel="noopener">Docker Desktop license&lt;/a>, &lt;a href="https://www.docker.com/pricing/" rel="noopener">Docker pricing&lt;/a>). Note this applies to &lt;strong>Docker Desktop&lt;/strong>, the GUI/VM bundle - Docker Engine (the CLI on Linux) remains free.&lt;/p>
&lt;p>For a solo homelabber, the licensing point rarely bites - you are under the threshold and often on Linux without Docker Desktop anyway. But for a larger organization it is a real line item, and it is a big part of why some teams evaluated Podman in the first place.&lt;/p>
&lt;h2 id="performance-close-enough-that-it-is-rarely-the-deciding-factor">Performance: close enough that it is rarely the deciding factor&lt;/h2>
&lt;p>Independent benchmarks vary and depend heavily on workload and configuration, so be skeptical of any blanket &amp;ldquo;X is faster&amp;rdquo; claim. The consistent themes across published 2025-2026 comparisons:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Idle/memory:&lt;/strong> Podman tends to use &lt;strong>less memory at rest&lt;/strong>, because there is no always-running daemon - some tests put the difference around 15-20% (&lt;a href="https://www.xurrent.com/blog/podman-vs-docker-complete-2025-comparison-guide-for-devops-teams" rel="noopener">Xurrent comparison&lt;/a>).&lt;/li>
&lt;li>&lt;strong>Per-operation speed:&lt;/strong> Docker is often &lt;strong>slightly faster for individual operations&lt;/strong> like container startup and image pulls - some tests cite 10-15% (&lt;a href="https://uptrace.dev/comparisons/podman-vs-docker" rel="noopener">Uptrace comparison&lt;/a>).&lt;/li>
&lt;/ul>
&lt;p>At homelab scale - a handful of containers on a mini PC - &lt;strong>you will not feel either difference.&lt;/strong> Performance is dominated by your CPU, disk, and the apps themselves, not the container engine. If you are sizing a box, our &lt;a href="https://techfuelhq.com/tools/docker-ram-planner/">Docker RAM planner&lt;/a> estimates memory for a stack regardless of which engine runs it. Treat performance as a tie and decide on architecture and ecosystem instead.&lt;/p>
&lt;h2 id="the-honest-disadvantages-of-podman">The honest disadvantages of Podman&lt;/h2>
&lt;p>To keep this from reading like a Podman ad, the real friction, straight from practitioners on &lt;a href="https://www.reddit.com/r/podman/comments/1orzhvd/what_are_the_biggest_differences_between_docker/" rel="noopener">r/podman&lt;/a> and &lt;a href="https://www.reddit.com/r/selfhosted/comments/1itxtp5/how_many_of_you_use_podman_instead_of_docker/" rel="noopener">r/selfhosted&lt;/a>:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Documentation and community answers are thinner.&lt;/strong> When something breaks at 1 a.m., there are far more Docker Stack Overflow threads to search. This is the most common complaint.&lt;/li>
&lt;li>&lt;strong>Rootless has edge cases.&lt;/strong> Privileged ports (below 1024), some container-to-container networking, and a few volume-permission scenarios need extra steps that rootful Docker handles transparently.&lt;/li>
&lt;li>&lt;strong>Some tooling assumes Docker.&lt;/strong> Anything that talks directly to the Docker daemon needs the compatibility socket, and a minority of tools simply do not support Podman yet.&lt;/li>
&lt;/ol>
&lt;p>None are dealbreakers, but together they are exactly why &lt;strong>Docker is still the easier first container engine to learn&lt;/strong> - and why &amp;ldquo;just use Docker&amp;rdquo; remains reasonable advice for a beginner.&lt;/p>
&lt;h2 id="how-to-actually-decide">How to actually decide&lt;/h2>
&lt;p>Skip the feature-checklist paralysis and answer these:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Are you brand new to containers?&lt;/strong> Start with &lt;strong>Docker.&lt;/strong> Learn the concepts where the tutorials are thickest, then re-evaluate.&lt;/li>
&lt;li>&lt;strong>Do you care about rootless-by-default security, or run containers as systemd services on Linux?&lt;/strong> &lt;strong>Podman.&lt;/strong> Quadlet alone is worth it for a service-style homelab.&lt;/li>
&lt;li>&lt;strong>Are you a company over 250 employees / $10M revenue using Docker Desktop?&lt;/strong> &lt;strong>Podman&lt;/strong> removes the licensing question.&lt;/li>
&lt;li>&lt;strong>Is your endgame Kubernetes?&lt;/strong> &lt;strong>Podman&amp;rsquo;s&lt;/strong> pods and &lt;code>kube generate&lt;/code> are a smoother on-ramp.&lt;/li>
&lt;li>&lt;strong>Do you just need your existing images and Compose files to keep working?&lt;/strong> Either - they share the OCI format, and Podman speaks the Docker API.&lt;/li>
&lt;/ol>
&lt;h2 id="bottom-line">Bottom line&lt;/h2>
&lt;p>In 2026, &lt;strong>Docker remains the best place to start and the safest default for compatibility&lt;/strong> - the largest ecosystem, the smoothest onboarding, and the tooling everything assumes. &lt;strong>Podman is the better choice when architecture matters&lt;/strong>: daemonless, rootless by default, excellent systemd integration, a clean path toward Kubernetes, and no licensing asterisk. They run the same images and share almost the same command line, so this is a low-stakes decision - and plenty of people run both. Pick Docker to learn and to match the world&amp;rsquo;s tutorials; reach for Podman when you want a smaller attack surface and a more Linux-native way to run your containers as real services. Once you have picked, the &lt;a href="https://techfuelhq.com/articles/self-hosting-essentials/">self-hosting essentials guide&lt;/a> covers what to actually run on top.&lt;/p></description></item><item><title>Tailscale vs WireGuard (2026): Which One Should You Actually Run?</title><link>https://techfuelhq.com/networking/tailscale-vs-wireguard-2026/</link><pubDate>Wed, 01 Jul 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/networking/tailscale-vs-wireguard-2026/</guid><description>&lt;p>If you want to reach your homelab from anywhere in 2026, the two names you keep hearing are &lt;strong>Tailscale&lt;/strong> and &lt;strong>WireGuard&lt;/strong> - and the way they are usually pitched (&amp;ldquo;which VPN is better?&amp;rdquo;) frames the choice wrong. They are not really rivals. Tailscale is &lt;em>built on&lt;/em> WireGuard. The honest question is not which protocol wins; it is whether you want raw WireGuard or WireGuard wrapped in a coordination layer that handles the tedious parts.&lt;/p>
&lt;p>This is the focused two-way version of that decision, aimed at homelabbers. If you want the step-by-step builds instead, we have full guides for both: &lt;a href="https://techfuelhq.com/tutorials/tailscale-remote-access-homelab-2026/">Tailscale remote access for the homelab&lt;/a> and a &lt;a href="https://techfuelhq.com/tutorials/wireguard-self-hosted-vpn-proxmox-2026/">self-hosted WireGuard VPN on Proxmox&lt;/a>. Still deciding between the two bare protocols before adding a coordination layer? Start with &lt;a href="https://techfuelhq.com/networking/wireguard-vs-openvpn-homelab-2026/">WireGuard vs OpenVPN for the homelab&lt;/a>.&lt;/p>
&lt;h2 id="the-20-second-answer">The 20-second answer&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Behind CGNAT, or you just want it to work in 15 minutes across many roaming devices:&lt;/strong> &lt;strong>Tailscale.&lt;/strong> It traverses NAT with no port forwarding and manages keys for you. This is the right default for most people in 2026.&lt;/li>
&lt;li>&lt;strong>You can port-forward (or have a static-ish IP/DDNS), run a couple of devices, and want zero third-party dependency:&lt;/strong> &lt;strong>self-hosted WireGuard.&lt;/strong> It is minimal, in-kernel, fast, and answers to nobody but you.&lt;/li>
&lt;li>&lt;strong>You want Tailscale&amp;rsquo;s convenience &lt;em>without&lt;/em> the SaaS:&lt;/strong> run &lt;strong>Headscale&lt;/strong> (self-hosted Tailscale control plane) or plain WireGuard.&lt;/li>
&lt;/ul>
&lt;p>Neither choice is a mistake. What follows is where they actually diverge.&lt;/p>
&lt;h2 id="they-are-not-actually-competitors">They are not actually competitors&lt;/h2>
&lt;p>WireGuard is a &lt;strong>VPN protocol&lt;/strong> - a small, fast, modern tunnel that landed in the mainline Linux kernel in version &lt;strong>5.6 (2020)&lt;/strong> and is now the standard for point-to-point encrypted links. It does exactly one thing: move encrypted packets between peers that already know each other&amp;rsquo;s public keys and network addresses. It does &lt;strong>not&lt;/strong> distribute keys, discover peers, punch through NAT, or provide names. Those are your job.&lt;/p>
&lt;p>&lt;strong>Tailscale&lt;/strong> is a &lt;strong>coordination layer that uses WireGuard underneath.&lt;/strong> It keeps the fast WireGuard data plane and adds everything WireGuard deliberately leaves out:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Automatic key distribution&lt;/strong> - devices exchange public keys through Tailscale&amp;rsquo;s control server, so you never hand-copy a key again.&lt;/li>
&lt;li>&lt;strong>NAT traversal&lt;/strong> - it establishes direct peer-to-peer links through firewalls and NAT, and falls back to an encrypted relay when a direct path is impossible.&lt;/li>
&lt;li>&lt;strong>Stable addressing + MagicDNS&lt;/strong> - every device gets a fixed &lt;code>100.x.x.x&lt;/code> address and a friendly name (&lt;code>nas.your-tailnet.ts.net&lt;/code>) that works the same on home Wi-Fi or LTE.&lt;/li>
&lt;li>&lt;strong>Access control&lt;/strong> - a policy file decides which devices can reach which, instead of hand-written &lt;code>iptables&lt;/code>.&lt;/li>
&lt;/ul>
&lt;p>So &amp;ldquo;Tailscale vs WireGuard&amp;rdquo; really means: &lt;strong>do you want to run the coordination yourself, or let a managed service do it?&lt;/strong>&lt;/p>
&lt;h2 id="the-one-question-that-usually-decides-it-can-you-port-forward">The one question that usually decides it: can you port-forward?&lt;/h2>
&lt;p>This is the single most important factor, and it is the reason the &lt;a href="https://www.reddit.com/r/homelab/" rel="noopener">r/homelab&lt;/a> threads on this topic keep landing on Tailscale.&lt;/p>
&lt;p>A self-hosted WireGuard server has to be &lt;strong>reachable from the internet&lt;/strong>. That means an inbound UDP port forwarded on your router to a public-facing IP (a static IP, or a dynamic-DNS hostname that tracks your changing residential IP). If you can do that, WireGuard is wonderful.&lt;/p>
&lt;p>If you &lt;strong>cannot&lt;/strong> - and increasingly you cannot - Tailscale wins by default. &lt;strong>Carrier-grade NAT (CGNAT)&lt;/strong> is now common on Starlink, 5G home internet, and plenty of fiber and apartment ISPs. Behind CGNAT you share a public IP with other customers and &lt;strong>there is no port to forward.&lt;/strong> Self-hosted WireGuard simply cannot accept inbound connections in that situation without renting a VPS with a public IP to act as a relay - at which point you have rebuilt a piece of Tailscale by hand.&lt;/p>
&lt;p>Tailscale is engineered precisely for this world: it brokers a direct connection through the NAT when it can (the majority of the time), and relays encrypted traffic through its DERP servers when it cannot. You open &lt;strong>zero ports&lt;/strong>. For anyone on CGNAT, that is close to a decision-ender.&lt;/p>
&lt;h2 id="setup-and-day-to-day">Setup and day-to-day&lt;/h2>
&lt;p>&lt;strong>Tailscale&lt;/strong> is genuinely a 15-minute experience: install the client, log in with an existing identity provider, and the device joins your tailnet. Adding the tenth device is as easy as the first. MagicDNS means you stop memorizing IPs. Subnet routing (to reach non-Tailscale LAN devices) and exit nodes (to route all traffic through one node) are a checkbox and a command.&lt;/p>
&lt;p>&lt;strong>WireGuard&lt;/strong> takes longer up front and scales by hand. You generate a key pair per peer, write each peer into the server config and the server into each client config, and manage the address plan yourself. For two or three devices this is a pleasant afternoon. For twenty roaming devices with rotating keys it becomes real operational work, which is exactly the gap tools like Tailscale, &lt;a href="https://github.com/juanfont/headscale" rel="noopener">Headscale&lt;/a>, &lt;a href="https://techfuelhq.com/networking/netbird-vs-tailscale-2026/">NetBird&lt;/a>, and &lt;a href="https://techfuelhq.com/networking/zerotier-vs-tailscale-2026/">ZeroTier&lt;/a> exist to fill.&lt;/p>
&lt;p>One honest Tailscale-side wrinkle from the community: the mobile client can be a &lt;strong>battery draw&lt;/strong>, and on Linux the daemon occasionally tangles with the local networking stack. These are minor and usually fixable, but they are real, and pure WireGuard - being a thin kernel module - has none of that surface.&lt;/p>
&lt;h2 id="performance-effectively-a-tie-where-it-matters">Performance: effectively a tie where it matters&lt;/h2>
&lt;p>When Tailscale establishes a &lt;strong>direct&lt;/strong> peer-to-peer connection - which it does the large majority of the time - you are running WireGuard, so throughput and latency are essentially the same as raw WireGuard.&lt;/p>
&lt;p>Two honest caveats:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Kernel vs userspace.&lt;/strong> Raw WireGuard on Linux runs as a kernel module and is extremely efficient (multi-gigabit with low CPU). Tailscale ships a userspace WireGuard engine, which is modestly slower in raw throughput on very fast links. At the WAN speeds almost every homelab actually runs (well under 1 Gbps to the internet), you will not notice.&lt;/li>
&lt;li>&lt;strong>Relay fallback.&lt;/strong> If Tailscale cannot punch a direct path and falls back to a DERP relay, expect added latency and reduced throughput on that link until a direct route is found. Raw WireGuard, being direct by definition, never has this failure mode - but it also cannot connect at all in the scenarios where Tailscale is relaying.&lt;/li>
&lt;/ol>
&lt;p>Bottom line: for SSH, web UIs, file transfers, and media streaming - the actual homelab workload - &lt;strong>performance is not the deciding factor.&lt;/strong>&lt;/p>
&lt;h2 id="control-privacy-and-independence">Control, privacy, and independence&lt;/h2>
&lt;p>This is where self-hosted WireGuard pulls ahead for a specific kind of user.&lt;/p>
&lt;p>With WireGuard, &lt;strong>no third party exists.&lt;/strong> Your keys never leave your machines; there is no account, no coordination server, no company that could go down, change pricing, or get breached. That independence is the entire point for many homelabbers - the recurring &amp;ldquo;I want to be completely independent&amp;rdquo; motivation you see stated plainly in &lt;a href="https://www.reddit.com/r/homelab/" rel="noopener">r/homelab&lt;/a>.&lt;/p>
&lt;p>With Tailscale, your traffic is still end-to-end encrypted and flows peer-to-peer (Tailscale cannot read it), but a &lt;strong>proprietary coordination server&lt;/strong> brokers your keys and holds device metadata and your access policy. You are trusting that control plane and your account security. If Tailscale&amp;rsquo;s coordination service is unavailable, existing connections generally keep working but establishing new ones can be affected.&lt;/p>
&lt;p>The middle path is &lt;strong>Headscale&lt;/strong>: an open-source, self-hostable reimplementation of Tailscale&amp;rsquo;s control server. You keep the excellent Tailscale clients and the mesh/MagicDNS experience while running the brain yourself - no external dependency, at the cost of operating that server. For identity-aware access on top of any of these, a self-hosted SSO layer like &lt;a href="https://techfuelhq.com/tutorials/authentik-sso-self-hosted-2026/">Authentik&lt;/a> is a common companion.&lt;/p>
&lt;h2 id="side-by-side">Side-by-side&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">&lt;/th>
&lt;th scope="col">WireGuard (self-hosted)&lt;/th>
&lt;th scope="col">Tailscale&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>What it is&lt;/td>
&lt;td>VPN protocol (kernel module)&lt;/td>
&lt;td>Coordination layer over WireGuard&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Setup time&lt;/td>
&lt;td>30-60 min&lt;/td>
&lt;td>~15 min&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Works behind CGNAT / no port-forward&lt;/td>
&lt;td>No (needs a VPS relay)&lt;/td>
&lt;td>Yes, automatic&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Key management&lt;/td>
&lt;td>Manual, per peer&lt;/td>
&lt;td>Automatic&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Naming&lt;/td>
&lt;td>Manual / your own DNS&lt;/td>
&lt;td>MagicDNS built in&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Access control&lt;/td>
&lt;td>Hand-written iptables&lt;/td>
&lt;td>Policy file&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Third-party dependency&lt;/td>
&lt;td>None&lt;/td>
&lt;td>Tailscale control plane (or self-host Headscale)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Peak throughput on fast links&lt;/td>
&lt;td>Highest (kernel)&lt;/td>
&lt;td>Very high; slightly lower (userspace)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Users on free tier&lt;/td>
&lt;td>N/A (no accounts)&lt;/td>
&lt;td>6 users, generous device allowance&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Best for&lt;/td>
&lt;td>Independence, simple static setups&lt;/td>
&lt;td>CGNAT, many roaming devices, speed of setup&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;h2 id="so-which-should-you-run">So which should you run?&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Pick Tailscale&lt;/strong> if you are behind CGNAT, you have a lot of roaming devices, you value time-to-working over ideology, or you are new to VPNs. For most homelabbers in 2026, this is the correct default.&lt;/li>
&lt;li>&lt;strong>Pick self-hosted WireGuard&lt;/strong> if you can accept an inbound connection (port forward or static-ish IP/DDNS), you run a small, mostly-static set of devices, and you want zero external dependency - your keys, your server, nobody else in the loop.&lt;/li>
&lt;li>&lt;strong>Run both.&lt;/strong> A very common homelab pattern is self-hosted WireGuard on the router for a fast, dependency-free link from your main devices, plus Tailscale on a NAS or Pi as a subnet router for zero-config access from anywhere. Convenience when you want it, independence when you need it - there is no rule that says you must choose only one.&lt;/li>
&lt;/ul>
&lt;p>Whichever you land on, the underlying encryption is the same WireGuard either way. You are really choosing &lt;strong>who runs the coordination&lt;/strong> - a service, or you.&lt;/p></description></item><item><title>Data Usage Calculator: Estimate Your Monthly Internet GB</title><link>https://techfuelhq.com/tools/data-usage-calculator/</link><pubDate>Tue, 30 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tools/data-usage-calculator/</guid><description>&lt;p>This tool estimates your &lt;strong>monthly internet data usage in gigabytes&lt;/strong> from how you actually use the connection - streaming, YouTube, music, video calls, gaming, general browsing, and downloads - then tells you whether you&amp;rsquo;re likely to bump into a data cap. Enter your typical hours per day for each activity and your monthly download volume, set how many people share the connection, and you get a monthly GB total, a daily average, and how that compares to the common &lt;strong>1.2 TB&lt;/strong> US cap.&lt;/p>
&lt;p>The honest framing: &lt;strong>streaming dominates, and resolution is the dial that matters most.&lt;/strong> SD video is about 1 GB/hour, HD about 3, and 4K about 7 - so the difference between a 1080p and a 4K habit can be hundreds of gigabytes a month per person (&lt;a href="https://help.netflix.com/en/node/87" rel="noopener">Netflix&amp;rsquo;s published data-usage figures&lt;/a>). Gameplay itself is light (~0.1 GB/hour); it&amp;rsquo;s the 50-150 GB game &lt;em>downloads&lt;/em> that move the needle, which is why downloads are a separate line. Every rate here is a provider-published approximation - your real usage varies with app settings, codecs, and content - so treat the result as a well-grounded estimate, not a billing meter.&lt;/p>
&lt;p>To turn a download size into a time estimate at your connection speed, use the &lt;a href="https://techfuelhq.com/tools/transfer-time-calculator/">Transfer Time Calculator&lt;/a>; if you&amp;rsquo;re sizing a home network to carry all this, see the &lt;a href="https://techfuelhq.com/networking/10gbe-home-networking-budget-2026/">10GbE home networking guide&lt;/a>.&lt;/p></description></item><item><title>Disclosure</title><link>https://techfuelhq.com/disclosure/</link><pubDate>Tue, 30 Jun 2026 00:00:00 -0500</pubDate><guid>https://techfuelhq.com/disclosure/</guid><description>&lt;h2 id="retailer-links-and-sourcing">Retailer links and sourcing&lt;/h2>
&lt;p>The retailer links in articles (Newegg, B&amp;amp;H, and others) are plain reference links to help a reader find a part. TechFuel HQ earns no commission on them — they are editorial references, nothing more. No retailer relationship influences which products get recommended. If a product is not worth recommending, it does not get recommended.&lt;/p>
&lt;h2 id="affiliate-links-amazon-associates">Affiliate links (Amazon Associates)&lt;/h2>
&lt;p>TechFuel HQ participates in the Amazon Associates Program and may earn a commission from qualifying purchases at no extra cost to the reader. &lt;strong>As an Amazon Associate, TechFuel HQ earns from qualifying purchases.&lt;/strong> Some Amazon links in articles are affiliate links; links to other retailers (Newegg, B&amp;amp;H, eBay, manufacturer stores, and others) are plain reference links that earn nothing. Every article that contains an affiliate link carries a clear disclosure line near the top, so you always know when a link can earn a commission before you click it. A commission never changes which product gets recommended — if a product is not worth recommending, it does not get recommended, affiliate link or not.&lt;/p>
&lt;h2 id="advertising">Advertising&lt;/h2>
&lt;p>TechFuel HQ is funded by display advertising. &lt;strong>Google AdSense&lt;/strong> (when enabled) serves ads on the site; Google and its advertising partners use cookies to serve ads based on a visitor&amp;rsquo;s prior visits to this site and other sites. Third-party vendors, including Google, use the DoubleClick DART cookie to serve ads based on those visits. You can opt out of personalized advertising at &lt;a href="https://www.google.com/settings/ads" rel="noopener">Google&amp;rsquo;s Ads Settings&lt;/a>, and review Google&amp;rsquo;s &lt;a href="https://policies.google.com/technologies/ads" rel="noopener">advertising and DART cookie policy&lt;/a>. When advertising is active, visitors in supported regions (the EEA, UK, and Switzerland) are shown a cookie consent banner for managing advertising and personalization cookies. Full detail is in the &lt;a href="https://techfuelhq.com/privacy/">Privacy Policy&lt;/a>.&lt;/p>
&lt;h2 id="source-standards">Source standards&lt;/h2>
&lt;ul>
&lt;li>Vendor specs are cited with links to the vendor&amp;rsquo;s official documentation page&lt;/li>
&lt;li>Benchmarks are cited with links to the original test source (publication, repository, or vendor)&lt;/li>
&lt;li>News and licensing changes are cited with links to the originating announcement&lt;/li>
&lt;/ul>
&lt;p>If a claim cannot be cited to a real, resolvable source, it is omitted.&lt;/p>
&lt;h2 id="real-artifact-policy">Real-artifact policy&lt;/h2>
&lt;p>Where a 2024–2025 article references a physical measurement, photo, or receipt — a Kill A Watt reading, an iperf3 result, or a parts receipt — that artifact was captured on the author&amp;rsquo;s own gear during the 2024–2025 testing period. Most of that gear was sold or retired in early 2026 (see &lt;a href="https://techfuelhq.com/colophon/">Colophon&lt;/a>).&lt;/p>
&lt;p>Articles published from June 2026 onward source benchmarks from named third-party publications, cited inline at each claim, with one exception: hands-on observations and original first-party measurements from the gear the author still owns and uses daily. That current rig is a Ryzen 7 7800X3D / ASUS ROG STRIX B650-A / 64GB DDR5-6000 / ASUS ROG Astral RTX 5080 OC / NZXT Kraken 360 / EVGA SuperNOVA 1000 GT / Samsung 970 EVO Plus / Gigabyte AORUS FO48U — the published &lt;a href="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/">ASUS ROG Astral RTX 5080 OC bench dataset&lt;/a> (captured 2026-06-08–2026-06-09) is the most data-heavy example. Where a hardware claim cannot be backed by either a real third-party citation or first-hand use of gear the author owns, it is omitted; figures that are vendor-spec or third-party are labeled as such, separately from anything measured first-hand.&lt;/p>
&lt;h2 id="updates">Updates&lt;/h2>
&lt;p>Articles are revised when the underlying facts change (a new release, a price shift, a vendor policy change). The &amp;ldquo;Last updated&amp;rdquo; date in the article reflects the most recent revision.&lt;/p>
&lt;h2 id="errors-and-corrections">Errors and corrections&lt;/h2>
&lt;p>Spotted an error or want to challenge a recommendation? Email &lt;strong>&lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a>&lt;/strong> with the article URL and the specific section. Material corrections are made in-place with an updated &amp;ldquo;Last updated&amp;rdquo; date.&lt;/p>
&lt;h2 id="contact">Contact&lt;/h2>
&lt;p>&lt;strong>Publisher:&lt;/strong> &lt;a href="https://techfuelhq.com/about/">Lowell K. Wood IV&lt;/a>
&lt;strong>Email:&lt;/strong> &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a>
&lt;strong>Location:&lt;/strong> St. Louis County, Missouri, United States&lt;/p></description></item><item><title>How to Install Docker on Ubuntu (2026): Step-by-Step</title><link>https://techfuelhq.com/tutorials/install-docker-ubuntu-2026/</link><pubDate>Tue, 30 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tutorials/install-docker-ubuntu-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-06-30 · ~8 min read · St. Louis County, MO&lt;/p>
&lt;p>Docker is the foundation of almost every self-hosted stack — Jellyfin, Nextcloud, Home Assistant, Pi-hole, the lot. (Weighing it against the daemonless, rootless alternative first? See our &lt;a href="https://techfuelhq.com/articles/podman-vs-docker-2026/">Podman vs Docker comparison&lt;/a>.) This guide installs &lt;strong>Docker Engine on Ubuntu the official way&lt;/strong>: from Docker&amp;rsquo;s own apt repository, so you get the current release, the Buildx plugin, and Compose v2 together, with updates straight from Docker. It works on Ubuntu 24.04 LTS, 22.04 LTS, and current interim releases, and the repository line auto-detects your version so you never edit it by hand.&lt;/p>
&lt;p>Skip Ubuntu&amp;rsquo;s built-in &lt;code>docker.io&lt;/code> package and the Snap version — both lag upstream and ship without the bundled Compose v2 plugin, which is the usual reason &lt;code>docker compose&lt;/code> &amp;ldquo;is not a docker command.&amp;rdquo; The steps below come straight from &lt;a href="https://docs.docker.com/engine/install/ubuntu/" rel="noopener">Docker&amp;rsquo;s official Ubuntu install documentation&lt;/a>; I have reproduced the current commands verbatim and added the post-install and error-fixing steps that the quick-start glosses over.&lt;/p>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;ul>
&lt;li>A 64-bit Ubuntu 24.04, 22.04, or current release (desktop or server)&lt;/li>
&lt;li>A user with &lt;code>sudo&lt;/code> privileges&lt;/li>
&lt;li>Internet access to reach &lt;code>download.docker.com&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="step-1-remove-conflicting-packages">Step 1: Remove conflicting packages&lt;/h2>
&lt;p>Older or distro-packaged Docker bits collide with the official packages. Clear them first:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>sudo apt remove &lt;span style="color:#66d9ef">$(&lt;/span>dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc | cut -f1&lt;span style="color:#66d9ef">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>It is fine if apt reports some of these were not installed. Your images and volumes in &lt;code>/var/lib/docker&lt;/code> are left untouched.&lt;/p>
&lt;h2 id="step-2-add-dockers-official-apt-repository">Step 2: Add Docker&amp;rsquo;s official apt repository&lt;/h2>
&lt;p>First add Docker&amp;rsquo;s GPG key so apt trusts the packages:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Add Docker&amp;#39;s official GPG key:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo apt update
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo apt install ca-certificates curl
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo install -m &lt;span style="color:#ae81ff">0755&lt;/span> -d /etc/apt/keyrings
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo chmod a+r /etc/apt/keyrings/docker.asc
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Then add the repository itself. This block writes the modern deb822-format source file and fills in your Ubuntu codename and CPU architecture automatically:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Add the repository to Apt sources:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo tee /etc/apt/sources.list.d/docker.sources &lt;span style="color:#e6db74">&amp;lt;&amp;lt;EOF
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">Types: deb
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">URIs: https://download.docker.com/linux/ubuntu
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">Suites: $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;#34;${UBUNTU_CODENAME:-$VERSION_CODENAME}&amp;#34;)
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">Components: stable
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">Architectures: $(dpkg --print-architecture)
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">Signed-By: /etc/apt/keyrings/docker.asc
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">EOF&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo apt update
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="step-3-install-docker-engine">Step 3: Install Docker Engine&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>That single command installs the Engine, the CLI, containerd, Buildx, and &lt;strong>Compose v2&lt;/strong> — everything a homelab needs.&lt;/p>
&lt;h2 id="step-4-verify-the-install">Step 4: Verify the install&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>sudo docker run hello-world
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>If you see &amp;ldquo;Hello from Docker!&amp;rdquo;, the Engine is running. Confirm Compose v2 too:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>docker compose version
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>A &lt;code>v2.x&lt;/code> number means &lt;code>docker compose up -d&lt;/code> will work for your stacks.&lt;/p>
&lt;h2 id="step-5-run-docker-as-a-non-root-user">Step 5: Run Docker as a non-root user&lt;/h2>
&lt;p>By default &lt;code>docker&lt;/code> needs &lt;code>sudo&lt;/code>. Add your user to the &lt;code>docker&lt;/code> group so you can drop it:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>sudo usermod -aG docker $USER
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Then &lt;strong>log out and back in&lt;/strong> (or run &lt;code>newgrp docker&lt;/code> in the current shell) so the new group membership takes effect. After that, &lt;code>docker run hello-world&lt;/code> works without &lt;code>sudo&lt;/code>.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Security note:&lt;/strong> the &lt;code>docker&lt;/code> group grants root-equivalent access to the host — a member can mount the host filesystem into a container. Only add users you trust as administrators.&lt;/p>&lt;/blockquote>
&lt;p>Docker is enabled to start on boot automatically after this install (via systemd). You can confirm with &lt;code>systemctl is-enabled docker&lt;/code>.&lt;/p>
&lt;h2 id="common-install-errors-and-fixes">Common install errors and fixes&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>&lt;code>permission denied while trying to connect to the Docker daemon socket&lt;/code>&lt;/strong> — your user is not in the &lt;code>docker&lt;/code> group yet, or you have not logged out and back in since Step 5. Re-run the &lt;code>usermod&lt;/code> line, then log out/in.&lt;/li>
&lt;li>&lt;strong>&lt;code>docker: 'compose' is not a docker command&lt;/code>&lt;/strong> — you installed the old &lt;code>docker.io&lt;/code> or Snap package instead of &lt;code>docker-ce&lt;/code>. Remove it (Step 1) and install from the official repo (Steps 2–3), which includes the Compose plugin.&lt;/li>
&lt;li>&lt;strong>&lt;code>NO_PUBKEY&lt;/code> / &lt;code>GPG error&lt;/code> on &lt;code>apt update&lt;/code>&lt;/strong> — the GPG key step did not complete. Re-run the four key commands in Step 2 and check the key exists with &lt;code>ls -l /etc/apt/keyrings/docker.asc&lt;/code>.&lt;/li>
&lt;li>&lt;strong>&lt;code>Unable to locate package docker-ce&lt;/code>&lt;/strong> — the repository was not added or &lt;code>apt update&lt;/code> was not run after adding it. Re-check &lt;code>/etc/apt/sources.list.d/docker.sources&lt;/code> exists and re-run &lt;code>sudo apt update&lt;/code>.&lt;/li>
&lt;li>&lt;strong>Behind a proxy or on a fresh server, &lt;code>curl&lt;/code> fails&lt;/strong> — install &lt;code>curl&lt;/code> first (&lt;code>sudo apt install curl&lt;/code>) and confirm the box can reach &lt;code>download.docker.com&lt;/code>.&lt;/li>
&lt;/ul>
&lt;h2 id="where-to-go-next">Where to go next&lt;/h2>
&lt;p>With the Engine running, the natural next step is a Compose stack. Start with the &lt;a href="https://techfuelhq.com/tutorials/docker-compose-starter-stack-homelab-2026/">Docker Compose starter stack for a homelab&lt;/a>, size your host RAM with the &lt;a href="https://techfuelhq.com/tools/docker-ram-planner/">Docker homelab RAM planner&lt;/a>, or jump straight to a real service like &lt;a href="https://techfuelhq.com/tutorials/jellyfin-setup-docker-homelab-2026/">Jellyfin in Docker&lt;/a>. For the bigger picture of what to self-host, see the &lt;a href="https://techfuelhq.com/articles/self-hosted-apps-replace-saas-2026/">best self-hosted apps to replace SaaS&lt;/a>.&lt;/p>
&lt;p>&lt;em>Commands reproduced from &lt;a href="https://docs.docker.com/engine/install/ubuntu/" rel="noopener">Docker&amp;rsquo;s official Ubuntu installation guide&lt;/a> and verified 2026-06-30. Docker Engine, Buildx, and Compose are trademarks of Docker, Inc.; this is an independent guide.&lt;/em>&lt;/p></description></item><item><title>Monitor Size Calculator: Screen Width, Height &amp; Desk Fit</title><link>https://techfuelhq.com/tools/monitor-size-calculator/</link><pubDate>Tue, 30 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tools/monitor-size-calculator/</guid><description>&lt;p>This tool turns a monitor&amp;rsquo;s &lt;strong>diagonal size and aspect ratio into its real physical dimensions&lt;/strong> - width and height in both inches and centimeters - plus the screen area and a plain-English desk-fit verdict. Enter a diagonal and pick an aspect ratio, or tap a preset for a common screen. It is the answer to &amp;ldquo;how wide is a 34-inch ultrawide, actually?&amp;rdquo; and &amp;ldquo;will this thing fit on my desk?&amp;rdquo;&lt;/p>
&lt;p>The key insight the diagonal alone hides: &lt;strong>width, not the diagonal, decides whether a screen fits your space&lt;/strong>, and two monitors with the same diagonal can be very different shapes. A 34-inch 21:9 ultrawide is 3.5 inches &lt;em>wider&lt;/em> than a 32-inch 16:9, yet it is also shorter and has slightly &lt;em>less&lt;/em> total screen area - because ultrawides trade height for width. A 49-inch 32:9 is nearly four feet (120 cm) across. The calculator makes those trade-offs concrete before you buy. One knock-on effect worth knowing if you are moving to an ultrawide: the wider field of view changes how a given in-game sensitivity feels, so it is worth re-checking your cm/360 in the &lt;a href="https://techfuelhq.com/tools/mouse-sensitivity-converter/">mouse sensitivity converter&lt;/a> after the swap.&lt;/p>
&lt;p>To turn the same numbers into pixel sharpness, use the &lt;a href="https://techfuelhq.com/tools/ppi-calculator/">PPI Calculator&lt;/a>; to nail down a screen&amp;rsquo;s exact aspect ratio from its resolution, use the &lt;a href="https://techfuelhq.com/tools/aspect-ratio-calculator/">Aspect Ratio Calculator&lt;/a>; and to convert a game&amp;rsquo;s field of view between a 16:9 and an ultrawide screen, see the &lt;a href="https://techfuelhq.com/tools/fov-calculator/">FOV Calculator&lt;/a>.&lt;/p></description></item><item><title>Aspect Ratio Calculator: Resolutions, Ultrawide &amp; 16:9 (2026)</title><link>https://techfuelhq.com/tools/aspect-ratio-calculator/</link><pubDate>Mon, 29 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tools/aspect-ratio-calculator/</guid><description>&lt;p>This calculator works two ways. Enter a pixel resolution and it reduces to the exact aspect ratio (with the decimal and the common name). Or set a ratio - type it or tap a preset like 16:9 or 21:9 - and enter one dimension to solve the other. It is built for monitors and gaming resolutions, so the presets and names match real displays.&lt;/p>
&lt;p>The detail most aspect-ratio tools skip: &lt;strong>advertised ratios are often rounded.&lt;/strong> A &amp;ldquo;21:9&amp;rdquo; 3440x1440 monitor is exactly 43:18, and a 2560x1080 one is 64:27. Neither is truly 21:9. This tool shows the precise reduced ratio, which is the real geometry of the panel - useful when you are matching wallpapers, video, or a game&amp;rsquo;s render target to the actual screen.&lt;/p>
&lt;p>To size a graphics card for the resolution you land on, see the &lt;a href="https://techfuelhq.com/tools/gpu-comparison/">GPU Comparison Tool&lt;/a> and the &lt;a href="https://techfuelhq.com/tools/pc-bottleneck-calculator/">PC Bottleneck Calculator&lt;/a>.&lt;/p>
&lt;h2 id="common-resolutions-and-their-real-ratios">Common resolutions and their real ratios&lt;/h2>
&lt;p>Most PC resolutions reduce to a short list. 1920x1080, 2560x1440, and 3840x2160 are all 16:9, the standard. 1920x1200 and 2560x1600 are 16:10, common on laptops and productivity panels. The ultrawides are where the marketing labels drift from the geometry: 2560x1080 is exactly 64:27, 3440x1440 is 43:18, and both wear a &amp;ldquo;21:9&amp;rdquo; sticker. Super-ultrawide 5120x1440 is 32:9. Going back, 1280x1024 is 5:4 and the classic 1024x768 is 4:3. Enter any native resolution above and the tool reduces it with the greatest common divisor, so you get the exact ratio rather than the rounded one.&lt;/p>
&lt;h2 id="why-219-is-a-rounding">Why &amp;ldquo;21:9&amp;rdquo; is a rounding&lt;/h2>
&lt;p>True 21:9 works out to 2.333 wide for every 1 tall. A 3440x1440 monitor divides to about 2.389, which reduces exactly to 43:18; a 2560x1080 one divides to about 2.370, which is exactly 64:27. Neither is really 21:9; the label is just cleaner to advertise. It rarely matters for buying, but it matters when you are matching a wallpaper, a video, or a game&amp;rsquo;s render target to the panel, because using the true ratio avoids the slight stretch or letterbox that a rounded &amp;ldquo;21:9&amp;rdquo; would introduce.&lt;/p>
&lt;h2 id="how-aspect-ratio-touches-gaming-performance">How aspect ratio touches gaming performance&lt;/h2>
&lt;p>The ratio itself does not change performance; the pixel count does. A 3440x1440 ultrawide has about 4.95 million pixels, roughly 34 percent more than 2560x1440 but well short of 4K&amp;rsquo;s 8.29 million, so its frame rates usually land between 1440p and 4K. Budget a graphics card accordingly with the &lt;a href="https://techfuelhq.com/tools/gpu-comparison/">GPU Comparison Tool&lt;/a>. A wider screen also changes what you see: ultrawides widen your in-game field of view, which you can convert precisely with the &lt;a href="https://techfuelhq.com/tools/fov-calculator/">FOV Calculator&lt;/a>.&lt;/p></description></item><item><title>CPU Comparison Tool: Compare Any Two Gaming Processors (2026)</title><link>https://techfuelhq.com/tools/cpu-comparison/</link><pubDate>Mon, 29 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tools/cpu-comparison/</guid><description>&lt;p>This tool compares any two processors for gaming and shows which is faster, by how much. Pick two CPUs. The result is a relative gaming margin based on aggregated 1080p benchmarks, which is the standard way to rank processors against each other because it removes the graphics card as a bottleneck.&lt;/p>
&lt;p>The honest framing: this is a &lt;strong>1080p gaming ranking, not a productivity score, and not the gap you will feel at every resolution.&lt;/strong> At 1080p and high refresh rates you may see most of the difference; at 1440p and 4K the graphics card usually becomes the limiter and the gap between two capable chips shrinks. For multi-core work like rendering or compiling, core count changes the order, so check those benchmarks separately.&lt;/p>
&lt;p>Scores come from the &lt;a href="https://www.tomshardware.com/reviews/cpu-hierarchy,4312.html" rel="noopener">Tom&amp;rsquo;s Hardware CPU benchmarks hierarchy&lt;/a> (1080p gaming), current through June 2026. To see whether a given CPU actually bottlenecks a specific graphics card at your resolution, pair this with the &lt;a href="https://techfuelhq.com/tools/pc-bottleneck-calculator/">PC Bottleneck Calculator&lt;/a>; to compare two graphics cards, use the &lt;a href="https://techfuelhq.com/tools/gpu-comparison/">GPU Comparison Tool&lt;/a>.&lt;/p>
&lt;h2 id="how-to-read-the-result">How to read the result&lt;/h2>
&lt;p>The number is a 1080p gaming margin, not a general speed score. Testing at 1080p on a fast graphics card removes the card as a limit, so the gap you see is the processor&amp;rsquo;s true gaming ceiling, which is the honest way to rank chips against each other. But it is a ceiling, not the gap you will feel at every resolution. At 1080p and high refresh rates you may see most of it; at 1440p and 4K the graphics card usually becomes the limiter and the difference between two capable chips shrinks, sometimes to nothing. Read the percentage as the maximum gaming gap, then expect less of it the higher you play.&lt;/p>
&lt;h2 id="why-x3d-chips-win-games">Why X3D chips win games&lt;/h2>
&lt;p>If a lower-clocked, cheaper AMD chip is beating a pricier one in this ranking, the reason is almost always cache. AMD&amp;rsquo;s X3D processors stack extra L3 cache onto the die. Games constantly request small pieces of data, and a bigger cache serves more of those requests instantly instead of waiting on slower system memory. The payoff shows up most in simulation, strategy, and esports titles that live and die on memory latency. That is how a Ryzen 7 7800X3D or 9800X3D beats higher-clocked, more expensive chips in games while drawing less power, even when those same chips pull ahead in raw multi-core work.&lt;/p>
&lt;h2 id="gaming-and-productivity-do-not-rank-the-same">Gaming and productivity do not rank the same&lt;/h2>
&lt;p>This tool ranks gaming, and gaming only. A chip that wins games can lose at rendering, compiling, or video encoding, where core and thread count matter more than the cache and latency that win games. The clean example is the X3D line again: it leads in gaming on cache, but a same-price non-X3D or Intel chip with more cores can finish a render faster. If your machine does real productivity work, treat this as the gaming half of the decision and check multi-core benchmarks for the other half before you buy.&lt;/p>
&lt;h2 id="the-free-frames-most-people-leave-on-the-table">The free frames most people leave on the table&lt;/h2>
&lt;p>Two builds with the same processor can differ several percent on memory alone, because gaming is sensitive to memory latency and bandwidth. The index here assumes your memory is running at its rated speed, which means the EXPO profile on AMD or XMP on Intel is switched on in the BIOS. Out of the box it often is not. Enabling it is one of the cheapest ways to close a gaming gap, and a slow-rated kit can quietly cost you frames on even a strong chip.&lt;/p>
&lt;p>When a gap is small, spend the difference elsewhere. An 8 percent gaming lead at 1080p that mostly vanishes at your real resolution is rarely worth paying up for, and the money is usually better spent on a faster graphics card. The &lt;a href="https://techfuelhq.com/articles/7800x3d-vs-9800x3d-upgrade-2026/">7800X3D vs 9800X3D upgrade guide&lt;/a> works through exactly that math, the &lt;a href="https://techfuelhq.com/reviews/ryzen-7-7800x3d-review-2026/">7800X3D review&lt;/a> covers the value pick most gamers land on, and the &lt;a href="https://techfuelhq.com/tools/pc-builder/">PC Builder&lt;/a> balances a whole system to a budget.&lt;/p></description></item><item><title>CPU Hierarchy 2026: Gaming Processor Tier List</title><link>https://techfuelhq.com/articles/cpu-hierarchy-2026/</link><pubDate>Mon, 29 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/cpu-hierarchy-2026/</guid><description>&lt;img src="https://techfuelhq.com/images/articles/cpu-hierarchy-2026.svg" alt="A dot-plot comparing performance spread on a shared 0-100 scale: graphics cards spread widely from about 25 to 100, while gaming CPUs cluster tightly from 61 to 100. The seven fastest gaming chips, highlighted, are all AMD 3D V-Cache processors, led by the Ryzen 7 9850X3D at 100 down to the Core i5-12600K at 61." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>This is a 2026 CPU hierarchy: a tier list of 28 modern processors ranked by gaming performance, not by price or core count. Each chip carries a relative gaming score, normalized so the fastest gaming processor equals 100, and a tier label. Scores come from 1080p gaming benchmarks — testing at 1080p on a top-tier graphics card removes the GPU as a limiter, so the numbers reflect each chip&amp;rsquo;s true gaming ceiling rather than your monitor&amp;rsquo;s.&lt;/p>
&lt;p>Two ideas run through this whole list, and the chart above shows both. First, &lt;strong>gaming CPUs barely spread out.&lt;/strong> Where graphics cards run from about 25 to 100, every processor here scores 60 or better — the entire race happens in the top 40% of the scale. The slowest modern chip is still a perfectly good gaming CPU, and the gap between a mid-tier and a top-tier part is often a handful of percent that shrinks to nothing once you leave 1080p behind. Second, &lt;strong>the very top is a clean sweep of cache.&lt;/strong> The seven fastest gaming chips of 2026 are all AMD 3D V-Cache parts, and it is worth understanding why before you read a single tier.&lt;/p>
&lt;h2 id="why-the-top-is-all-cache">Why the top is all cache&lt;/h2>
&lt;p>Games are latency-bound in a way that most productivity work is not. They fire off enormous numbers of small, unpredictable memory requests, and every one that misses the cache means a long wait on system RAM. AMD&amp;rsquo;s &lt;strong>3D V-Cache&lt;/strong> stacks a slab of extra L3 cache directly on top of the chip — 96MB on an X3D part versus roughly a third of that on a normal one — so far more of those requests are answered instantly. The payoff is largest in exactly the games that hammer the CPU: simulation, strategy, MMOs, and esports at high refresh.&lt;/p>
&lt;p>The surprising part is what it does to the usual &amp;ldquo;more cores, more money, more performance&amp;rdquo; instinct. For gaming, it inverts it. A cache-heavy chip with &lt;strong>fewer&lt;/strong> cores routinely beats a higher-clocked, higher-core, more-expensive processor — while drawing less power.&lt;/p>
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;padding:26px 22px 22px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;border-radius:8px;">
&lt;div style="text-align:center;margin-bottom:18px;">&lt;div style="font-size:18px;font-weight:600;letter-spacing:-0.3px;">The 3D V-Cache effect&lt;/div>&lt;div style="font-size:12px;color:#9a9ab5;margin-top:5px;">In games, cache beats cores. Relative 1080p gaming index (55 = short bar, 100 = full).&lt;/div>&lt;/div>
&lt;div style="max-width:600px;margin:0 auto;">
&lt;div style="display:flex;align-items:center;gap:10px;margin:0 0 7px;">&lt;div style="flex:0 0 160px;font-size:12.5px;">&lt;span style="color:#5dca7a;font-weight:700;">Ryzen 5 7600X3D&lt;/span>&lt;br>&lt;span style="color:#8a8aa5;font-size:11px;">6 cores · cache&lt;/span>&lt;/div>&lt;div style="flex:1;background:rgba(255,255,255,0.05);border-radius:4px;height:22px;">&lt;div style="width:57%;background:linear-gradient(90deg,#3fa05f,#5dca7a);height:22px;border-radius:4px;">&lt;/div>&lt;/div>&lt;div style="flex:0 0 38px;font-size:13px;font-weight:700;color:#5dca7a;text-align:right;">80.6&lt;/div>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:10px;margin:0 0 16px;">&lt;div style="flex:0 0 160px;font-size:12.5px;">&lt;span style="color:#c8c8dc;font-weight:700;">Core i9-14900K&lt;/span>&lt;br>&lt;span style="color:#8a8aa5;font-size:11px;">24 cores · no cache&lt;/span>&lt;/div>&lt;div style="flex:1;background:rgba(255,255,255,0.05);border-radius:4px;height:22px;">&lt;div style="width:52%;background:linear-gradient(90deg,#3a3a55,#6a6a86);height:22px;border-radius:4px;">&lt;/div>&lt;/div>&lt;div style="flex:0 0 38px;font-size:13px;font-weight:700;color:#9a9ab5;text-align:right;">78.2&lt;/div>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:10px;margin:0 0 7px;">&lt;div style="flex:0 0 160px;font-size:12.5px;">&lt;span style="color:#5dca7a;font-weight:700;">Ryzen 7 7800X3D&lt;/span>&lt;br>&lt;span style="color:#8a8aa5;font-size:11px;">8 cores · cache&lt;/span>&lt;/div>&lt;div style="flex:1;background:rgba(255,255,255,0.05);border-radius:4px;height:22px;">&lt;div style="width:68%;background:linear-gradient(90deg,#3fa05f,#5dca7a);height:22px;border-radius:4px;">&lt;/div>&lt;/div>&lt;div style="flex:0 0 38px;font-size:13px;font-weight:700;color:#5dca7a;text-align:right;">85.6&lt;/div>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:10px;margin:0;">&lt;div style="flex:0 0 160px;font-size:12.5px;">&lt;span style="color:#c8c8dc;font-weight:700;">Ryzen 9 9950X&lt;/span>&lt;br>&lt;span style="color:#8a8aa5;font-size:11px;">16 cores · no cache&lt;/span>&lt;/div>&lt;div style="flex:1;background:rgba(255,255,255,0.05);border-radius:4px;height:22px;">&lt;div style="width:49%;background:linear-gradient(90deg,#3a3a55,#6a6a86);height:22px;border-radius:4px;">&lt;/div>&lt;/div>&lt;div style="flex:0 0 38px;font-size:13px;font-weight:700;color:#9a9ab5;text-align:right;">76.9&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="text-align:center;margin-top:18px;font-size:12.5px;color:#c8c8dc;max-width:520px;margin-left:auto;margin-right:auto;line-height:1.5;">A &lt;strong style="color:#5dca7a;">6-core&lt;/strong> cache chip out-games Intel's &lt;strong>24-core&lt;/strong> flagship. An &lt;strong style="color:#5dca7a;">8-core&lt;/strong> X3D beats a &lt;strong>16-core&lt;/strong> Ryzen 9. For gaming, stop counting cores.&lt;/div>
&lt;div style="text-align:right;margin-top:12px;font-size:10px;color:#44445a;">techfuelhq.com &amp;middot; 1080p gaming index, from the Tom's Hardware CPU hierarchy&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>The catch — and it is a real one — is that this is a &lt;strong>gaming&lt;/strong> ranking. Those extra cores on a 9950X or a 14900K are not wasted; they win decisively in rendering, compiling, streaming, and anything that scales with threads. If you do serious multi-core work as well as game, read the Strong tier below with that in mind. But if the machine exists to play games, the list starts and ends with cache.&lt;/p>
&lt;h2 id="the-2026-cpu-gaming-hierarchy">The 2026 CPU gaming hierarchy&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">#&lt;/th>
&lt;th scope="col">Processor&lt;/th>
&lt;th scope="col">Gaming index&lt;/th>
&lt;th scope="col">Tier&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>1&lt;/td>
&lt;td>Ryzen 7 9850X3D&lt;/td>
&lt;td>100.0&lt;/td>
&lt;td>Elite&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2&lt;/td>
&lt;td>Ryzen 7 9800X3D&lt;/td>
&lt;td>97.0&lt;/td>
&lt;td>Elite&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>3&lt;/td>
&lt;td>Ryzen 9 9950X3D&lt;/td>
&lt;td>95.7&lt;/td>
&lt;td>Elite&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>4&lt;/td>
&lt;td>Ryzen 9 9900X3D&lt;/td>
&lt;td>86.9&lt;/td>
&lt;td>Excellent&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>5&lt;/td>
&lt;td>Ryzen 7 7800X3D&lt;/td>
&lt;td>85.6&lt;/td>
&lt;td>Excellent&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>6&lt;/td>
&lt;td>Ryzen 9 7950X3D&lt;/td>
&lt;td>83.9&lt;/td>
&lt;td>Excellent&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>7&lt;/td>
&lt;td>Ryzen 5 7600X3D&lt;/td>
&lt;td>80.6&lt;/td>
&lt;td>Excellent&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>8&lt;/td>
&lt;td>Core i9-14900K&lt;/td>
&lt;td>78.2&lt;/td>
&lt;td>Strong&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>9&lt;/td>
&lt;td>Core Ultra 7 270K Plus&lt;/td>
&lt;td>77.5&lt;/td>
&lt;td>Strong&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>10&lt;/td>
&lt;td>Ryzen 9 7900X3D&lt;/td>
&lt;td>77.1&lt;/td>
&lt;td>Strong&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>11&lt;/td>
&lt;td>Ryzen 9 9950X&lt;/td>
&lt;td>76.9&lt;/td>
&lt;td>Strong&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>12&lt;/td>
&lt;td>Core i9-13900K&lt;/td>
&lt;td>76.8&lt;/td>
&lt;td>Strong&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>13&lt;/td>
&lt;td>Core i7-14700K&lt;/td>
&lt;td>76.4&lt;/td>
&lt;td>Strong&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>14&lt;/td>
&lt;td>Core i7-13700K&lt;/td>
&lt;td>75.8&lt;/td>
&lt;td>Strong&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>15&lt;/td>
&lt;td>Ryzen 9 9900X&lt;/td>
&lt;td>73.9&lt;/td>
&lt;td>Strong&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>16&lt;/td>
&lt;td>Core Ultra 5 250K Plus&lt;/td>
&lt;td>73.3&lt;/td>
&lt;td>Strong&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>17&lt;/td>
&lt;td>Core i5-14600K&lt;/td>
&lt;td>72.8&lt;/td>
&lt;td>Solid&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>18&lt;/td>
&lt;td>Ryzen 5 9600X&lt;/td>
&lt;td>72.6&lt;/td>
&lt;td>Solid&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>19&lt;/td>
&lt;td>Core Ultra 9 285K&lt;/td>
&lt;td>71.8&lt;/td>
&lt;td>Solid&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>20&lt;/td>
&lt;td>Ryzen 9 7950X&lt;/td>
&lt;td>71.0&lt;/td>
&lt;td>Solid&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>21&lt;/td>
&lt;td>Core i5-13600K&lt;/td>
&lt;td>70.9&lt;/td>
&lt;td>Solid&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>22&lt;/td>
&lt;td>Ryzen 7 7700X&lt;/td>
&lt;td>70.6&lt;/td>
&lt;td>Solid&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>23&lt;/td>
&lt;td>Core Ultra 7 265K&lt;/td>
&lt;td>70.3&lt;/td>
&lt;td>Solid&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>24&lt;/td>
&lt;td>Ryzen 9 7900X&lt;/td>
&lt;td>69.2&lt;/td>
&lt;td>Solid&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>25&lt;/td>
&lt;td>Ryzen 5 7600X&lt;/td>
&lt;td>67.3&lt;/td>
&lt;td>Solid&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>26&lt;/td>
&lt;td>Core Ultra 5 245K&lt;/td>
&lt;td>67.1&lt;/td>
&lt;td>Solid&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>27&lt;/td>
&lt;td>Core i7-12700K&lt;/td>
&lt;td>65.8&lt;/td>
&lt;td>Entry&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>28&lt;/td>
&lt;td>Core i5-12600K&lt;/td>
&lt;td>60.8&lt;/td>
&lt;td>Entry&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Scores are relative 1080p gaming performance (fastest gaming chip = 100) from the &lt;a href="https://www.tomshardware.com/reviews/cpu-hierarchy,4312.html" rel="noopener">Tom&amp;rsquo;s Hardware CPU benchmark hierarchy&lt;/a>, current through June 2026.&lt;/p>
&lt;h2 id="how-to-use-the-tiers">How to use the tiers&lt;/h2>
&lt;p>&lt;strong>Elite (3 chips).&lt;/strong> The fastest gaming processors, all AMD X3D. Worth it for high-refresh 1080p and 1440p competitive play, or if you simply want the best and will keep the platform a long time. For 4K-focused gaming the premium is hard to feel.&lt;/p>
&lt;p>&lt;strong>Excellent (4 chips).&lt;/strong> Near the top in games at a more reasonable price, again led by X3D cache. For most gaming builds this tier is the smart ceiling.&lt;/p>
&lt;p>&lt;strong>Strong (9 chips).&lt;/strong> High-end Intel Core and non-X3D Ryzen chips. They game very well and pull ahead in multi-core productivity, so this tier suits people who do real work outside games as well as play them. This is also where Intel&amp;rsquo;s &lt;strong>Arrow Lake Refresh&lt;/strong> lands — the Core Ultra 7 270K Plus and Ultra 5 250K Plus (launched March 2026) added more cores, higher clocks, and a new Binary Optimization tool worth roughly 15% more gaming performance on average, which genuinely pulled Intel back into the conversation. It closes the gap to AMD; it does not erase it. For a pure gaming build the X3D chips above still lead, but a 270K Plus is a legitimate all-rounder if you value multi-core work too.&lt;/p>
&lt;p>&lt;strong>Solid (10 chips).&lt;/strong> The value middle. These run any game well and pair naturally with a mid-range graphics card; at 1440p and 4K you would struggle to tell them from the tiers above.&lt;/p>
&lt;p>&lt;strong>Entry (2 chips).&lt;/strong> Older or lower-core chips that still game capably at 1080p. Fine for a budget build, especially paired with a card that is the real limiter at your resolution.&lt;/p>
&lt;h2 id="pick-the-right-cpu-for-your-build">Pick the right CPU for your build&lt;/h2>
&lt;p>A hierarchy shows gaming speed, but the right chip depends on your resolution, your graphics card, and whether you do multi-core work. To compare any two processors head-to-head, use the &lt;a href="https://techfuelhq.com/tools/cpu-comparison/">CPU Comparison Tool&lt;/a>. To check whether a CPU will bottleneck a specific graphics card at your resolution, use the &lt;a href="https://techfuelhq.com/tools/pc-bottleneck-calculator/">PC Bottleneck Calculator&lt;/a>. And for where graphics cards land, see the &lt;a href="https://techfuelhq.com/articles/gpu-hierarchy-2026/">GPU Hierarchy 2026&lt;/a>. For specific X3D matchups, weigh the budget &lt;a href="https://techfuelhq.com/articles/7600x3d-vs-7800x3d-value-2026/">Ryzen 5 7600X3D vs 7800X3D&lt;/a> and the flagship &lt;a href="https://techfuelhq.com/articles/9950x3d-vs-9800x3d-gaming-2026/">Ryzen 9 9950X3D vs 9800X3D&lt;/a>. For hands-on takes, our &lt;a href="https://techfuelhq.com/reviews/ryzen-7-7800x3d-review-2026/">Ryzen 7 7800X3D review&lt;/a> covers the Excellent-tier value benchmark, and the &lt;a href="https://techfuelhq.com/articles/9800x3d-undervolt-guide-2026/">9800X3D undervolt guide&lt;/a> shows how to run the Elite-tier chip cooler and more efficiently with Curve Optimizer.&lt;/p></description></item><item><title>DisplayPort &amp; HDMI Bandwidth Calculator (2026)</title><link>https://techfuelhq.com/tools/displayport-hdmi-bandwidth-calculator/</link><pubDate>Mon, 29 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tools/displayport-hdmi-bandwidth-calculator/</guid><description>&lt;p>This calculator tells you whether a given display mode fits over a specific cable standard. Pick your resolution, refresh rate, color depth, and chroma subsampling, and it shows the bandwidth that mode needs and which interfaces can carry it: HDMI 2.0, HDMI 2.1, DisplayPort 1.4, and DisplayPort 2.1 UHBR, both uncompressed and with DSC.&lt;/p>
&lt;p>The figures it compares against are the &lt;strong>effective&lt;/strong> bandwidths after encoding overhead, not the marketing raw numbers. HDMI 2.0 and DisplayPort 1.4 both lose 20% to 8b/10b encoding, landing at 14.4 and 25.92 Gbps. HDMI 2.1 uses a more efficient scheme for 42.6 Gbps, and DisplayPort 2.1 UHBR is the most efficient of all, up to 77.4 Gbps. That is why a mode can clear the raw headline number but still not fit.&lt;/p>
&lt;p>The honest caveat: this is a close uncompressed estimate using a standard reduced-blanking timing allowance, and real numbers shift slightly with the exact timing your GPU and monitor negotiate. When a mode only fits with &lt;strong>DSC&lt;/strong>, that is normal and visually lossless on modern hardware. If you are pushing the edge of what a link can do, the &lt;a href="https://techfuelhq.com/gaming/how-to-overclock-monitor-2026/">monitor overclocking guide&lt;/a> covers how to test a custom mode safely, and the &lt;a href="https://techfuelhq.com/tools/aspect-ratio-calculator/">aspect ratio calculator&lt;/a> helps confirm your exact pixel dimensions first.&lt;/p></description></item><item><title>DLSS vs FSR 2026: Which Upscaler Wins, and on What GPU</title><link>https://techfuelhq.com/articles/dlss-vs-fsr-2026/</link><pubDate>Mon, 29 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/dlss-vs-fsr-2026/</guid><description>&lt;p>If you are trying to decide between DLSS and FSR in 2026, the comparison most articles set up is the wrong one. There is no single winner, because the two are not freely interchangeable. DLSS 4 and 4.5 are still the image-quality and frame-generation leader, but they are hard-locked to NVIDIA RTX hardware, and the headline feature only runs on the newest cards. AMD&amp;rsquo;s FSR 4 closed most of the visual gap with a real machine-learning model and just broke its own hardware exclusivity. The real story is the tension between a locked, best-in-class option and an open, good-enough one, and which side of that line your GPU sits on decides everything.&lt;/p>
&lt;p>So the useful question is not &amp;ldquo;DLSS or FSR.&amp;rdquo; It is &amp;ldquo;which one can my card run, and how good is that one.&amp;rdquo; This guide answers that directly.&lt;/p>
&lt;h2 id="the-short-answer-by-gpu">The short answer by GPU&lt;/h2>
&lt;p>Three buckets cover almost everyone.&lt;/p>
&lt;p>If you own an NVIDIA RTX card, DLSS is the clear pick, and it is the upscaler you already have. The best version of frame generation needs an RTX 50-series card, but the upscaling itself runs on every RTX generation.&lt;/p>
&lt;p>If you own a current AMD card, meaning a Radeon RX 9000 (RDNA 4) or now an RX 7000 (RDNA 3), FSR 4 is genuinely competitive and good enough for most players, though still a touch softer than DLSS in side-by-side comparison.&lt;/p>
&lt;p>If you own anything older or non-AMD, such as an RX 6000, a GTX card, or you simply want one upscaler that works on every machine you touch, you fall back to the open, cross-vendor FSR 3.1 or Intel XeSS. Both look clearly worse than the modern ML upscalers, but they run almost anywhere.&lt;/p>
&lt;p>The rest of this article unpacks why, with the hardware-support details that actually change which option you can use.&lt;/p>
&lt;h2 id="what-dlss-4-and-45-actually-are">What DLSS 4 and 4.5 actually are&lt;/h2>
&lt;p>DLSS 4 introduced a transformer-based AI model for Super Resolution, Ray Reconstruction, and DLAA, which NVIDIA describes as &lt;a href="https://www.nvidia.com/en-us/geforce/news/dlss-4-multi-frame-generation-out-now/" rel="noopener">the graphics industry&amp;rsquo;s first real-time application of transformers&lt;/a>, replacing the older convolutional neural network. The practical result is better temporal stability, less ghosting, and more retained detail in motion than the previous generation.&lt;/p>
&lt;p>Here is the part the marketing tends to bury. That transformer Super Resolution model &lt;a href="https://www.nvidia.com/en-us/geforce/news/dlss-4-multi-frame-generation-out-now/" rel="noopener">runs on all RTX generations&lt;/a>, including RTX 20, 30, 40, and 50 series. It is not an RTX 50 exclusive. So if you bought an RTX 3070 years ago, you can still run the newest DLSS upscaling today.&lt;/p>
&lt;p>What is RTX 50 exclusive is Multi-Frame Generation. MFG generates up to three additional AI frames per rendered frame, the 4X mode, and NVIDIA markets up to 8X performance over traditional rendering. It launched in 75-plus games and apps. It is locked to Blackwell because the RTX 50 architecture adds hardware flip metering needed for smooth multi-frame pacing, and NVIDIA &lt;a href="https://www.nvidia.com/en-us/geforce/news/dlss4-multi-frame-generation-ai-innovations/" rel="noopener">removed the dedicated Optical Flow Accelerator&lt;/a> that RTX 40&amp;rsquo;s older Frame Generation relied on, moving the work onto the RTX 50 Tensor Cores.&lt;/p>
&lt;p>Single Frame Generation, the older DLSS 3 style 2X output of one generated frame per rendered frame, &lt;a href="https://www.nvidia.com/en-us/geforce/news/dlss-4-multi-frame-generation-out-now/" rel="noopener">works on both RTX 40 and RTX 50&lt;/a>, and DLSS 4 gave RTX 40 an upgraded model that uses less VRAM. Frame Generation in any form does not work on RTX 30 or RTX 20. If the difference between upscaling and frame generation is fuzzy, our &lt;a href="https://techfuelhq.com/articles/frame-generation-explained-2026/">frame generation explainer&lt;/a> walks through exactly what each one does and where it helps.&lt;/p>
&lt;p>DLSS 4.5, rolling out through 2026, pushes the quality side further. It adds a second-generation transformer model for Super Resolution that &lt;a href="https://www.nvidia.com/en-us/geforce/news/dlss-4-5-dynamic-multi-frame-gen-6x-2nd-gen-transformer-super-res/" rel="noopener">uses five times the compute of the original DLSS 4 transformer&lt;/a> and was trained on an expanded high-fidelity dataset. That Super Resolution upgrade is available across all RTX GPUs in 400-plus games and apps. On the frame-gen side, 4.5 adds a 6X Multi-Frame Generation mode and a Dynamic MFG mode that auto-shifts the multiplier to balance frame rate, image quality, and latency, both RTX 50 exclusive. Going from 4X to 6X raises 4K path-traced frame rates by up to 35 percent.&lt;/p>
&lt;h2 id="what-fsr-4-actually-is-and-the-big-2026-change">What FSR 4 actually is, and the big 2026 change&lt;/h2>
&lt;p>AMD&amp;rsquo;s FSR 4, rebranded as FSR Upscaling and part of the FSR Redstone suite, is &lt;a href="https://www.amd.com/en/products/graphics/technologies/fidelityfx/super-resolution.html" rel="noopener">AMD&amp;rsquo;s first ML-accelerated upscaler&lt;/a>, delivering image-quality gains over the older FSR 3.1. The full Redstone suite covers FSR Upscaling, FSR Frame Generation, FSR Ray Regeneration, and FSR Radiance Caching.&lt;/p>
&lt;p>The most important update of 2026 is that AMD broke RDNA 4 exclusivity. FSR Upscaling 4.1.1, delivered through &lt;a href="https://gpuopen.com/learn/amd-fsr-sdk-2-3-blog/" rel="noopener">FSR SDK 2.3 posted on June 24, 2026&lt;/a>, now runs on RDNA 3 Radeon RX 7000-series discrete GPUs. AMD states it is optimized to deliver image quality that closely matches the RX 9000 RDNA 4 result. This matters because a huge number of older articles, and AMD&amp;rsquo;s own launch messaging, still describe FSR 4 as RDNA 4 only. That is now outdated for upscaling.&lt;/p>
&lt;p>The exclusivity did not fully dissolve, though. FSR Frame Generation (4.0.1) and FSR Ray Regeneration (1.2.0) &lt;a href="https://gpuopen.com/learn/amd-fsr-sdk-2-3-blog/" rel="noopener">remain RDNA 4 only&lt;/a>, meaning RX 9000 and above. Only the upscaling component crossed over to RX 7000. And RDNA 2, the Radeon RX 6000 series, &lt;a href="https://gpuopen.com/learn/amd-fsr-sdk-2-3-blog/" rel="noopener">is not supported by the ML upscaler&lt;/a> at all. Those cards, and non-AMD GPUs, fall back to the analytical, non-ML modes.&lt;/p>
&lt;h2 id="the-open-fallback-fsr-31-and-xess">The open fallback: FSR 3.1 and XeSS&lt;/h2>
&lt;p>This is where the open-versus-locked theme pays off for everyone else. FSR 3.1 is &lt;a href="https://gpuopen.com/learn/amd_fsr_3_1_release/" rel="noopener">open-source under the MIT license&lt;/a> on GPUOpen and runs cross-vendor on AMD, NVIDIA, and Intel GPUs. It also decoupled frame generation from upscaling, so FSR 3.1 frame-gen can pair with DLSS or XeSS upscaling. Its hardware compatibility &lt;a href="https://gpuopen.com/fidelityfx-super-resolution-3/" rel="noopener">spans Radeon RX 6000, 7000, and 9000, GeForce RTX 20 through 50, and Intel Arc&lt;/a>, which makes it the catch-all for any card too old for the ML upscalers.&lt;/p>
&lt;p>Intel XeSS is the third option. It &lt;a href="https://www.tomshardware.com/pc-components/gpus/xess-sdk-2-1-release-opens-up-intels-framegen-tech-to-compatible-amd-and-nvidia-gpus-xe-low-latency-also-goes-cross-platform-if-framegen-is-enabled" rel="noopener">runs best on Intel Arc through dedicated XMX matrix cores&lt;/a> but ships a cross-vendor DP4a fallback that runs on most modern NVIDIA and AMD GPUs. The DP4a path is a clear step down in sharpness and stability compared to the native XMX path, but it widens compatibility considerably.&lt;/p>
&lt;p>Both of these open paths look noticeably worse than DLSS 4 or FSR 4. They are the compatibility layer, not the quality target.&lt;/p>
&lt;h2 id="image-quality-who-actually-wins">Image quality: who actually wins&lt;/h2>
&lt;p>On pure picture quality with the latest models, the tech-press consensus is consistent. DLSS 4 and 4.5 with the transformer model &lt;a href="https://www.techspot.com/article/3084-nvidia-dlss-45-vs-amd-fsr-4/" rel="noopener">remain the quality leader&lt;/a>, holding up sharper with better detail retention on fine elements such as fences, foliage, and text while in motion. FSR 4 closed most of the gap against FSR 3 but produces a softer image than DLSS, though it is less prone to grain and pixelation. Digital Foundry&amp;rsquo;s framing, cited in that comparison, is that FSR 4 is far better than FSR 3, yet DLSS 4 still shows higher detail in dynamic scenes.&lt;/p>
&lt;p>How close is close? In one ComputerBase blind test, &lt;a href="https://www.techspot.com/article/3084-nvidia-dlss-45-vs-amd-fsr-4/" rel="noopener">nearly half of voters preferred DLSS 4.5 to native rendering&lt;/a>, which says modern AI upscaling can now exceed native image quality in many scenes. That is a real shift in what these technologies are for. On the AMD side, the practical buyer framing reported in press is that on an RX 9070 XT, FSR 4 delivers roughly 90 percent of the DLSS experience, with the visual gap mainly visible in deliberate side-by-side comparison. That last figure is a softer, less rigorously verified claim than the lab tests above, so treat the exact number as a directional read rather than a measured result.&lt;/p>
&lt;p>The honest summary: DLSS still wins on detail, FSR 4 is good enough that most players will not notice in normal play, and the older open upscalers trail both.&lt;/p>
&lt;h2 id="game-availability">Game availability&lt;/h2>
&lt;p>Availability still favors NVIDIA, though the numbers move constantly. DLSS appears in 650-plus titles in total, with DLSS 4 specifically in 250-plus games, while FSR spans 400-plus titles. FSR 4 game counts vary by source and date and are harder to pin down. AMD &lt;a href="https://gpuopen.com/news/amd-fsr4-over-85-games/" rel="noopener">reported 85-plus FSR 4 games via Adrenalin 25.9.1 on September 8, 2025&lt;/a>, which is a launch-era floor, not a current total. Mid-2026 estimates range from the mid-60s into the low hundreds as adoption and driver-level overrides grow. Treat any exact FSR 4 count you see as approximate and moving.&lt;/p>
&lt;h2 id="how-to-decide">How to decide&lt;/h2>
&lt;p>Strip away the brand loyalty and it comes down to the card in your slot.&lt;/p>
&lt;p>Own an RTX 50 card and you get the whole stack, transformer upscaling plus up to 6X Multi-Frame Generation. Own an RTX 40 card and you get the best DLSS upscaling plus Single Frame Generation. Own an RTX 20 or 30 card and you get the transformer upscaling, no frame generation. Own an RX 9000 and you get all of FSR 4 including frame generation. Own an RX 7000 and you get FSR 4 upscaling but not the newest frame gen. Own an RX 6000, a GTX card, or an Intel GPU, and you are on FSR 3.1 or XeSS.&lt;/p>
&lt;p>If you are still choosing the hardware rather than the software, that is the more consequential decision, and it is worth grounding in real performance tiers. Our &lt;a href="https://techfuelhq.com/articles/gpu-hierarchy-2026/">GPU hierarchy for 2026&lt;/a> ranks current cards so you can see where each one lands, and if 4K is the goal specifically, the &lt;a href="https://techfuelhq.com/articles/best-gpu-4k-gaming-2026/">best GPUs for 4K gaming&lt;/a> breakdown narrows the field. You can also line two cards up directly with the &lt;a href="https://techfuelhq.com/tools/gpu-comparison/">GPU comparison tool&lt;/a> to see the spec deltas side by side.&lt;/p>
&lt;h2 id="where-to-go-next">Where to go next&lt;/h2>
&lt;p>The upscaler question is really a hardware question wearing a software costume. Sort out which GPU you are buying or already own, and the DLSS-versus-FSR answer falls out of it. To go deeper, read the &lt;a href="https://techfuelhq.com/articles/frame-generation-explained-2026/">frame generation explainer&lt;/a> to understand the latency tradeoff behind the impressive frame-rate multipliers, check the &lt;a href="https://techfuelhq.com/articles/gpu-hierarchy-2026/">GPU hierarchy&lt;/a> and &lt;a href="https://techfuelhq.com/articles/best-gpu-4k-gaming-2026/">best 4K GPU guide&lt;/a> to place your card in context, and run any two candidates through the &lt;a href="https://techfuelhq.com/tools/gpu-comparison/">GPU comparison tool&lt;/a> before you spend a dollar.&lt;/p></description></item><item><title>Fix GPU Driver Crashes (2026): NVIDIA &amp; AMD Timeout Errors</title><link>https://techfuelhq.com/articles/gpu-driver-crash-fix-2026/</link><pubDate>Mon, 29 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/gpu-driver-crash-fix-2026/</guid><description>&lt;p>If your screen flickered, went black for a second, and Windows told you the &amp;ldquo;display driver stopped responding and has recovered,&amp;rdquo; it is tempting to blame the driver and rage at NVIDIA or AMD. Here is the honest truth most guides skip: the driver is usually not the real culprit. The large majority of so-called GPU driver crashes trace back to an unstable overclock or undervolt (including aggressive factory tuning), unstable memory from an XMP or EXPO profile, marginal power delivery, or a corrupt leftover driver install. The driver is often just the component that happened to stall and report the problem.&lt;/p>
&lt;p>Once you understand the actual Windows mechanism behind the crash, the fix order stops being a random list of tweaks and becomes a logical process. This guide explains what is really happening, then walks you through an ordered, verified fix path that matches what Microsoft, NVIDIA, and AMD themselves recommend. It also debunks the most popular bad advice on the internet: raising a registry timeout value to make the error &amp;ldquo;go away.&amp;rdquo;&lt;/p>
&lt;h2 id="what-is-actually-happening-tdr-explained">What is actually happening: TDR explained&lt;/h2>
&lt;p>Windows has a built-in safety feature called Timeout Detection and Recovery, or TDR. According to &lt;a href="https://learn.microsoft.com/en-us/windows-hardware/drivers/display/timeout-detection-and-recovery" rel="noopener">Microsoft&amp;rsquo;s documentation&lt;/a>, TDR detects when the GPU takes longer than expected to complete an operation, then resets the graphics card so the entire system does not hang. The GPU scheduler inside the DirectX graphics kernel (Dxgkrnl.sys) notices the stall and tries to preempt the stuck task. The wait time on that preempt operation is the TDR timeout.&lt;/p>
&lt;p>That timeout is short. The default TDR timeout period in Windows is &lt;a href="https://learn.microsoft.com/en-us/windows-hardware/drivers/display/timeout-detection-and-recovery" rel="noopener">two seconds&lt;/a>. If the GPU cannot finish or preempt the current task within that window, the OS decides the GPU is frozen and resets it.&lt;/p>
&lt;p>When the reset succeeds, the only visible artifact is a brief screen flicker as the OS redraws the desktop, plus the informational message &amp;ldquo;Display driver stopped responding and has recovered,&amp;rdquo; which Windows also logs in Event Viewer. That recovery is a good outcome. The bad outcome is bug check 0x116, VIDEO_TDR_FAILURE, which &lt;a href="https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/bug-check-0x116---video-tdr-failure" rel="noopener">Microsoft defines&lt;/a> as an attempt to reset the display driver and recover that failed. Windows also bug-checks the whole machine by default on the sixth GPU hang inside one minute, controlled by TdrLimitCount (default 5) and TdrLimitTime (default 60 seconds).&lt;/p>
&lt;p>There is one useful nuance. A modern engine reset (bug check 0x141 with the app-blocked code 0x142) can block GPU access for only the offending process instead of the whole adapter, which is why sometimes a single game crashes while the rest of your desktop keeps running, versus the entire screen flickering at once. If your games close to the desktop with no driver-timeout message at all - no black screen, no &amp;ldquo;display driver stopped responding&amp;rdquo; flicker - the cause is usually somewhere other than the driver; our &lt;a href="https://techfuelhq.com/articles/games-keep-crashing-pc-2026/">games keep crashing on PC guide&lt;/a> sorts those crashes by their signature.&lt;/p>
&lt;h2 id="why-most-driver-crashes-are-not-the-driver">Why most &amp;ldquo;driver crashes&amp;rdquo; are not the driver&lt;/h2>
&lt;p>This is where Microsoft&amp;rsquo;s own primary source does the heavy lifting. The &lt;a href="https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/bug-check-0x116---video-tdr-failure" rel="noopener">official listed causes of VIDEO_TDR_FAILURE&lt;/a> are: an outdated display driver; hardware issues including over-clocked components such as the motherboard; incorrect compatibility or settings, especially memory configuration and timings; insufficient cooling; insufficient power; defective parts like memory modules and motherboards; and too many background programs or visual effects slowing the PC.&lt;/p>
&lt;p>Read that list again. Most of those are not &amp;ldquo;the GPU driver is buggy.&amp;rdquo; They are the system around the GPU being unstable. In a crash dump, the faulting kernel module is nvlddmkm.sys for NVIDIA and amdkmdag or atikmdag for AMD, which is why the error often reads &amp;ldquo;Display driver amdwddmg stopped responding.&amp;rdquo; That module name is what makes people blame the driver, but the module is simply where the stall surfaced. It is the same name Windows prints in parentheses on a &lt;a href="https://techfuelhq.com/articles/system-thread-exception-not-handled-2026/">SYSTEM_THREAD_EXCEPTION_NOT_HANDLED&lt;/a> blue screen - the stop code to work when the machine halts outright instead of recovering.&lt;/p>
&lt;p>So the most productive mindset is: a TDR crash is a stability symptom. Treat it like one.&lt;/p>
&lt;h2 id="the-ordered-fix-path-that-actually-works">The ordered fix path that actually works&lt;/h2>
&lt;p>The community-reported fix order that lines up with vendor guidance, &lt;a href="https://www.makeuseof.com/amd-driver-timeout-tdr-windows/" rel="noopener">documented at MakeUseOf&lt;/a>, runs from highest-yield to last resort. Work through it in order and test after each step.&lt;/p>
&lt;h3 id="1-do-a-ddu-clean-reinstall-in-safe-mode">1. Do a DDU clean reinstall in Safe Mode&lt;/h3>
&lt;p>This single step resolves the largest share of crashes, especially the kind where a new Game Ready or Adrenalin driver broke something that worked fine before. Standard Windows rollback or an over-install leaves enough leftover state behind to keep the bug alive, which is why a clean wipe is the real fix.&lt;/p>
&lt;p>Display Driver Uninstaller (DDU) from Wagnardsoft is the standard tool. Its &lt;a href="https://www.wagnardsoft.com/content/How-use-Display-Driver-Uninstaller-DDU-Guide-Tutorial" rel="noopener">official guidance&lt;/a> is to run it in Safe Mode (strongly recommended), use the &amp;ldquo;Clean and restart&amp;rdquo; option, and disconnect the internet or block Windows Update until your new driver is installed, so Windows does not silently reinstall an old driver behind your back. Download the latest driver straight from NVIDIA or AMD first, then run DDU, then install the fresh driver. As one &lt;a href="https://eatcreatesleep.net/how-a-clean-gpu-driver-install-with-ddu-fixes-stutter-and-crashes/" rel="noopener">community write-up&lt;/a> puts it, the leftover registry and driver-store entries that survive an over-install are exactly what keep regression bugs alive. The same clean reinstall also resolves cases where a driver update makes Windows stop seeing a display — see &lt;a href="https://techfuelhq.com/articles/second-monitor-not-detected-2026/">second monitor not detected&lt;/a>.&lt;/p>
&lt;h3 id="2-revert-every-overclock-and-undervolt-to-stock">2. Revert every overclock and undervolt to stock&lt;/h3>
&lt;p>If you run MSI Afterburner, the tuning sliders in Adrenalin, or Ryzen Master, set everything back to default and test. This includes factory-overclocked &amp;ldquo;OC edition&amp;rdquo; cards, whose aggressive boost behavior is a leading cause of timeouts. It also includes undervolts: an undervolt that is too aggressive starves the card under load and produces black screens and timeouts just like an unstable overclock. AMD&amp;rsquo;s own &lt;a href="https://www.amd.com/en/resources/support-articles/faqs/TS-TIPS.html" rel="noopener">stability guidance&lt;/a> explicitly says to restore default settings if Radeon Software or Ryzen Master were used for overclocking, and to disable third-party performance-monitoring and overclocking utilities entirely while you diagnose.&lt;/p>
&lt;h3 id="3-clear-overlays-and-shader-caches">3. Clear overlays and shader caches&lt;/h3>
&lt;p>Disable in-game and app overlays from Discord, Steam, and Adrenalin, and clear the shader cache. Overlays inject themselves into the render path, and a stale shader cache can replay a corrupt state every launch. This is also a common fix for game-specific crashes, which overlap with anti-cheat conflicts; if a single protected game is the one crashing, our &lt;a href="https://techfuelhq.com/gaming/easy-anti-cheat-fix-guide-2026/">Easy Anti-Cheat fix guide&lt;/a> covers that adjacent failure mode in depth.&lt;/p>
&lt;h3 id="4-update-windows-and-bios-then-test-with-xmpexpo-off">4. Update Windows and BIOS, then test with XMP/EXPO off&lt;/h3>
&lt;p>Update Windows and your motherboard chipset and BIOS, set the BIOS to optimized defaults, and test with your memory profile (XMP, EXPO, or DOCP) turned off. Memory instability is one of Microsoft&amp;rsquo;s named causes, and a too-tight or marginal memory profile is a classic source of TDR. AMD&amp;rsquo;s guidance also recommends verifying the BIOS is on optimized factory defaults, setting &amp;ldquo;Power Supply Idle Control&amp;rdquo; to Typical, and running Windows Memory Diagnostic to rule out RAM. Running the system at stock memory for a day is a fast way to confirm or clear that suspect.&lt;/p>
&lt;h3 id="5-check-power-delivery-and-reseat-the-gpu">5. Check power delivery and reseat the GPU&lt;/h3>
&lt;p>If crashes persist, inspect the physical layer. Check that PSU cables are fully seated, pay special attention to a 12VHPWR connector if your card uses one, and reseat the GPU in its PCIe slot. A borderline or failing PSU is a common and badly underdiagnosed cause of timeouts under load.&lt;/p>
&lt;h3 id="6-disable-mpo-with-nvidias-official-registry-file">6. Disable MPO with NVIDIA&amp;rsquo;s official registry file&lt;/h3>
&lt;p>NVIDIA officially documented that after Game Ready Driver 461.09 and newer, some desktop apps could flicker or stutter, for example when resizing windows, on some configurations because of Windows 11 Multi-Plane Overlay. NVIDIA provides a downloadable &lt;a href="https://nvidia.custhelp.com/app/answers/detail/a_id/5157/" rel="noopener">mpo_disable.reg file&lt;/a> (and a restore file) as the workaround, which requires a reboot. The common third-party method, a DWORD named OverlayTestMode set to 5 under the DWM key, &lt;a href="https://smoothfps.com/solutions/mpo" rel="noopener">may no longer reliably disable MPO&lt;/a> on Windows 11 24H2 and later, so NVIDIA&amp;rsquo;s own file is the authoritative route.&lt;/p>
&lt;h2 id="the-tdrdelay-myth-do-not-do-this">The TdrDelay myth: do not do this&lt;/h2>
&lt;p>Search &amp;ldquo;fix driver stopped responding&amp;rdquo; and you will find dozens of pages telling you to raise the TdrDelay value in the registry. The exact keys live under HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GraphicsDrivers, and &lt;a href="https://learn.microsoft.com/en-us/windows-hardware/drivers/display/tdr-registry-keys" rel="noopener">Microsoft documents&lt;/a> the defaults: TdrLevel is 3, TdrDelay is 2 seconds, TdrDdiDelay is 5 seconds, TdrLimitCount is 5, and TdrLimitTime is 60 seconds.&lt;/p>
&lt;p>Here is the part those guides leave out. Microsoft explicitly warns that these keys are for driver developers and that &amp;ldquo;End users shouldn&amp;rsquo;t manipulate these registry keys.&amp;rdquo; Raising TdrDelay only gives a hung GPU more time before Windows resets or bug-checks it. You get fewer recovery popups and a delayed blue screen, but the unstable overclock, faulty memory, weak power, or broken driver that caused the stall is still there. It is the equivalent of taping over a check-engine light. Fix the cause from the ordered list above instead.&lt;/p>
&lt;h2 id="when-it-really-is-the-driver-and-when-it-is-hardware">When it really is the driver (and when it is hardware)&lt;/h2>
&lt;p>Sometimes a specific driver build genuinely is broken, and a fresh update is the fix. This is a real, current phenomenon. AMD&amp;rsquo;s own &lt;a href="https://www.amd.com/en/resources/support-articles/release-notes/RN-RAD-WIN-26-6-2.html" rel="noopener">known-issues notes for Adrenalin 26.6.x&lt;/a> list intermittent application crashes or driver timeouts on specific hardware while playing specific games. On the NVIDIA side, the RTX 50-series (5080 and 5090) had widespread black-screen and crash issues through early-to-mid 2025, some tied to Multi-Frame Generation and to overclocked cards running at reduced clocks after a reboot. NVIDIA &lt;a href="https://www.tomshardware.com/pc-components/gpus/new-nvidia-geforce-driver-addresses-rtx-50-series-gpu-black-screen-issues" rel="noopener">addressed these&lt;/a> through successive Game Ready drivers, a hotfix, and a vBIOS update. So updating to a fixed build, or rolling back to a known-good one when a new release regressed, is sometimes exactly right.&lt;/p>
&lt;p>But if crashes continue after a DDU clean install, after reverting to stock clocks, and after updating Windows and BIOS, the cause is almost always hardware. At that point you are looking at thermals and throttling, a failing GPU, or a borderline or failing PSU. If the card is throwing &lt;em>visual corruption&lt;/em> — colored lines, snow, or garbled textures — rather than clean crashes, that&amp;rsquo;s a related but distinct symptom; our guide to &lt;a href="https://techfuelhq.com/articles/gpu-artifacts-2026/">GPU artifacts&lt;/a> shows how to tell a dying card from a bad cable or an unstable overclock. And if the card has stopped being &lt;em>detected&lt;/em> altogether — gone from Device Manager, or absent from the BIOS screen — that&amp;rsquo;s a separate diagnostic path; see &lt;a href="https://techfuelhq.com/articles/graphics-card-not-detected-2026/">graphics card not detected&lt;/a> to find where it disappears before assuming the card is dead. If you suspect the card itself is on the way out and you are weighing a replacement, our &lt;a href="https://techfuelhq.com/articles/gpu-hierarchy-2026/">2026 GPU hierarchy&lt;/a> ranks current cards by real performance tier, and the &lt;a href="https://techfuelhq.com/tools/gpu-comparison/">GPU comparison tool&lt;/a> lets you put two specific cards side by side so you can size an upgrade sensibly rather than guessing.&lt;/p>
&lt;h2 id="next-steps-and-related-tools">Next steps and related tools&lt;/h2>
&lt;p>GPU driver crashes are a stability puzzle, not a verdict on your hardware. Start with the DDU clean install, revert your clocks to stock, and only move down the list if the flicker keeps coming back. Skip the TdrDelay registry &amp;ldquo;fix&amp;rdquo; entirely; Microsoft says it is not for you, and it solves nothing.&lt;/p>
&lt;p>If a single anti-cheat-protected game is what crashes rather than your whole desktop, read the &lt;a href="https://techfuelhq.com/gaming/easy-anti-cheat-fix-guide-2026/">Easy Anti-Cheat fix guide&lt;/a> next. If your testing points at a dying card and you need an upgrade, the &lt;a href="https://techfuelhq.com/articles/gpu-hierarchy-2026/">2026 GPU hierarchy&lt;/a> and the &lt;a href="https://techfuelhq.com/tools/gpu-comparison/">GPU comparison tool&lt;/a> will help you pick the right replacement without overspending.&lt;/p></description></item><item><title>FOV Calculator: Convert Field of View Between Aspect Ratios (2026)</title><link>https://techfuelhq.com/tools/fov-calculator/</link><pubDate>Mon, 29 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tools/fov-calculator/</guid><description>&lt;p>This calculator converts a game&amp;rsquo;s field of view between aspect ratios and between horizontal and vertical FOV. Enter your current FOV, say whether it is horizontal or vertical, pick your current aspect ratio, and choose a target - for example converting a 16:9 setting to a 21:9 or 32:9 ultrawide. It uses &lt;strong>Hor+ scaling&lt;/strong>, holding the vertical view constant and widening the horizontal view, which is how most modern PC games behave.&lt;/p>
&lt;p>The honest caveat: &lt;strong>games define FOV differently.&lt;/strong> Some sliders are horizontal, some vertical, and a few old engines use a 4:3 base. The math here is exact geometry, so if a converted number does not match in-game, the usual reason is that your source game uses a different axis than you assumed - switch the horizontal/vertical type and re-check.&lt;/p>
&lt;p>To work out a screen&amp;rsquo;s exact aspect ratio first, use the &lt;a href="https://techfuelhq.com/tools/aspect-ratio-calculator/">Aspect Ratio Calculator&lt;/a>; a wider screen also renders more pixels, so size your GPU with the &lt;a href="https://techfuelhq.com/tools/pc-bottleneck-calculator/">PC Bottleneck Calculator&lt;/a>.&lt;/p>
&lt;h2 id="horizontal-versus-vertical-fov">Horizontal versus vertical FOV&lt;/h2>
&lt;p>A single FOV number is ambiguous unless you know its axis. Horizontal FOV measures the angle across the screen&amp;rsquo;s width, vertical FOV across its height, and for the same scene they are linked by the aspect ratio: the wider the screen, the larger the horizontal figure is relative to the vertical. Many shooters expose horizontal FOV; a lot of newer and console-first engines expose vertical, sometimes labeled just &amp;ldquo;FOV.&amp;rdquo; That mismatch is the single most common reason a converted number does not match in-game, so if it looks off, switch the type and compare again.&lt;/p>
&lt;h2 id="hor-scaling-and-ultrawide">Hor+ scaling and ultrawide&lt;/h2>
&lt;p>Most modern PC games use Hor+ (horizontal-plus) scaling: they hold the vertical field of view fixed and extend the horizontal to fill a wider screen. That is why a well-behaved game on an ultrawide shows more of the world at the sides rather than a stretched or zoomed image. The opposite, Vert- scaling, crops the top and bottom instead, which is what you get in games that do not properly support ultrawide. This tool uses Hor+, so converting a 16:9 setting to 21:9 holds the vertical view steady and widens the horizontal, matching how a correct game behaves.&lt;/p>
&lt;h2 id="what-fov-to-actually-use">What FOV to actually use&lt;/h2>
&lt;p>There is no single right value, but some anchors help. On 16:9, many players land between 90 and 105 degrees horizontal: higher feels more aware and is popular in competitive shooters, lower feels more cinematic. If you get motion sickness, a higher FOV usually helps by reducing the zoomed-in, swimming feel. Sitting closer to a bigger screen also argues for more FOV. On ultrawide, keep your vertical comfort level and let the horizontal number rise, which this tool does for you. Try a value, play a session, adjust. To confirm your screen&amp;rsquo;s exact ratio first, use the &lt;a href="https://techfuelhq.com/tools/aspect-ratio-calculator/">Aspect Ratio Calculator&lt;/a>.&lt;/p></description></item><item><title>Frame Generation Explained: DLSS 4, FSR &amp; AFMF (2026)</title><link>https://techfuelhq.com/articles/frame-generation-explained-2026/</link><pubDate>Mon, 29 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/frame-generation-explained-2026/</guid><description>&lt;p>Frame generation is a smoothness multiplier, not a performance fix. That single sentence solves most of the confusion around DLSS 4, FSR, and AMD&amp;rsquo;s Fluid Motion Frames. The technology shines only when you already have a healthy base framerate, roughly 50 to 60 fps native before you switch it on, paired with a high-refresh display to actually show the extra frames. Below that floor it makes games look worse because artifacts get magnified, and feel worse because latency stays tied to your low base rate even as the fps counter balloons. That is exactly the situation struggling players are tempted to &amp;ldquo;fix&amp;rdquo; with it, which is the worst possible time to use it.&lt;/p>
&lt;p>The honest framing most guides skip: the fps number frame generation reports is a fluency metric, not a responsiveness metric. Once you separate those two ideas, every other decision gets easier.&lt;/p>
&lt;h2 id="how-frame-generation-actually-works">How Frame Generation Actually Works&lt;/h2>
&lt;p>Frame generation creates entirely new, AI-built frames and inserts them between traditionally rendered frames to raise the displayed frame rate, rather than rendering those extra frames in the game engine. Every consumer implementation today, NVIDIA DLSS, AMD FSR, and AMD AFMF, is interpolation-based: the system sits between two real frames and generates the in-between frame, &lt;a href="https://www.nvidia.com/en-us/geforce/news/dlss3-ai-powered-neural-graphics-innovations/" rel="noopener">as NVIDIA describes in its DLSS documentation&lt;/a>.&lt;/p>
&lt;p>That word, interpolation, is the whole story. To insert a frame between frame A and frame B, the system needs both A and B in hand first. So it holds back frame A, waits for frame B to finish rendering, builds the middle frame, then releases all of them in order. &lt;a href="https://www.pcgamer.com/hardware/handheld-gaming-pcs/extrapolation-is-the-future-of-frame-generation-without-the-latency-hit-and-its-not-far-off/" rel="noopener">That buffering is why interpolation inherently adds latency&lt;/a>. The generated frame is built from past data, so it physically cannot reduce input-to-display responsiveness. The only real lever to shrink that latency cost is a higher base framerate, because shorter frame times mean less waiting.&lt;/p>
&lt;p>If you want to understand whether your own system is even GPU-limited enough to benefit, run your build through our &lt;a href="https://techfuelhq.com/tools/pc-bottleneck-calculator/">PC bottleneck calculator&lt;/a> first. A CPU-bound game gets little from frame generation no matter what the marketing slides promise, and &lt;a href="https://techfuelhq.com/gaming/star-citizen/star-citizen-best-settings-fps-2026/">Star Citizen is the extreme case&lt;/a>: it is limited by the CPU and the server, and as of Alpha 4.5 it does not support frame generation at all.&lt;/p>
&lt;h2 id="dlss-3-vs-dlss-4-one-extra-frame-vs-three">DLSS 3 vs DLSS 4: One Extra Frame vs Three&lt;/h2>
&lt;p>Treating all frame generation as the same thing is the most common mistake, so here is the lineup.&lt;/p>
&lt;p>&lt;strong>DLSS 3 Frame Generation&lt;/strong> launched in 2022. It generates one additional frame per rendered frame for up to a 2X frame-rate multiplier, and NVIDIA marketed up to 4X &amp;ldquo;performance&amp;rdquo; when stacked with DLSS upscaling. It is exclusive to RTX 40 series and newer because it leans on the Ada Lovelace Optical Flow Accelerator and 4th-gen Tensor Cores, &lt;a href="https://www.nvidia.com/en-us/geforce/news/dlss3-ai-powered-neural-graphics-innovations/" rel="noopener">per NVIDIA&amp;rsquo;s own launch material&lt;/a>. Note that the DLSS upscaling portion of those games still runs on RTX 20 and 30 cards; &lt;a href="https://www.pcgamer.com/dlss-3-on-older-GPUs/" rel="noopener">only the frame-generation component is locked out&lt;/a> on older hardware.&lt;/p>
&lt;p>&lt;strong>DLSS 4 Multi Frame Generation&lt;/strong> arrived in January 2025 and generates up to three additional frames per rendered frame in 4X mode, which NVIDIA frames as up to an 8X multiplier with the full DLSS suite. It is exclusive to RTX 50 series Blackwell GPUs, &lt;a href="https://www.nvidia.com/en-us/geforce/news/dlss4-multi-frame-generation-ai-innovations/" rel="noopener">as detailed in NVIDIA&amp;rsquo;s DLSS 4 announcement&lt;/a>. Under the hood, DLSS 4 swapped the older CNN for a &lt;a href="https://www.nvidia.com/en-us/geforce/news/dlss4-multi-frame-generation-ai-innovations/" rel="noopener">transformer-based model that NVIDIA says is 40% faster and uses 30% less VRAM&lt;/a>, running once per rendered frame to produce multiple frames. Blackwell also adds hardware Flip Metering, which moves frame-pacing logic onto the display engine for steadier pacing.&lt;/p>
&lt;p>&lt;strong>DLSS 4.5&lt;/strong>, announced for Spring 2026 and RTX 50 only, adds a second-generation transformer model and pushes the ceiling to a 6X multiplier, five generated frames per rendered frame. It also introduces &lt;a href="https://www.nvidia.com/en-us/geforce/news/dlss-4-5-dynamic-multi-frame-gen-6x-2nd-gen-transformer-super-res/" rel="noopener">Dynamic Multi Frame Generation, which varies the multiplier in real time&lt;/a> to target your display&amp;rsquo;s refresh rate instead of locking to a fixed 2X, 3X, or 4X setting.&lt;/p>
&lt;p>For a deeper image-quality and hardware breakdown of how all of this stacks up against AMD, see our &lt;a href="https://techfuelhq.com/articles/dlss-vs-fsr-2026/">DLSS vs FSR comparison&lt;/a>.&lt;/p>
&lt;h2 id="amds-two-answers-fsr-frame-gen-and-afmf">AMD&amp;rsquo;s Two Answers: FSR Frame Gen and AFMF&lt;/h2>
&lt;p>AMD splits the job into two separate tools, and the distinction matters.&lt;/p>
&lt;p>&lt;strong>FSR Frame Generation&lt;/strong> is the integrated path. It generates one interpolated frame between two consecutive rendered frames, effectively doubling the displayed frame rate, but it needs render-resolution motion vectors, depth, and camera data from the game itself, so a developer has to build it in. The original FSR 3 Frame Generation from 2023 was cross-vendor and ran on a wide range of GPUs, while the newer ML-based FSR &amp;ldquo;Redstone&amp;rdquo; frame generation requires Radeon RX 9000 RDNA 4 and above, &lt;a href="https://gpuopen.com/amd-fsr-framegeneration/" rel="noopener">according to AMD&amp;rsquo;s GPUOpen documentation&lt;/a>. The cross-vendor reach of FSR 3 is real and worth repeating: it &lt;a href="https://www.tomshardware.com/pc-components/gpus/cyberpunk-2077-finally-gets-fsr3-frame-gen-for-non-rtx-gpus-its-not-fsr-31-but-it-works-with-basically-any-graphics-card" rel="noopener">runs on NVIDIA RTX 20, 30, and 40 series and Intel Arc&lt;/a>, unlike DLSS Frame Generation, which is locked to NVIDIA&amp;rsquo;s own RTX 40 and 50 cards.&lt;/p>
&lt;p>&lt;strong>AMD Fluid Motion Frames (AFMF)&lt;/strong> is the driver-level path. It lives in Adrenalin software and works in DirectX 11 and 12 games with no developer integration at all, on Radeon RX 6000 and 7000 and newer, &lt;a href="https://www.pcgamer.com/amd-fluid-motion-frames-finally-goes-official-driver-based-frame-generation-for-any-dx1112-game/" rel="noopener">as AMD describes it&lt;/a>. The tradeoff is built into how it operates. Because it runs at the driver level, it has no in-game motion vectors, so generated frames can include UI and HUD artifacts. &lt;a href="https://www.amd.com/en/products/software/adrenalin/afmf.html" rel="noopener">AFMF 2 improved latency and added Borderless Fullscreen plus Vulkan and OpenGL support&lt;/a>, and the 2.1 revision reduced ghosting and overlay-text problems. AFMF also disables itself during fast camera motion to avoid heavy artifacting, which is why panning quickly can produce an on-off &amp;ldquo;judder&amp;rdquo; feel.&lt;/p>
&lt;h2 id="the-latency-tradeoff-nobody-puts-on-the-box">The Latency Tradeoff Nobody Puts on the Box&lt;/h2>
&lt;p>Enabling frame generation does not reduce input lag. On its own it raises latency. NVIDIA Reflex and Reflex 2, and AMD Anti-Lag and Anti-Lag 2, exist to claw that penalty back toward, not below, your native baseline. &lt;a href="https://www.nvidia.com/en-us/geforce/technologies/reflex/" rel="noopener">They make the penalty less severe; they do not make generated frames as responsive as real ones&lt;/a>. Pairing frame generation with Reflex or Anti-Lag is not optional polish. It is the thing that keeps the whole feature usable.&lt;/p>
&lt;p>The newer end of this is meaningful. &lt;a href="https://www.nvidia.com/en-us/geforce/news/reflex-2-even-lower-latency-gameplay-with-frame-warp/" rel="noopener">Reflex 2 with Frame Warp reduces PC latency by up to 75%&lt;/a> by reprojecting the final rendered frame to your most recent input right before display. NVIDIA&amp;rsquo;s cited example in THE FINALS at 4K max on an RTX 5070 goes from 56ms unoptimized to 27ms with Reflex to 14ms with Reflex 2 Frame Warp. That is a real responsiveness gain, but notice it is a separate technology layered on top of frame generation, not a property of frame generation itself.&lt;/p>
&lt;h2 id="where-the-base-framerate-floor-comes-from">Where the Base-Framerate Floor Comes From&lt;/h2>
&lt;p>This is the line the rest of the internet keeps blurring. Vendor guidance is surprisingly consistent: &lt;a href="https://www.pcgamingwiki.com/wiki/Glossary:Frame_generation" rel="noopener">AMD recommends roughly 60 fps before enabling FSR 3 Frame Generation and says sub-30 fps should be absolutely avoided&lt;/a>, Intel recommends a 40 fps minimum with 60 ideal for XeSS, and NVIDIA recommends targeting at least roughly 120 fps output with a high-refresh monitor to display the extra frames.&lt;/p>
&lt;p>Independent testing backs this up. &lt;a href="https://www.techspot.com/article/2945-nvidia-dlss-4/" rel="noopener">Digital Foundry found that with a 40 to 60 fps base before frame gen, games felt responsive&lt;/a>, and that most of the added latency comes from buffering that first extra frame, with additional intermediate frames adding relatively little on top. At a 30 to 40 fps base, the experience is poor and artifacts become much more noticeable. The community widely reports the same thing across r/nvidia, ResetEra, and Steam discussions, landing on &lt;a href="https://www.resetera.com/threads/has-frame-generations-input-latency-improved.1015593/" rel="noopener">roughly a 50 to 60 fps native base as the practical feel-good floor&lt;/a> and disliking it for competitive play.&lt;/p>
&lt;p>Why does a low base make it worse on both axes? Because at a low base the gap between real frames is larger, so there is more to interpolate and each frame sits on screen longer, which makes any error more visible. &lt;a href="https://www.techspot.com/article/3121-frame-gen-wont-fix-performance/" rel="noopener">Generated frames can show ghosting, shimmer, and distortion on fast-moving elements and especially on UI and text&lt;/a>, and those artifacts get worse the lower your base goes. The DLSS 4 transformer model reduces ghosting versus the old CNN, but it does not repeal the math.&lt;/p>
&lt;h2 id="the-fake-frames-debate-fairly">The &amp;ldquo;Fake Frames&amp;rdquo; Debate, Fairly&lt;/h2>
&lt;p>The criticism is not just noise. &lt;a href="https://gamersnexus.net/gpus/fake-frames-tested-dlss-40-mfg-4x-nvidias-misleading-review-guide" rel="noopener">GamersNexus and Hardware Unboxed argue that generated frames are not a like-for-like substitute for rendered ones&lt;/a> because they are interpolated from past frames, carry no new game state, and do not improve responsiveness, so reporting a Multi Frame Generation fps number next to a native fps number is misleading. GamersNexus specifically flags NVIDIA&amp;rsquo;s headline 8X figure as combining 4X Multi Frame Generation with DLSS upscaling set to Performance, which is a quarter-resolution render. The fps tripled or quadrupled; the underlying simulation did not.&lt;/p>
&lt;p>The constructive version of this critique, &lt;a href="https://www.techspot.com/article/3121-frame-gen-wont-fix-performance/" rel="noopener">echoed across tech press, is that frame generation does not fix bad performance&lt;/a>. It should not be used to compensate for poor optimization or to drag a low base up to a &amp;ldquo;playable&amp;rdquo; 60. There is real concern that some developers lean on it as a crutch, occasionally shipping games where frame gen is effectively required to hit advertised framerates. Frame generation multiplies a good base. It does not create one.&lt;/p>
&lt;h2 id="when-to-use-it-and-when-to-turn-it-off">When to Use It, and When to Turn It Off&lt;/h2>
&lt;p>Put simply, this is a single-player, cinematic-game feature. &lt;a href="https://www.tomshardware.com/pc-components/gpus/input-latency-is-the-all-too-frequently-missing-piece-of-framegen-enhanced-gaming-performance-analysis" rel="noopener">Turn frame generation off for competitive and fast-paced multiplayer&lt;/a>, because the added latency directly hurts aim and reaction time and the smoothness gain does not pay for that cost in an esports title. If you bounce between several of those titles, holding one physical cm/360 across them is the other half of consistent aim — that is what the &lt;a href="https://techfuelhq.com/tools/mouse-sensitivity-converter/">mouse sensitivity converter&lt;/a> does. It belongs in visually demanding games where you already hold a solid base framerate and want the motion to look smoother.&lt;/p>
&lt;p>A few practical rules that fall out of the facts above:&lt;/p>
&lt;ul>
&lt;li>Never use it to escape a sub-40 fps base. That is the one place it hurts on both image and feel.&lt;/li>
&lt;li>Always pair it with Reflex or Anti-Lag. The latency penalty is real and these are how you partly offset it.&lt;/li>
&lt;li>It needs a high-refresh display to matter. On a plain 60Hz panel, generating frames above 60 gives little benefit and can introduce tearing without variable refresh rate.&lt;/li>
&lt;li>Match the tech to your card. DLSS Frame Generation needs RTX 40 or 50; FSR 3 Frame Generation runs cross-vendor; the newest ML FSR frame gen needs RDNA 4.&lt;/li>
&lt;/ul>
&lt;p>Looking ahead, &lt;a href="https://www.pcgamer.com/hardware/handheld-gaming-pcs/extrapolation-is-the-future-of-frame-generation-without-the-latency-hit-and-its-not-far-off/" rel="noopener">extrapolation, predicting a future frame from your latest input instead of interpolating between two past frames, is positioned as the path to cut the latency cost&lt;/a>, but as of mid-2026 every mainstream consumer implementation is still interpolation-based.&lt;/p>
&lt;h2 id="where-to-go-next">Where to Go Next&lt;/h2>
&lt;p>If you are deciding which upscaling and frame-generation ecosystem to buy into, our &lt;a href="https://techfuelhq.com/articles/dlss-vs-fsr-2026/">DLSS vs FSR comparison&lt;/a> breaks down image quality and hardware support side by side. Shopping for a card that actually has a high enough base framerate to make frame generation worthwhile at 4K? Start with our &lt;a href="https://techfuelhq.com/articles/best-gpu-4k-gaming-2026/">best GPU for 4K gaming guide&lt;/a> and put two specific cards head to head in the &lt;a href="https://techfuelhq.com/tools/gpu-comparison/">GPU comparison tool&lt;/a>. And before you blame your GPU for low frames at all, run the &lt;a href="https://techfuelhq.com/tools/pc-bottleneck-calculator/">PC bottleneck calculator&lt;/a> to confirm you are GPU-limited rather than CPU-limited, because frame generation only earns its keep when the GPU is the part holding you back.&lt;/p></description></item><item><title>GPU Comparison Tool: Compare Any Two Graphics Cards (2026)</title><link>https://techfuelhq.com/tools/gpu-comparison/</link><pubDate>Mon, 29 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tools/gpu-comparison/</guid><description>&lt;p>This tool compares any two graphics cards head-to-head and shows which is faster, by how much, at the resolution you actually play. Pick two cards and a resolution. The result is a relative performance margin, plus a breakdown at 1080p, 1440p, and 4K so you can see where the gap widens or narrows.&lt;/p>
&lt;p>One honest caveat up front: these are &lt;strong>rasterized gaming scores, not absolute frame rates,&lt;/strong> and they exclude ray tracing and DLSS/FSR upscaling. They are the fairest like-for-like baseline, but a card&amp;rsquo;s standing can shift in ray-traced titles or with frame generation. The most useful thing the tool surfaces is &lt;em>where the winner changes with resolution&lt;/em> — a card that is a hair ahead at 1080p can fall behind at 4K once its VRAM runs short, and that is exactly the kind of buying mistake worth catching early.&lt;/p>
&lt;p>Scores come from the &lt;a href="https://www.tomshardware.com/reviews/gpu-hierarchy,4388.html" rel="noopener">Tom&amp;rsquo;s Hardware GPU benchmarks hierarchy&lt;/a> (rasterized gaming, native resolution), current through June 2026. To check whether your processor can keep up with a given card, pair this with the &lt;a href="https://techfuelhq.com/tools/pc-bottleneck-calculator/">PC Bottleneck Calculator&lt;/a>.&lt;/p>
&lt;h2 id="how-to-read-the-result">How to read the result&lt;/h2>
&lt;p>The number this tool gives you is a relative margin, not a frame rate. If it says one card is 18 percent faster at 1440p, that card&amp;rsquo;s aggregate raster score is 18 percent higher across the benchmark set. In a GPU-bound game that lands close to 18 percent more frames, but it is not a promise for any single title, and it says nothing about the absolute FPS either card hits in the game you actually play. Treat it as the size of the gap. If you have a specific frame-rate target in mind, look up benchmarks for that exact game and settings to turn the gap into real numbers.&lt;/p>
&lt;p>The scores are rasterized, native-resolution results with no upscaling and no ray tracing. That is the fairest like-for-like baseline, but it is a baseline, not the whole story. Turn on heavy ray tracing and NVIDIA cards usually gain ground. Turn on DLSS or FSR with frame generation and either card can jump well past its native result. If those features are central to how you play, add a mental adjustment on top of what you see here.&lt;/p>
&lt;h2 id="where-vram-flips-the-winner">Where VRAM flips the winner&lt;/h2>
&lt;p>The most useful thing this comparison surfaces is the resolution breakdown, because the winner can change between 1080p and 4K. Two cards that trade blows at 1080p can separate hard at 4K, and the usual culprit is video memory. Higher resolutions load bigger textures and frame buffers into VRAM; an 8GB card that was fine at 1080p can run short at 4K and stutter, while a 12GB or 16GB card keeps scaling. Memory bandwidth and cache size matter too, but capacity is the one that produces the obvious, ugly stutters.&lt;/p>
&lt;p>That is why the tool shows the margin at all three resolutions and flags when the faster card actually changes. If you play at 4K, or plan to within the life of the card, weight the 4K column and the VRAM figure more heavily than a 1080p average that will not reflect your reality.&lt;/p>
&lt;h2 id="price-per-frame-beats-raw-speed">Price per frame beats raw speed&lt;/h2>
&lt;p>Raw performance is the wrong number to shop on by itself. The one that matters is price per frame: what you pay for each unit of performance. A card that is 10 percent slower but 25 percent cheaper is usually the better buy, because that 10 percent gap is rarely visible in normal play while the money saved is very real. Run the performance margin here against the actual price gap before you decide.&lt;/p>
&lt;p>There are three cases where paying up for the faster card is worth it: you are chasing a specific frame-rate target the cheaper card cannot reach, the faster card also carries more VRAM that will extend its useful life, or its efficiency and feature set genuinely matter to you. Absent one of those, the cheaper card with the better price per frame is the smarter pick.&lt;/p>
&lt;h2 id="matchups-worth-running">Matchups worth running&lt;/h2>
&lt;p>If you are cross-shopping this generation, the comparisons people run most are the ones where the value line is close. A few worth putting head to head, with full written reviews if you want the detail:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5070-ti-vs-rx-9070-xt-2026/">RTX 5070 Ti vs RX 9070 XT&lt;/a> - the 1440p value fight of the generation.&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5060-ti-vs-rx-9060-xt-1440p-showdown-2026/">RTX 5060 Ti vs RX 9060 XT&lt;/a> - where the 8GB-versus-16GB question bites hardest.&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/gpu-reviews/rtx-4080-vs-rtx-4090/">RTX 4080 vs RTX 4090&lt;/a> - the classic &amp;ldquo;is the halo card worth it&amp;rdquo; call.&lt;/li>
&lt;/ul>
&lt;p>Once you have picked a card, check your processor can keep up with the &lt;a href="https://techfuelhq.com/tools/pc-bottleneck-calculator/">PC Bottleneck Calculator&lt;/a>, or price a full system around it with the &lt;a href="https://techfuelhq.com/tools/pc-builder/">PC Builder&lt;/a>.&lt;/p></description></item><item><title>GPU Hierarchy 2026: Graphics Card Tier List by Performance</title><link>https://techfuelhq.com/articles/gpu-hierarchy-2026/</link><pubDate>Mon, 29 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/gpu-hierarchy-2026/</guid><description>&lt;img src="https://techfuelhq.com/images/articles/gpu-hierarchy-2026.svg" alt="The 2026 GPU tier ladder: 41 graphics cards sorted into five tiers by relative 1440p rasterized performance where the fastest card equals 100. Flagship tier (69.7 to 100, top card RTX 5090), High-end (53.3 to 64.6, RX 7900 XT), Mid-range (40.0 to 51.8, RX 9070 GRE), Budget (30.3 to 37.3, RX 9060 XT 8GB), and Entry (25.0 to 28.4, RTX 4060)." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>This is a 2026 GPU hierarchy: a tier list of 41 modern graphics cards ranked by how they actually perform in games, not by price or marketing. Each card carries a relative performance score at 1080p, 1440p, and 4K, its video memory, and a tier label. The ranking is sorted by 1440p performance — 1080p still leads the Steam Hardware Survey, but 1440p is where most current GPU buying decisions concentrate — and the scores are normalized so the fastest card equals 100.&lt;/p>
&lt;p>There is one idea to hold onto before you read a single row. A GPU hierarchy is not a shopping list; it is a &lt;strong>speed map&lt;/strong>. It tells you how fast each card is relative to every other card, and nothing else. Price, availability, power draw, and driver quirks all sit on top of that map, and in mid-2026 — with a memory shortage pushing street prices well past MSRP (see the &lt;a href="https://techfuelhq.com/articles/ram-ssd-price-crisis-2026/">RAM and SSD price crisis&lt;/a> for why GDDR is caught in the same squeeze) — the price layer moves faster than the performance layer ever will. So read the ranking for &lt;em>where a card lands&lt;/em>, then check the current street price before you buy.&lt;/p>
&lt;p>A note on how to read the numbers: these are &lt;strong>rasterized gaming scores at native resolution&lt;/strong>, the fairest like-for-like baseline across NVIDIA, AMD, and Intel. They exclude ray tracing (which favors NVIDIA in heavy-RT titles) and upscaling like DLSS and FSR (which can lift any card well past its native result). And the single most useful thing this table does that a spec sheet cannot is show you how a card holds up as the resolution climbs. That is where the 8GB cards quietly fall apart — which is worth its own picture.&lt;/p>
&lt;h2 id="the-8gb-problem-in-one-chart">The 8GB problem, in one chart&lt;/h2>
&lt;p>Every card here scores lower at 4K than at 1080p; that is just physics. But some cards fall &lt;em>much&lt;/em> further than others, and the reason is almost always video memory. When a card runs out of VRAM at 4K, it does not slow down gracefully — it stutters, swaps textures, and collapses well below where its raw speed says it should be.&lt;/p>
&lt;p>The cleanest way to see it is to ask how much of a card&amp;rsquo;s relative pace it keeps at 4K. Below, &amp;ldquo;retention&amp;rdquo; is each card&amp;rsquo;s 4K score as a share of its own 1080p score. The pairing that removes all doubt is the RTX 4060 Ti: the &lt;strong>exact same GPU&lt;/strong>, sold in 8GB and 16GB versions, retains dramatically less on the 8GB model. Same silicon, same clocks — only the memory differs.&lt;/p>
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;padding:26px 22px 22px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;border-radius:8px;">
&lt;div style="text-align:center;margin-bottom:8px;">&lt;div style="font-size:18px;font-weight:600;letter-spacing:-0.3px;">4K performance retention&lt;/div>&lt;div style="font-size:12px;color:#9a9ab5;margin-top:5px;">Each card's 4K score as a share of its own 1080p score. Higher = holds its pace at 4K.&lt;/div>&lt;/div>
&lt;div style="max-width:600px;margin:18px auto 0;">
&lt;div style="font-size:11px;color:#e07a7a;text-transform:uppercase;letter-spacing:0.09em;font-weight:700;margin:0 0 10px;">8GB cards &amp;mdash; fall off a cliff&lt;/div>
&lt;div style="display:flex;align-items:center;gap:10px;margin:0 0 8px;">&lt;div style="flex:0 0 128px;font-size:12.5px;color:#c8c8dc;">RTX 4060&lt;/div>&lt;div style="flex:1;background:rgba(255,255,255,0.05);border-radius:4px;height:20px;">&lt;div style="width:45%;background:linear-gradient(90deg,#b84a4a,#e07a7a);height:20px;border-radius:4px;">&lt;/div>&lt;/div>&lt;div style="flex:0 0 40px;font-size:12.5px;font-weight:700;color:#e07a7a;text-align:right;">45%&lt;/div>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:10px;margin:0 0 8px;">&lt;div style="flex:0 0 128px;font-size:12.5px;color:#c8c8dc;">RTX 5060&lt;/div>&lt;div style="flex:1;background:rgba(255,255,255,0.05);border-radius:4px;height:20px;">&lt;div style="width:45%;background:linear-gradient(90deg,#b84a4a,#e07a7a);height:20px;border-radius:4px;">&lt;/div>&lt;/div>&lt;div style="flex:0 0 40px;font-size:12.5px;font-weight:700;color:#e07a7a;text-align:right;">45%&lt;/div>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:10px;margin:0 0 8px;">&lt;div style="flex:0 0 128px;font-size:12.5px;color:#c8c8dc;">RTX 3060 Ti&lt;/div>&lt;div style="flex:1;background:rgba(255,255,255,0.05);border-radius:4px;height:20px;">&lt;div style="width:48%;background:linear-gradient(90deg,#b84a4a,#e07a7a);height:20px;border-radius:4px;">&lt;/div>&lt;/div>&lt;div style="flex:0 0 40px;font-size:12.5px;font-weight:700;color:#e07a7a;text-align:right;">48%&lt;/div>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:10px;margin:0 0 8px;">&lt;div style="flex:0 0 128px;font-size:12.5px;color:#f0b060;">RTX 4060 Ti &lt;span style="color:#e07a7a;font-weight:700;">8GB&lt;/span>&lt;/div>&lt;div style="flex:1;background:rgba(255,255,255,0.05);border-radius:4px;height:20px;">&lt;div style="width:50%;background:linear-gradient(90deg,#b84a4a,#e07a7a);height:20px;border-radius:4px;">&lt;/div>&lt;/div>&lt;div style="flex:0 0 40px;font-size:12.5px;font-weight:700;color:#e07a7a;text-align:right;">50%&lt;/div>&lt;/div>
&lt;div style="font-size:11px;color:#5dca7a;text-transform:uppercase;letter-spacing:0.09em;font-weight:700;margin:18px 0 10px;">12&amp;ndash;16GB cards &amp;mdash; hold their ground&lt;/div>
&lt;div style="display:flex;align-items:center;gap:10px;margin:0 0 8px;">&lt;div style="flex:0 0 128px;font-size:12.5px;color:#f0b060;">RTX 4060 Ti &lt;span style="color:#5dca7a;font-weight:700;">16GB&lt;/span>&lt;/div>&lt;div style="flex:1;background:rgba(255,255,255,0.05);border-radius:4px;height:20px;">&lt;div style="width:64%;background:linear-gradient(90deg,#3fa05f,#5dca7a);height:20px;border-radius:4px;">&lt;/div>&lt;/div>&lt;div style="flex:0 0 40px;font-size:12.5px;font-weight:700;color:#5dca7a;text-align:right;">64%&lt;/div>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:10px;margin:0 0 8px;">&lt;div style="flex:0 0 128px;font-size:12.5px;color:#c8c8dc;">RX 9060 XT 16GB&lt;/div>&lt;div style="flex:1;background:rgba(255,255,255,0.05);border-radius:4px;height:20px;">&lt;div style="width:66%;background:linear-gradient(90deg,#3fa05f,#5dca7a);height:20px;border-radius:4px;">&lt;/div>&lt;/div>&lt;div style="flex:0 0 40px;font-size:12.5px;font-weight:700;color:#5dca7a;text-align:right;">66%&lt;/div>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:10px;margin:0 0 8px;">&lt;div style="flex:0 0 128px;font-size:12.5px;color:#c8c8dc;">RTX 5060 Ti 16GB&lt;/div>&lt;div style="flex:1;background:rgba(255,255,255,0.05);border-radius:4px;height:20px;">&lt;div style="width:70%;background:linear-gradient(90deg,#3fa05f,#5dca7a);height:20px;border-radius:4px;">&lt;/div>&lt;/div>&lt;div style="flex:0 0 40px;font-size:12.5px;font-weight:700;color:#5dca7a;text-align:right;">70%&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="text-align:center;margin-top:18px;font-size:12.5px;color:#c8c8dc;max-width:520px;margin-left:auto;margin-right:auto;line-height:1.5;">The RTX 4060 Ti keeps &lt;strong style="color:#5dca7a;">64%&lt;/strong> of its pace at 4K with 16GB but only &lt;strong style="color:#e07a7a;">50%&lt;/strong> with 8GB. Same chip. That 14-point gap is pure VRAM.&lt;/div>
&lt;div style="text-align:right;margin-top:14px;font-size:10px;color:#44445a;">techfuelhq.com &amp;middot; retention = 4K score / 1080p score, from the Tom's Hardware hierarchy&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>The takeaway is not &amp;ldquo;never buy an 8GB card.&amp;rdquo; It is that an 8GB card is a &lt;strong>1080p card&lt;/strong> in 2026, full stop — and if you are shopping at 1440p or 4K, a slightly slower card with more memory will usually age better than a faster one that runs out of it. Keep that in mind as you read the tiers.&lt;/p>
&lt;h2 id="the-2026-gpu-hierarchy">The 2026 GPU hierarchy&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">#&lt;/th>
&lt;th scope="col">Graphics card&lt;/th>
&lt;th scope="col">1080p&lt;/th>
&lt;th scope="col">1440p&lt;/th>
&lt;th scope="col">4K&lt;/th>
&lt;th scope="col">VRAM&lt;/th>
&lt;th scope="col">Tier&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>1&lt;/td>
&lt;td>GeForce RTX 5090&lt;/td>
&lt;td>100.0&lt;/td>
&lt;td>100.0&lt;/td>
&lt;td>100.0&lt;/td>
&lt;td>32GB&lt;/td>
&lt;td>Flagship&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2&lt;/td>
&lt;td>GeForce RTX 4090&lt;/td>
&lt;td>90.1&lt;/td>
&lt;td>85.7&lt;/td>
&lt;td>80.4&lt;/td>
&lt;td>24GB&lt;/td>
&lt;td>Flagship&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>3&lt;/td>
&lt;td>GeForce RTX 5080&lt;/td>
&lt;td>81.9&lt;/td>
&lt;td>76.7&lt;/td>
&lt;td>69.8&lt;/td>
&lt;td>16GB&lt;/td>
&lt;td>Flagship&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>4&lt;/td>
&lt;td>Radeon RX 7900 XTX&lt;/td>
&lt;td>79.3&lt;/td>
&lt;td>73.1&lt;/td>
&lt;td>63.7&lt;/td>
&lt;td>24GB&lt;/td>
&lt;td>Flagship&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>5&lt;/td>
&lt;td>GeForce RTX 4080 Super&lt;/td>
&lt;td>78.0&lt;/td>
&lt;td>70.9&lt;/td>
&lt;td>62.6&lt;/td>
&lt;td>16GB&lt;/td>
&lt;td>Flagship&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>6&lt;/td>
&lt;td>GeForce RTX 4080&lt;/td>
&lt;td>77.2&lt;/td>
&lt;td>70.3&lt;/td>
&lt;td>60.9&lt;/td>
&lt;td>16GB&lt;/td>
&lt;td>Flagship&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>7&lt;/td>
&lt;td>GeForce RTX 5070 Ti&lt;/td>
&lt;td>76.2&lt;/td>
&lt;td>69.8&lt;/td>
&lt;td>61.9&lt;/td>
&lt;td>16GB&lt;/td>
&lt;td>Flagship&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>8&lt;/td>
&lt;td>Radeon RX 9070 XT&lt;/td>
&lt;td>76.9&lt;/td>
&lt;td>69.7&lt;/td>
&lt;td>59.4&lt;/td>
&lt;td>16GB&lt;/td>
&lt;td>Flagship&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>9&lt;/td>
&lt;td>Radeon RX 7900 XT&lt;/td>
&lt;td>71.3&lt;/td>
&lt;td>64.6&lt;/td>
&lt;td>54.0&lt;/td>
&lt;td>20GB&lt;/td>
&lt;td>High-end&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>10&lt;/td>
&lt;td>GeForce RTX 4070 Ti Super&lt;/td>
&lt;td>69.3&lt;/td>
&lt;td>62.1&lt;/td>
&lt;td>52.8&lt;/td>
&lt;td>16GB&lt;/td>
&lt;td>High-end&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>11&lt;/td>
&lt;td>Radeon RX 9070&lt;/td>
&lt;td>69.1&lt;/td>
&lt;td>62.1&lt;/td>
&lt;td>52.1&lt;/td>
&lt;td>16GB&lt;/td>
&lt;td>High-end&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>12&lt;/td>
&lt;td>GeForce RTX 3090 Ti&lt;/td>
&lt;td>64.7&lt;/td>
&lt;td>59.7&lt;/td>
&lt;td>53.5&lt;/td>
&lt;td>24GB&lt;/td>
&lt;td>High-end&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>13&lt;/td>
&lt;td>GeForce RTX 4070 Ti&lt;/td>
&lt;td>66.3&lt;/td>
&lt;td>58.6&lt;/td>
&lt;td>48.6&lt;/td>
&lt;td>12GB&lt;/td>
&lt;td>High-end&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>14&lt;/td>
&lt;td>GeForce RTX 5070&lt;/td>
&lt;td>65.1&lt;/td>
&lt;td>57.6&lt;/td>
&lt;td>49.0&lt;/td>
&lt;td>12GB&lt;/td>
&lt;td>High-end&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>15&lt;/td>
&lt;td>GeForce RTX 3090&lt;/td>
&lt;td>60.3&lt;/td>
&lt;td>54.7&lt;/td>
&lt;td>47.9&lt;/td>
&lt;td>24GB&lt;/td>
&lt;td>High-end&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>16&lt;/td>
&lt;td>GeForce RTX 4070 Super&lt;/td>
&lt;td>62.2&lt;/td>
&lt;td>54.5&lt;/td>
&lt;td>44.4&lt;/td>
&lt;td>12GB&lt;/td>
&lt;td>High-end&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>17&lt;/td>
&lt;td>Radeon RX 6950 XT&lt;/td>
&lt;td>60.5&lt;/td>
&lt;td>53.5&lt;/td>
&lt;td>43.6&lt;/td>
&lt;td>16GB&lt;/td>
&lt;td>High-end&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>18&lt;/td>
&lt;td>GeForce RTX 3080 Ti&lt;/td>
&lt;td>58.7&lt;/td>
&lt;td>53.3&lt;/td>
&lt;td>46.0&lt;/td>
&lt;td>12GB&lt;/td>
&lt;td>High-end&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>19&lt;/td>
&lt;td>Radeon RX 9070 GRE&lt;/td>
&lt;td>59.2&lt;/td>
&lt;td>51.8&lt;/td>
&lt;td>41.8&lt;/td>
&lt;td>12GB&lt;/td>
&lt;td>Mid-range&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>20&lt;/td>
&lt;td>Radeon RX 7800 XT&lt;/td>
&lt;td>58.1&lt;/td>
&lt;td>50.7&lt;/td>
&lt;td>40.7&lt;/td>
&lt;td>16GB&lt;/td>
&lt;td>Mid-range&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>21&lt;/td>
&lt;td>Radeon RX 6900 XT&lt;/td>
&lt;td>57.4&lt;/td>
&lt;td>50.2&lt;/td>
&lt;td>40.5&lt;/td>
&lt;td>16GB&lt;/td>
&lt;td>Mid-range&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>22&lt;/td>
&lt;td>GeForce RTX 3080 (10GB)&lt;/td>
&lt;td>54.8&lt;/td>
&lt;td>49.0&lt;/td>
&lt;td>39.6&lt;/td>
&lt;td>10GB&lt;/td>
&lt;td>Mid-range&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>23&lt;/td>
&lt;td>Radeon RX 6800 XT&lt;/td>
&lt;td>54.9&lt;/td>
&lt;td>47.6&lt;/td>
&lt;td>38.1&lt;/td>
&lt;td>16GB&lt;/td>
&lt;td>Mid-range&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>24&lt;/td>
&lt;td>GeForce RTX 4070&lt;/td>
&lt;td>54.7&lt;/td>
&lt;td>46.5&lt;/td>
&lt;td>37.2&lt;/td>
&lt;td>12GB&lt;/td>
&lt;td>Mid-range&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>25&lt;/td>
&lt;td>GeForce RTX 5060 Ti 16GB&lt;/td>
&lt;td>51.6&lt;/td>
&lt;td>43.9&lt;/td>
&lt;td>36.3&lt;/td>
&lt;td>16GB&lt;/td>
&lt;td>Mid-range&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>26&lt;/td>
&lt;td>Radeon RX 7700 XT&lt;/td>
&lt;td>50.5&lt;/td>
&lt;td>43.4&lt;/td>
&lt;td>34.3&lt;/td>
&lt;td>12GB&lt;/td>
&lt;td>Mid-range&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>27&lt;/td>
&lt;td>Radeon RX 9060 XT 16GB&lt;/td>
&lt;td>48.2&lt;/td>
&lt;td>40.2&lt;/td>
&lt;td>31.7&lt;/td>
&lt;td>16GB&lt;/td>
&lt;td>Mid-range&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>28&lt;/td>
&lt;td>GeForce RTX 3070 Ti&lt;/td>
&lt;td>46.4&lt;/td>
&lt;td>40.0&lt;/td>
&lt;td>23.5&lt;/td>
&lt;td>8GB&lt;/td>
&lt;td>Mid-range&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>29&lt;/td>
&lt;td>Radeon RX 9060 XT 8GB&lt;/td>
&lt;td>45.7&lt;/td>
&lt;td>37.3&lt;/td>
&lt;td>26.8&lt;/td>
&lt;td>8GB&lt;/td>
&lt;td>Budget&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>30&lt;/td>
&lt;td>GeForce RTX 4060 Ti 16GB&lt;/td>
&lt;td>43.8&lt;/td>
&lt;td>36.2&lt;/td>
&lt;td>28.2&lt;/td>
&lt;td>16GB&lt;/td>
&lt;td>Budget&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>31&lt;/td>
&lt;td>GeForce RTX 5060&lt;/td>
&lt;td>43.4&lt;/td>
&lt;td>35.8&lt;/td>
&lt;td>19.6&lt;/td>
&lt;td>8GB&lt;/td>
&lt;td>Budget&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>32&lt;/td>
&lt;td>GeForce RTX 4060 Ti 8GB&lt;/td>
&lt;td>43.2&lt;/td>
&lt;td>35.2&lt;/td>
&lt;td>21.5&lt;/td>
&lt;td>8GB&lt;/td>
&lt;td>Budget&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>33&lt;/td>
&lt;td>GeForce RTX 3070&lt;/td>
&lt;td>42.8&lt;/td>
&lt;td>34.8&lt;/td>
&lt;td>23.6&lt;/td>
&lt;td>8GB&lt;/td>
&lt;td>Budget&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>34&lt;/td>
&lt;td>Radeon RX 6750 XT&lt;/td>
&lt;td>40.8&lt;/td>
&lt;td>34.4&lt;/td>
&lt;td>26.7&lt;/td>
&lt;td>12GB&lt;/td>
&lt;td>Budget&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>35&lt;/td>
&lt;td>Radeon RX 6700 XT&lt;/td>
&lt;td>38.9&lt;/td>
&lt;td>32.5&lt;/td>
&lt;td>25.3&lt;/td>
&lt;td>12GB&lt;/td>
&lt;td>Budget&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>36&lt;/td>
&lt;td>GeForce RTX 3060 Ti&lt;/td>
&lt;td>36.4&lt;/td>
&lt;td>30.5&lt;/td>
&lt;td>17.5&lt;/td>
&lt;td>8GB&lt;/td>
&lt;td>Budget&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>37&lt;/td>
&lt;td>Intel Arc B580&lt;/td>
&lt;td>35.1&lt;/td>
&lt;td>30.3&lt;/td>
&lt;td>24.9&lt;/td>
&lt;td>12GB&lt;/td>
&lt;td>Budget&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>38&lt;/td>
&lt;td>GeForce RTX 4060&lt;/td>
&lt;td>35.1&lt;/td>
&lt;td>28.4&lt;/td>
&lt;td>15.7&lt;/td>
&lt;td>8GB&lt;/td>
&lt;td>Entry&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>39&lt;/td>
&lt;td>Radeon RX 7600&lt;/td>
&lt;td>34.3&lt;/td>
&lt;td>27.2&lt;/td>
&lt;td>16.6&lt;/td>
&lt;td>8GB&lt;/td>
&lt;td>Entry&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>40&lt;/td>
&lt;td>Intel Arc B570&lt;/td>
&lt;td>31.1&lt;/td>
&lt;td>26.5&lt;/td>
&lt;td>17.7&lt;/td>
&lt;td>10GB&lt;/td>
&lt;td>Entry&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>41&lt;/td>
&lt;td>GeForce RTX 3060 12GB&lt;/td>
&lt;td>30.2&lt;/td>
&lt;td>25.0&lt;/td>
&lt;td>20.0&lt;/td>
&lt;td>12GB&lt;/td>
&lt;td>Entry&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Scores are relative (fastest card = 100) from the &lt;a href="https://www.tomshardware.com/reviews/gpu-hierarchy,4388.html" rel="noopener">Tom&amp;rsquo;s Hardware GPU benchmark hierarchy&lt;/a>, rasterized gaming at native resolution, current through June 2026.&lt;/p>
&lt;h2 id="how-to-use-the-tiers">How to use the tiers&lt;/h2>
&lt;p>&lt;strong>Flagship (8 cards).&lt;/strong> The fastest cards available, built for 4K gaming and high-refresh 1440p. This is where you pay the steepest price-per-frame premium, so buy here only if you genuinely game at 4K or chase very high frame rates; the value is worse than the tiers below by design.&lt;/p>
&lt;p>&lt;strong>High-end (10 cards).&lt;/strong> Comfortable 1440p at high refresh and capable 4K with some settings management. For most enthusiasts this tier is the sensible ceiling: most of the performance of a flagship at a meaningfully lower price.&lt;/p>
&lt;p>&lt;strong>Mid-range (10 cards).&lt;/strong> The volume sweet spot. These cards run 1440p well and 1080p at high refresh, and they tend to offer the best performance per dollar. Most gamers are best served here, especially paired with a 1440p monitor.&lt;/p>
&lt;p>&lt;strong>Budget (9 cards).&lt;/strong> Built for 1080p high-refresh and entry 1440p. Watch the VRAM: 8GB at this tier is increasingly tight in new 2026 titles, so a slightly slower card with more memory can age better.&lt;/p>
&lt;p>&lt;strong>Entry (4 cards).&lt;/strong> The floor for modern gaming at 1080p with adjusted settings. Fine for esports and lighter titles; plan to lower settings in the most demanding games. Below this tier sits NVIDIA&amp;rsquo;s &lt;strong>RTX 5050&lt;/strong> — a $249, 8GB, 130W card that lands roughly a step under the RTX 4060 and is built strictly for 1080p. It is the cheapest current-generation new card, and its whole pitch rests on DLSS 4 and frame generation rather than raw silicon, so treat its native raster standing as entry-tier and lean on upscaling to stretch it.&lt;/p>
&lt;h2 id="reading-the-brands">Reading the brands&lt;/h2>
&lt;p>Sort the ranking by tier and a pattern falls out. At the very top, &lt;strong>NVIDIA owns the halo&lt;/strong>: the RTX 5090 and &lt;a href="https://techfuelhq.com/gpu-reviews/rtx-4080-vs-rtx-4090/">4090&lt;/a> have no AMD answer, and if you want the single fastest card, that is the conversation. Drop into High-end and Mid-range and &lt;strong>AMD gets far more interesting&lt;/strong> — the &lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5070-ti-vs-rx-9070-xt-2026/">RX 9070 XT&lt;/a>, &lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5070-vs-rx-9070-2026/">9070&lt;/a>, and 7800 XT deliver flagship-adjacent raster for meaningfully less, and AMD has been more generous with VRAM at every price, which the retention chart above rewards. &lt;strong>Intel&amp;rsquo;s Arc B580 and B570&lt;/strong> are the wildcards: they punch above their raster score in value terms and carry a healthy 12GB and 10GB of memory, but they lean on newer drivers and are best for a fresh 1080p build rather than a drop-in upgrade.&lt;/p>
&lt;p>Two caveats this raster ranking deliberately hides. Turn on heavy ray tracing and the order tilts toward NVIDIA, sometimes by a lot. Turn on upscaling and frame generation and any card can leap well past its native line — DLSS 4 Multi-Frame Generation in particular flatters the RTX 50-series. The hierarchy is the honest native-raster baseline; those two levers are yours to add back based on the games you actually play.&lt;/p>
&lt;h2 id="pick-the-right-card-for-your-build">Pick the right card for your build&lt;/h2>
&lt;p>A hierarchy tells you raw speed, but the right card depends on your resolution, your CPU, and your budget. To compare any two cards head-to-head at your resolution, use the &lt;a href="https://techfuelhq.com/tools/gpu-comparison/">GPU Comparison Tool&lt;/a>. To check whether your processor can keep up with a given card (or whether you are about to create a bottleneck), use the &lt;a href="https://techfuelhq.com/tools/pc-bottleneck-calculator/">PC Bottleneck Calculator&lt;/a>. For a worked 1440p build around a mid-range card, see the &lt;a href="https://techfuelhq.com/pc-builds/1500-dollar-rtx-5060-ti-1440p-build-2026/">$1,500 RTX 5060 Ti 1440p build&lt;/a>. For hands-on takes on where specific cards land, our head-to-head reviews go deeper — the &lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5060-ti-vs-rx-9060-xt-1440p-showdown-2026/">RTX 5060 Ti vs RX 9060 XT 1440p showdown&lt;/a> and the &lt;a href="https://techfuelhq.com/gpu-reviews/rog-astral-rtx-5080-oc-review-2026/">ROG Astral RTX 5080 review&lt;/a> among them. And once you have picked a card, the &lt;a href="https://techfuelhq.com/articles/how-to-undervolt-gpu-2026/">complete GPU undervolting guide&lt;/a> shows how to run it cooler, quieter, and often a little faster — with real per-card settings in the &lt;a href="https://techfuelhq.com/articles/gpu-undervolt-settings-database/">undervolt results database&lt;/a>.&lt;/p></description></item><item><title>How to Fix Screen Tearing (2026): VRR, V-Sync &amp; FPS Caps</title><link>https://techfuelhq.com/articles/fix-screen-tearing-2026/</link><pubDate>Mon, 29 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/fix-screen-tearing-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-29 · ~8 min read · St. Louis County, MO&lt;/p>
&lt;p>The old advice was simple: see a tear, turn on V-Sync. In 2026 that advice is mostly wrong. Screen tearing is not something you fix by toggling one checkbox anymore. The real fix is variable refresh rate, which means G-Sync, FreeSync, or the open VESA Adaptive-Sync standard, paired with a frame-rate cap set a few frames below your monitor&amp;rsquo;s maximum refresh. V-Sync still exists, and it still kills tearing, but it has become the fallback for people without a VRR monitor, not the default. This guide ranks the fixes from best to last resort and gives you exact, copy-pasteable numbers and click paths.&lt;/p>
&lt;h2 id="what-screen-tearing-actually-is">What screen tearing actually is&lt;/h2>
&lt;p>Tearing comes from a timing mismatch. Your GPU writes a new frame to the framebuffer while the monitor is partway through drawing the previous one, so a single screen scan ends up showing parts of two or more frames at once. That produces the familiar horizontal split or line across the image, usually most visible during fast horizontal camera pans — a line that exists only while the picture is moving, unlike the &lt;a href="https://techfuelhq.com/articles/lines-on-monitor-screen-2026/">persistent lines on a monitor&lt;/a> that point at a cable, a port, or a dying panel. The key technical detail, explained well by &lt;a href="https://www.displayninja.com/what-is-screen-tearing/" rel="noopener">DisplayNinja&lt;/a>, is that the GPU and the monitor are simply not synchronized.&lt;/p>
&lt;p>There is a common misconception worth clearing up early. Tearing is not only a too-many-frames problem. It can occur both when your frame rate is higher than your refresh rate, which is the most obvious case, and when it is lower than your refresh rate. So capping your frame rate alone does not make tearing go away. The cap has a job, but eliminating tearing is not it. (If your problem is a faint trail &lt;em>following&lt;/em> moving objects rather than a clean horizontal split, that&amp;rsquo;s a different artifact entirely — see &lt;a href="https://techfuelhq.com/articles/how-to-fix-monitor-ghosting-2026/">how to fix monitor ghosting&lt;/a>.)&lt;/p>
&lt;h2 id="the-best-fix-vrr-plus-an-fps-cap">The best fix: VRR plus an FPS cap&lt;/h2>
&lt;p>Variable refresh rate flips the relationship between GPU and monitor. Instead of forcing the GPU to wait on a fixed refresh, VRR makes the monitor dynamically change its refresh rate to match the GPU&amp;rsquo;s frame rate in real time, as long as that frame rate stays within the monitor&amp;rsquo;s supported VRR range. DisplayNinja gives a clean example: if your game is running at 65 FPS, the panel shifts to 65Hz to match, which eliminates both tearing and stutter with only about a 1ms input-lag penalty. That is a fraction of what V-Sync costs.&lt;/p>
&lt;p>There are three flavors. VESA Adaptive-Sync is the open standard, introduced by VESA in 2014 under DisplayPort 1.2a. AMD FreeSync is built on top of Adaptive-Sync, which is why it is open, royalty-free, and needs no proprietary monitor hardware, per &lt;a href="https://www.amd.com/en/products/graphics/technologies/freesync.html" rel="noopener">AMD&amp;rsquo;s FreeSync page&lt;/a>. NVIDIA&amp;rsquo;s original G-Sync uses a proprietary scaler module embedded in the monitor and typically supports VRR from 1Hz all the way to the panel&amp;rsquo;s max refresh.&lt;/p>
&lt;p>You do not need matching brands. NVIDIA GPUs can drive FreeSync and Adaptive-Sync monitors through the G-Sync Compatible program — supported since the January 2019 driver on GTX 10-series cards and everything newer — so VRR is no longer locked to one vendor. As &lt;a href="https://www.rtings.com/monitor/learn/how-to-enable-g-sync" rel="noopener">RTINGS notes&lt;/a>, true G-Sync module monitors historically cost roughly $100 to $200 more than comparable FreeSync panels because of the proprietary chip and licensing. For most people, a certified Adaptive-Sync monitor is the better value.&lt;/p>
&lt;h2 id="enabling-g-sync-nvidia">Enabling G-Sync (NVIDIA)&lt;/h2>
&lt;p>Per &lt;a href="https://www.nvidia.com/content/Control-Panel-Help/vLatest/en-us/mergedProjects/nvdsp/To_use_variable_refresh_rates.htm" rel="noopener">NVIDIA&amp;rsquo;s own control panel documentation&lt;/a>, the steps are:&lt;/p>
&lt;ol>
&lt;li>Open the NVIDIA Control Panel.&lt;/li>
&lt;li>Go to Display, then &amp;ldquo;Set up G-SYNC.&amp;rdquo;&lt;/li>
&lt;li>Check &amp;ldquo;Enable G-SYNC / G-SYNC Compatible.&amp;rdquo;&lt;/li>
&lt;li>Choose &amp;ldquo;Enable for full screen mode&amp;rdquo; or &amp;ldquo;Enable for windowed and full screen mode.&amp;rdquo;&lt;/li>
&lt;/ol>
&lt;p>The prerequisite is a G-Sync-capable or G-Sync Compatible display connected, enabled, and set as your primary display. To confirm it is actually working, turn on &amp;ldquo;Show indicator for G-SYNC&amp;rdquo; in the Display menu, which puts an on-screen overlay up in-game when VRR is active.&lt;/p>
&lt;h2 id="enabling-freesync-amd">Enabling FreeSync (AMD)&lt;/h2>
&lt;p>The AMD path is shorter because, per &lt;a href="https://www.amd.com/en/resources/support-articles/faqs/DH3-013.html" rel="noopener">AMD&amp;rsquo;s support FAQ&lt;/a>, FreeSync is enabled globally by default on systems with a compatible AMD GPU and a FreeSync-certified display. To check or toggle it:&lt;/p>
&lt;ol>
&lt;li>Open AMD Software: Adrenalin Edition.&lt;/li>
&lt;li>Go to Settings (the gear icon), then Display.&lt;/li>
&lt;li>Confirm or toggle &amp;ldquo;AMD FreeSync.&amp;rdquo;&lt;/li>
&lt;/ol>
&lt;p>Per game, you can set FreeSync to &amp;ldquo;AMD Optimized,&amp;rdquo; which is the default, or &amp;ldquo;On,&amp;rdquo; or &amp;ldquo;Off&amp;rdquo; in the application profile.&lt;/p>
&lt;h2 id="the-critical-step-cap-your-fps-below-refresh">The critical step: cap your FPS below refresh&lt;/h2>
&lt;p>This is where most people go wrong. Enabling VRR is only half the fix. You also need a frame-rate cap a few frames below your monitor&amp;rsquo;s maximum refresh so you stay inside the variable-refresh window. Per &lt;a href="https://blurbusters.com/gsync/gsync101-input-lag-tests-and-settings/" rel="noopener">Blur Busters&amp;rsquo; G-SYNC 101 testing&lt;/a>, the tested safe target is about 3 FPS below your max refresh:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Refresh rate&lt;/th>
&lt;th scope="col">Cap to&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>60Hz&lt;/td>
&lt;td>57 FPS&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>100Hz&lt;/td>
&lt;td>97 FPS&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>120Hz&lt;/td>
&lt;td>117 FPS&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>144Hz&lt;/td>
&lt;td>141 FPS&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>165Hz&lt;/td>
&lt;td>156 FPS&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>240Hz&lt;/td>
&lt;td>233 FPS&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The minus-3 figure is the tested minimum; some setups need a slightly larger margin depending on the limiter or the game. Whatever you do, do not cap exactly at your refresh rate. Capping 144 on a 144Hz panel pushes you up against the ceiling, which kicks you out of the VRR range and brings tearing or V-Sync lag right back.&lt;/p>
&lt;h2 id="the-enthusiast-combo-g-sync--v-sync--cap">The enthusiast combo: G-Sync + V-Sync + cap&lt;/h2>
&lt;p>Here is the counterintuitive part. Blur Busters&amp;rsquo; G-SYNC 101 testing found that the lowest tear-free latency comes from running G-Sync ON, V-Sync ON in the NVIDIA Control Panel (not in-game), keeping your frame rate inside the refresh range, and keeping GPU usage below about 99 percent. The reason this works is subtle but important. When V-Sync is on, G-Sync reverts to V-Sync behavior above its range, so there is no tearing at the ceiling. When V-Sync is off, G-Sync disables above its range and tearing returns display-wide.&lt;/p>
&lt;p>So the combination of G-Sync + V-Sync On + an FPS cap gives you tear-free output across the entire range. The cap, not V-Sync, is what keeps latency low, because the cap keeps you out of the V-Sync region in normal play. V-Sync only ever activates at the very top edge as a safety net. One more detail from the &lt;a href="https://forums.blurbusters.com/viewtopic.php?t=7554" rel="noopener">Blur Busters forums&lt;/a>: turn in-game V-Sync off while leaving driver V-Sync on, and disable every in-game &amp;ldquo;Vertical Sync&amp;rdquo; or &amp;ldquo;Triple Buffering&amp;rdquo; option so the game does not quietly enable its own higher-latency sync path. The game should think it is running with V-Sync off.&lt;/p>
&lt;h2 id="add-nvidia-reflex-when-the-game-supports-it">Add NVIDIA Reflex when the game supports it&lt;/h2>
&lt;p>NVIDIA Reflex reduces system latency by aligning game engine work to finish just in time for rendering, which eliminates the GPU render queue and reduces CPU back-pressure in GPU-bound scenes. Per &lt;a href="https://www.nvidia.com/en-us/geforce/news/reflex-low-latency-platform/" rel="noopener">NVIDIA&lt;/a>, it cites up to about a 33 percent responsiveness improvement on a GTX 1660 Super, and it works best when you are GPU-bound. Importantly, when you enable Reflex alongside G-Sync and V-Sync, Reflex automatically caps your frame rate just below the refresh rate, so you do not need a manual cap in Reflex-supported games.&lt;/p>
&lt;p>The community-recommended modern setup follows from this: if a game supports Reflex, enable G-Sync, V-Sync (driver), and Reflex, then run uncapped in-game and let Reflex&amp;rsquo;s built-in limiter handle the cap. For games without Reflex, set the cap yourself at about 3 FPS below refresh, preferring the in-game limiter when one exists.&lt;/p>
&lt;h2 id="the-non-vrr-options-fast-sync-enhanced-sync-and-plain-v-sync">The non-VRR options: Fast Sync, Enhanced Sync, and plain V-Sync&lt;/h2>
&lt;p>If you are stuck on a fixed-refresh monitor with no VRR, you still have choices. NVIDIA Fast Sync and AMD Enhanced Sync are a different class of fix. Per &lt;a href="https://www.displayninja.com/what-is-nvidia-fast-sync-and-amd-enhanced-sync/" rel="noopener">DisplayNinja&lt;/a>, they let the GPU render uncapped above the refresh rate while still showing only the most recently completed full frame, which eliminates tearing without V-Sync&amp;rsquo;s hard wait. The catch is that they work best when your FPS is well above refresh, ideally around twice your refresh or more, so there are spare frames to drop. Below refresh they do not help and can stutter. That makes them a fit for very-high-FPS esports titles on a non-VRR display, and a poor fit for everything else.&lt;/p>
&lt;p>Plain V-Sync is the last resort. It stops tearing by forcing the GPU to hold each finished frame until the monitor&amp;rsquo;s next refresh, but per &lt;a href="https://www.techspot.com/article/2192-screen-tearing-fix-pc-gaming/" rel="noopener">TechSpot&lt;/a>, double-buffered V-Sync at 60Hz adds roughly up to 33ms of input lag, about one to two frames. Worse, with plain double-buffered V-Sync, if your frame rate drops below your refresh rate the GPU misses the refresh window and V-Sync drops you to the next divisor. As DisplayNinja describes, that essentially halves you from 60 to 30 FPS at 60Hz, producing stutter that can feel worse than the tearing you were trying to fix. Triple buffering softens this by giving the GPU a second back buffer so it does not have to stall.&lt;/p>
&lt;h2 id="common-mistakes-to-avoid">Common mistakes to avoid&lt;/h2>
&lt;ul>
&lt;li>Capping AT your refresh rate instead of below it. Cap below, around minus 3, to stay inside the VRR window.&lt;/li>
&lt;li>Turning V-Sync off with G-Sync. Backwards. Driver V-Sync on plus an FPS cap below refresh is the low-latency, tear-free setup.&lt;/li>
&lt;li>Doubling up in-game and driver V-Sync. Use driver V-Sync on and in-game V-Sync off.&lt;/li>
&lt;li>Expecting a frame-rate cap alone to fix tearing. Per a &lt;a href="https://us.ktcplay.com/blogs/news/fix-screen-tearing-guide" rel="noopener">community guide&lt;/a>, a cap with no VRR or sync mode only reduces how often and how severely tearing shows up, because the GPU and monitor are still unsynchronized. The cap&amp;rsquo;s real job is to keep you inside the VRR range.&lt;/li>
&lt;li>Thinking frame generation fixes tearing. It does not. Frame generation and upscaling raise smoothness, not synchronization.&lt;/li>
&lt;/ul>
&lt;p>A quick note on frame generation, since people conflate it with sync. DLSS 4 on the RTX 50 series and AMD&amp;rsquo;s FSR 4 line are performance and smoothness features, not tearing fixes. AMD itself ships them alongside, not instead of, VRR, and as &lt;a href="https://www.pcgamer.com/hardware/graphics-cards/amd-bringing-fsr-4-1-ml-powered-upscaling-to-rx-7000-series-in-july-rx-6000-series-in-2027/" rel="noopener">PC Gamer reports&lt;/a>, FSR 4.1 reached the RX 7000 series on June 22, 2026 as an FPS feature. If you want to understand how that interpolation works and why it still needs VRR underneath it, read our breakdown of &lt;a href="https://techfuelhq.com/articles/frame-generation-explained-2026/">frame generation explained&lt;/a>.&lt;/p>
&lt;h2 id="where-to-go-from-here">Where to go from here&lt;/h2>
&lt;p>Screen tearing is one of the few PC problems with a clean answer in 2026: turn on VRR, cap a few frames below your refresh, and leave driver V-Sync on as a ceiling. If you are still figuring out whether your GPU and CPU are well matched for the frame rates you are targeting, run the numbers through our &lt;a href="https://techfuelhq.com/tools/pc-bottleneck-calculator/">PC bottleneck calculator&lt;/a> so your cap targets are realistic for your hardware. And if your tearing only shows up in certain games, your render path may be part of the story, which is why it is worth reading how &lt;a href="https://techfuelhq.com/gaming/dx12-vs-dx11-fps-2026/">DX12 and DX11 differ for FPS&lt;/a> before you blame the monitor.&lt;/p></description></item><item><title>Mouse Sensitivity Converter &amp; eDPI Calculator (2026)</title><link>https://techfuelhq.com/tools/mouse-sensitivity-converter/</link><pubDate>Mon, 29 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tools/mouse-sensitivity-converter/</guid><description>&lt;p>This converter keeps your aim consistent when you switch games. Enter your mouse DPI, your current game, and its in-game sensitivity, then choose the game you want to play. The tool returns the sensitivity that preserves your &lt;strong>cm/360&lt;/strong> - the physical distance you move the mouse to turn a full circle - so your muscle memory transfers intact. It also shows your &lt;strong>eDPI&lt;/strong> and your exact 360 distance in centimeters and inches.&lt;/p>
&lt;p>The method is the one every serious sensitivity converter uses. Each game has a documented &lt;strong>yaw&lt;/strong>, the degrees your view rotates per mouse count at sensitivity 1. Source-engine games like CS2 and Apex share a yaw of 0.022, so they convert one to one; Valorant uses 0.07; the Overwatch 2 and Call of Duty family uses 0.0066. To match your feel in a new game, the target sensitivity is your sensitivity times your game&amp;rsquo;s yaw divided by the target game&amp;rsquo;s yaw, which holds your cm/360 constant at the same DPI.&lt;/p>
&lt;p>The honest caveat: a handful of games (Fortnite, some battle royales) use a percentage or per-scope slider rather than a clean linear scale, so their conversion is a close approximation marked with an asterisk - confirm it with an in-game 360 test. Field of view also changes how a given sensitivity feels, so if you are also moving between aspect ratios, set your view with the &lt;a href="https://techfuelhq.com/tools/fov-calculator/">FOV Calculator&lt;/a>, and size the GPU that drives your frame rate with the &lt;a href="https://techfuelhq.com/tools/pc-bottleneck-calculator/">PC Bottleneck Calculator&lt;/a>.&lt;/p></description></item><item><title>PC Bottleneck Calculator: CPU vs GPU by Resolution (2026)</title><link>https://techfuelhq.com/tools/pc-bottleneck-calculator/</link><pubDate>Mon, 29 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tools/pc-bottleneck-calculator/</guid><description>&lt;p>A bottleneck is when one part of your PC, the CPU or the GPU, cannot keep up with the other, so the faster part sits partly idle and your frame rate is capped below its potential. This calculator estimates which part limits you at the resolution you actually play, using aggregated gaming benchmarks. Pick your processor, your graphics card, and a resolution.&lt;/p>
&lt;p>The honest part first: &lt;strong>this is a directional estimate, not a benchmark.&lt;/strong> A real bottleneck depends on the specific game and engine, your settings, your memory speed, your refresh rate, and whether you use upscaling. What the tool is good for is a sanity check before you buy, spotting an obvious mismatch and understanding why the same pair behaves so differently at 1080p versus 4K. Being &lt;em>GPU-bound&lt;/em> at 1440p or 4K is not a fault; it is the efficient, intended state.&lt;/p>
&lt;p>The processor scores come from the &lt;a href="https://www.tomshardware.com/reviews/cpu-hierarchy,4312.html" rel="noopener">Tom&amp;rsquo;s Hardware CPU benchmarks hierarchy&lt;/a> (1080p gaming) and the graphics-card scores from the &lt;a href="https://www.tomshardware.com/reviews/gpu-hierarchy,4388.html" rel="noopener">Tom&amp;rsquo;s Hardware GPU benchmarks hierarchy&lt;/a> (rasterized gaming), both current through June 2026. The resolution-shifts-the-limiter principle is well established by reviewers and by &lt;a href="https://www.intel.com/content/www/us/en/developer/articles/guide/cpu-bound-vs-gpu-bound.html" rel="noopener">Intel&amp;rsquo;s own developer guidance&lt;/a>.&lt;/p>
&lt;h2 id="how-to-read-the-result">How to read the result&lt;/h2>
&lt;p>The tool gives you a limiter, CPU or GPU, and an imbalance percentage. Read it as a direction and a rough size, not a precise measurement. The processor and graphics-card scores come from two different game suites, so the exact number is an approximation; a result within a few points either way is effectively balanced hardware. What it reliably tells you is which part is likely holding you back at the resolution you chose, and how that flips as the resolution changes. Use it to catch an obvious mismatch before you spend money, then confirm with benchmarks for the specific games you play.&lt;/p>
&lt;h2 id="why-resolution-decides-the-limiter">Why resolution decides the limiter&lt;/h2>
&lt;p>The processor does the same work every frame no matter the resolution: game logic, physics, AI, and setting up draw calls do not care how many pixels the screen has. The graphics card does far more work as resolution climbs, because there are far more pixels to shade. 1440p has roughly 1.78 times the pixels of 1080p, and 4K has four times as many. Raising the resolution loads up the graphics card while the processor&amp;rsquo;s job stays flat.&lt;/p>
&lt;p>That is the whole reason the same CPU-and-GPU pair can be CPU-limited at 1080p and clearly GPU-limited at 4K. It is also why reviewers test processors at 1080p, to expose the gaps between chips, and treat 4K as mostly a graphics-card test. If you play at 4K, a mid-range processor paired with a strong card is usually fine; the same processor can hold that card back at 1080p.&lt;/p>
&lt;h2 id="fixing-a-cpu-bottleneck">Fixing a CPU bottleneck&lt;/h2>
&lt;p>If the tool flags your processor as the limiter, there are a few real levers. The most direct is a faster gaming chip, and the ones with extra cache (AMD&amp;rsquo;s X3D parts) lead in most games because gaming leans hard on cache. Faster memory with its profile enabled (EXPO on AMD, XMP on Intel) helps too, since game performance is sensitive to memory latency. The free option is to raise the resolution or settings, which shifts work onto the graphics card and often hides a mild CPU limit entirely. Before blaming the hardware, rule out the cheap causes: background apps, a stale chipset driver, or a power plan that parks cores can all make a CPU limit look worse than it is.&lt;/p>
&lt;h2 id="the-mismatches-that-waste-money">The mismatches that waste money&lt;/h2>
&lt;p>Two pairings burn money. The first is a top-tier graphics card behind a weak processor at 1080p: the card spends its life waiting on the CPU and you paid for frames you never see. The second is over-buying the processor for a 4K build, where the graphics card is the limiter anyway and the extra CPU headroom does almost nothing. The goal is not zero bottleneck, which is impossible since one part always leads, but a pair that is balanced for your resolution.&lt;/p>
&lt;p>If you are planning a build rather than diagnosing one, the &lt;a href="https://techfuelhq.com/tools/pc-builder/">PC Builder&lt;/a> picks balanced parts to a budget, and the &lt;a href="https://techfuelhq.com/articles/7800x3d-vs-9800x3d-upgrade-2026/">7800X3D vs 9800X3D upgrade guide&lt;/a> shows how much a cache-heavy gaming chip actually moves the needle. For a worked 1440p example, the &lt;a href="https://techfuelhq.com/pc-builds/1500-dollar-rtx-5060-ti-1440p-build-2026/">$1,500 RTX 5060 Ti build&lt;/a> is balanced by design.&lt;/p></description></item><item><title>PPI &amp; Pixel Density Calculator: Monitor Sharpness (2026)</title><link>https://techfuelhq.com/tools/ppi-calculator/</link><pubDate>Mon, 29 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tools/ppi-calculator/</guid><description>&lt;p>This tool calculates the pixel density (PPI, pixels per inch) of any display from its resolution and diagonal size, then tells you what that density means in practice. Enter a width, height, and screen size, or tap a preset for a common monitor. You get the PPI, the pixel pitch in millimeters, the total megapixels, an approximate &amp;ldquo;retina&amp;rdquo; distance, and a plain-English sharpness verdict.&lt;/p>
&lt;p>The honest framing: &lt;strong>PPI does not decide sharpness on its own - viewing distance does.&lt;/strong> A phone needs far higher density than a monitor because you hold it close. For a desktop screen at arm&amp;rsquo;s length, anything above roughly 90 PPI looks clean and 140-plus is very sharp, so you do not need phone-class numbers on a monitor you sit back from. The &amp;ldquo;retina distance&amp;rdquo; figure is the point beyond which individual pixels get hard to resolve for normal vision.&lt;/p>
&lt;p>Pixel density also drives GPU load: more pixels means more work per frame. To size a graphics card for a given resolution, see the &lt;a href="https://techfuelhq.com/tools/gpu-comparison/">GPU Comparison Tool&lt;/a>; to work out a screen&amp;rsquo;s exact aspect ratio, use the &lt;a href="https://techfuelhq.com/tools/aspect-ratio-calculator/">Aspect Ratio Calculator&lt;/a>.&lt;/p>
&lt;h2 id="how-this-pixels-per-inch-calculator-works">How this pixels-per-inch calculator works&lt;/h2>
&lt;p>This screen PPI calculator uses the standard pixel density formula: the diagonal resolution in pixels divided by the diagonal size in inches. It takes the square root of the width squared plus the height squared to get the diagonal in pixels, then divides by the screen&amp;rsquo;s diagonal in inches. That single number, pixels per inch, is what makes a 27-inch 1440p monitor (about 109 PPI) look crisper than a 32-inch 1440p one (about 92 PPI) even though both have the same resolution. The result also reports pixel pitch in millimetres for the datasheets that list density that way, plus total megapixels and an approximate retina distance, so you can judge sharpness for your actual viewing distance rather than from resolution alone. One disambiguation, since plenty of people land here searching for a &amp;ldquo;DPI calculator&amp;rdquo;: a mouse&amp;rsquo;s DPI is a pointer-sensitivity setting rather than a screen measurement, and that belongs in the &lt;a href="https://techfuelhq.com/tools/mouse-sensitivity-converter/">mouse sensitivity converter&lt;/a> instead.&lt;/p>
&lt;h2 id="what-ppi-to-aim-for-at-your-distance">What PPI to aim for at your distance&lt;/h2>
&lt;p>Density only matters relative to how far you sit. For a desktop monitor at arm&amp;rsquo;s length, the useful band is roughly 90 to 160 PPI. Around 90 (a 24-inch 1080p, or a 27-inch 1440p on the larger side) is usable but not crisp. About 109, the density of a 27-inch 1440p panel, is the desktop sweet spot: sharp text with no need for display scaling. Around 140 and up (32-inch 4K and denser) is very sharp but usually wants some operating-system scaling so menus are not tiny. Below about 80 PPI, individual pixels and jagged edges start to show at a desk. Phones and tablets run far higher numbers only because you hold them close.&lt;/p>
&lt;h2 id="27-inch-1440p-versus-4k-and-scaling">27-inch 1440p versus 4K, and scaling&lt;/h2>
&lt;p>At 27 inches, 1440p is about 109 PPI and 4K is about 163 PPI, so 4K is visibly sharper, especially on text and fine detail. The trade-offs: 4K is about 2.25 times the pixels, so it needs a stronger graphics card for the same frame rate, and at 27 inches it usually wants around 150 percent display scaling to keep the interface readable. If you mostly game and chase frames, 1440p is the easier target; if you read, code, or design a lot and have the &lt;a href="https://techfuelhq.com/articles/best-gpu-4k-gaming-2026/">GPU for 4K&lt;/a>, 27-inch 4K is a real step up in clarity. To check a panel&amp;rsquo;s exact ratio alongside its density, use the &lt;a href="https://techfuelhq.com/tools/aspect-ratio-calculator/">Aspect Ratio Calculator&lt;/a>.&lt;/p></description></item><item><title>Star Citizen Best Settings for FPS (2026)</title><link>https://techfuelhq.com/gaming/star-citizen/star-citizen-best-settings-fps-2026/</link><pubDate>Mon, 29 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/gaming/star-citizen/star-citizen-best-settings-fps-2026/</guid><description>&lt;p>If you came here expecting a list of sliders to drop for big FPS gains, here is the honest truth most guides skip: in Star Citizen, graphics settings are the weakest lever you have. In a normal game, lowering settings is the FPS fix. Here it barely moves the needle, because the bottleneck is somewhere your monitor settings cannot reach. The game is limited by CPU single-thread performance, system RAM, NVMe streaming, and above all the server-side simulation. That is not a fault in your PC. It is how this engine works in 2026, and understanding it will save you hours of slider-tweaking that goes nowhere.&lt;/p>
&lt;p>So this guide ranks the real levers in order: your hardware floor first, then your renderer and upscaling choice, then the short list of settings that actually help, and finally the part nobody can tune away, the server. Set your expectations there and everything else makes sense.&lt;/p>
&lt;h2 id="why-star-citizen-ignores-your-graphics-card">Why Star Citizen Ignores Your Graphics Card&lt;/h2>
&lt;p>Star Citizen is primarily CPU-bound, not GPU-bound. The engine spends most of its time processing server state, physics, and NPC AI on the processor, and that work lands hardest on a single core. As one performance tuning guide puts it bluntly, &amp;ldquo;the CPU is in current state more important than the GPU,&amp;rdquo; and &amp;ldquo;even with the fastest GPU on the planet, you won&amp;rsquo;t achieve high results because, most likely, your CPU will max out before&amp;rdquo; (&lt;a href="https://citizen-history.com/other/star-citizen-performance-tuning-tweak-guide" rel="noopener">citizen-history.com&lt;/a>). The official guidance agrees that high single-core performance matters more than core count (&lt;a href="https://starcitizenhelp.com/game-guides/system-requirements" rel="noopener">starcitizenhelp.com&lt;/a>).&lt;/p>
&lt;p>The practical consequence is that even an RTX 4090 will not always peg 120 FPS in this game. Cities and stations, packed with NPCs and physics objects, tank your frame rate far more than open space does, and that drop comes from the CPU, not the GPU. If you want to know whether your processor is the part holding you back versus your graphics card, run your parts through the &lt;a href="https://techfuelhq.com/tools/pc-bottleneck-calculator/">PC Bottleneck Calculator&lt;/a> before you buy anything new. In Star Citizen specifically, a faster single-thread CPU usually beats a bigger GPU.&lt;/p>
&lt;h2 id="the-hardware-floor-that-actually-sets-your-ceiling">The Hardware Floor That Actually Sets Your Ceiling&lt;/h2>
&lt;p>Before any in-game setting matters, three hardware pieces decide your experience.&lt;/p>
&lt;p>&lt;strong>RAM: 32GB is the sweet spot.&lt;/strong> The official recommended spec is 32GB of DDR4 or DDR5, with a 16GB minimum. A test on a 96GB system showed Star Citizen only using 20 to 30GB, confirming that 32GB is plenty and that more does little (&lt;a href="https://citizen-history.com/other/star-citizen-performance-tuning-tweak-guide" rel="noopener">citizen-history.com&lt;/a>). 16GB can run the game, but 32GB is the comfort zone most players want.&lt;/p>
&lt;p>&lt;strong>NVMe SSD: effectively mandatory.&lt;/strong> Star Citizen streams world data in real time, so a fast NVMe SSD is treated as a hard requirement for a glitch-free experience, not just a nice-to-have. The official guidance is explicit: do not install Star Citizen on a spinning hard drive. Aim for a PCIe Gen 3 or Gen 4 NVMe drive with 3,000 MB/s or higher read speeds, with around 100GB free plus roughly 10GB for the pagefile (&lt;a href="https://starcitizenhelp.com/game-guides/system-requirements" rel="noopener">starcitizenhelp.com&lt;/a>). On a slow drive you get object loading failures and texture pop-in that no graphics setting can fix.&lt;/p>
&lt;p>&lt;strong>Do not disable your pagefile.&lt;/strong> This catches a lot of people who have 32GB or 64GB of RAM and assume they no longer need swap. In Star Citizen, &amp;ldquo;disabling it, even with ample physical memory, invites unnecessary strife.&amp;rdquo; Set it to System Managed or a minimum of about 16GB, and keep it on the SSD (&lt;a href="https://citizen-history.com/other/star-citizen-performance-tuning-tweak-guide" rel="noopener">citizen-history.com&lt;/a>). For the full breakdown of recommended parts and why they matter, see the &lt;a href="https://techfuelhq.com/gaming/star-citizen/star-citizen-system-requirements-2026/">Star Citizen system requirements guide&lt;/a>.&lt;/p>
&lt;h2 id="renderer-and-upscaling-your-second-biggest-lever">Renderer and Upscaling: Your Second-Biggest Lever&lt;/h2>
&lt;p>Once your hardware floor is set, the renderer is the next decision. Vulkan, the Gen12 renderer, is the default as of Alpha 4.5 and it addresses &amp;ldquo;common stuttering issues and enhancing game stability&amp;rdquo; compared to the older DirectX 11 path. It precompiles shaders instead of generating them just in time, spreads rendering across multiple CPU cores, and raises minimum frame rates while cutting stutter in contested areas (&lt;a href="https://citizen-history.com/other/star-citizen-performance-tuning-tweak-guide" rel="noopener">citizen-history.com&lt;/a>). The fallback advice is simple: Vulkan is better on most modern hardware, but if performance is worse for no clear reason, switch to DirectX 11 and test (&lt;a href="https://gist.github.com/GagandeepMalhotra/511f84532b3cd9689687617f50d01913" rel="noopener">GagandeepMalhotra gist&lt;/a>).&lt;/p>
&lt;p>One gotcha worth flagging: some auto-installed copies of vulkan-1.dll have been flagged by Easy Anti-Cheat, which can cause launch or error problems with the Vulkan renderer. If Vulkan refuses to start, RSI maintains a Vulkan troubleshooting article for exactly this. This sits close to the broader anti-cheat launch issues covered in the &lt;a href="https://techfuelhq.com/gaming/star-citizen/star-citizen-error-5007-fix/">Star Citizen error 5007 fix&lt;/a> guide, so check there if your launch failure looks anti-cheat related.&lt;/p>
&lt;p>On upscaling, Star Citizen Alpha 4.5 added support for the DLSS 4 transformer model alongside the Vulkan improvements, and the game supports NVIDIA DLSS, AMD FSR on all GPUs, and Intel XeSS (&lt;a href="https://www.mmopixel.com/news/vulkan-renderer-in-star-citizen-4-5-what-s-new-and-how-it-changes-performance" rel="noopener">mmopixel.com&lt;/a>). Star Citizen originally gained DLSS and Vulkan support through an NVIDIA Game Ready driver back in 2024, the same cycle that added F1 24 and Hellblade II (&lt;a href="https://www.tomshardware.com/pc-components/gpu-drivers/star-citizen-gets-dlss-and-vulkan-support-as-new-nvidia-driver-adds-support-for-f1-24-hellblade-2-and-more" rel="noopener">tomshardware.com&lt;/a>). Quality or Balanced upscaling is one of the most effective FPS boosts on GPU-limited mid-range hardware, but it provides little benefit when you are CPU-bound, which is most of the time in busy areas.&lt;/p>
&lt;p>&lt;strong>A clear warning on Frame Generation:&lt;/strong> it is not supported in Star Citizen as of 4.5. Only upscaling, the super resolution part, works; multi-frame generation does not (&lt;a href="https://starcitizen.tools/DLSS" rel="noopener">starcitizen.tools&lt;/a>). Do not go hunting for a Frame Gen toggle expecting it to double your FPS. It is not there, and even if it were, it would not help a CPU or server bottleneck.&lt;/p>
&lt;h2 id="the-short-list-of-settings-that-actually-move-fps">The Short List of Settings That Actually Move FPS&lt;/h2>
&lt;p>Most of the graphics menu is noise in this game. These few entries are the ones worth your attention.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Planet Volumetric Clouds: Low.&lt;/strong> This is one of the biggest FPS killers in the game and can cause a 20-plus FPS difference on mid-range hardware (&lt;a href="https://gist.github.com/GagandeepMalhotra/511f84532b3cd9689687617f50d01913" rel="noopener">GagandeepMalhotra gist&lt;/a>). Drop it first.&lt;/li>
&lt;li>&lt;strong>Object / Object Container View Distance: Medium or High.&lt;/strong> Ultra &amp;ldquo;causes significant frame jitter with minimal visual benefit.&amp;rdquo; Medium or High is the smart trade; some guides go as low as Low for the biggest gain.&lt;/li>
&lt;li>&lt;strong>Gas Clouds: Low. Shading: Medium. Post Effects: Low.&lt;/strong> Small but real gains.&lt;/li>
&lt;li>&lt;strong>Object Detail: High minimum.&lt;/strong> Setting it Low &amp;ldquo;causes surface rendering issues on planets,&amp;rdquo; so do not push this one below High.&lt;/li>
&lt;li>&lt;strong>Textures: set by VRAM, not by taste.&lt;/strong> Under 8GB of VRAM, keep textures at Medium to avoid stuttering; 12GB or more can go by preference. The redline matters here: staying under your VRAM cap is smooth, but hitting it, for example 11.2 of 11.2 GB on a 12GB card, creates stutter (&lt;a href="https://gist.github.com/GagandeepMalhotra/511f84532b3cd9689687617f50d01913" rel="noopener">GagandeepMalhotra gist&lt;/a>).&lt;/li>
&lt;li>&lt;strong>Shadows, Fog, Water Caustics, Video Comms: negligible FPS impact.&lt;/strong> These are player preference. Tune them for looks, not frames.&lt;/li>
&lt;/ul>
&lt;p>A few NVIDIA Control Panel tweaks help too, though only a few matter: set Shader Cache Size to about 10GB to help in streaming-heavy areas, and removing motion blur and film grain cleans up the image without taxing the CPU (&lt;a href="https://citizen-history.com/other/star-citizen-performance-tuning-tweak-guide" rel="noopener">citizen-history.com&lt;/a>). On Intel 12th-gen and newer CPUs, micro-stuttering tied to efficiency cores is a known issue; disabling E-cores for the game or pinning Star Citizen to P-cores with a tool like Process Lasso can smooth it out.&lt;/p>
&lt;h2 id="the-diagnostic-that-separates-a-bad-pc-from-a-bad-server">The Diagnostic That Separates a Bad PC From a Bad Server&lt;/h2>
&lt;p>This is the differentiator. Before you blame your hardware, open the console with the tilde key, type &lt;code>r_displayInfo 1&lt;/code>, and press Enter. You get an FPS, RAM, and latency overlay in the upper-right corner. Higher values, &lt;code>r_displayInfo 2&lt;/code> through &lt;code>4&lt;/code>, show progressively more detail, and &lt;code>r_displayInfo 0&lt;/code> turns it off (&lt;a href="https://guided.news/en/guides/star-citizen-fps-command/" rel="noopener">guided.news&lt;/a>).&lt;/p>
&lt;p>Read it like this. If lowering your resolution barely changes FPS, and cities tank far more than space, you are CPU-bound. If FPS jumps when you lower resolution or switch upscaling modes, and GPU usage is consistently high, you are GPU-bound (&lt;a href="https://citizen-history.com/other/star-citizen-performance-tuning-tweak-guide" rel="noopener">citizen-history.com&lt;/a>). And the overlay also shows the server. A normal server should run at roughly 4 to 8 FPS; values below about 2 FPS mean a degraded server, and the fix is to switch servers, not to touch a single graphics setting (&lt;a href="https://citizen-history.com/other/star-citizen-performance-tuning-tweak-guide" rel="noopener">citizen-history.com&lt;/a>). No client setting changes the server tick. That is the ceiling on your experience, and it is invisible until you measure it.&lt;/p>
&lt;p>One more expectation to set: Star Citizen compiles shaders on startup, so very low frame rates for roughly the first 10 minutes after logging in, or after a patch, are normal and not a settings problem (&lt;a href="https://boostroom.com/blog/star-citizen-performance-guide-fps-boost-settings" rel="noopener">boostroom.com&lt;/a>). Clear the shader cache after major updates only. Constant clearing just forces expensive rebuilds.&lt;/p>
&lt;h2 id="where-to-go-next">Where to Go Next&lt;/h2>
&lt;p>Settings help less in Star Citizen than almost anywhere else, and now you know why and what to actually do about it. If you are still deciding whether your CPU or GPU is the real limiter, run your build through the &lt;a href="https://techfuelhq.com/tools/pc-bottleneck-calculator/">PC Bottleneck Calculator&lt;/a>, since in this game a stronger single-thread CPU beats a bigger graphics card. To plan a build that meets the real hardware floor of 32GB RAM and a fast NVMe drive, start with the &lt;a href="https://techfuelhq.com/gaming/star-citizen/star-citizen-system-requirements-2026/">Star Citizen system requirements guide&lt;/a>. And if your trouble is the game refusing to launch rather than running slowly, the &lt;a href="https://techfuelhq.com/gaming/star-citizen/star-citizen-error-5007-fix/">Star Citizen error 5007 fix&lt;/a> covers the anti-cheat and Vulkan launch failures that often get mistaken for performance problems.&lt;/p></description></item><item><title>DX12 vs DX11: Which Gives More FPS (and When to Switch)</title><link>https://techfuelhq.com/gaming/dx12-vs-dx11-fps-2026/</link><pubDate>Sun, 28 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/gaming/dx12-vs-dx11-fps-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-28 · ~9 min read · St. Louis County, MO&lt;/p>
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR · DX12 vs DX11&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>DX12 wins when your CPU is the limit&lt;/strong> on a modern multi-core PC and the game's DX12 path is well made -- typically &lt;strong>10-20% more FPS&lt;/strong> because it spreads render work across cores.&lt;/li>
&lt;li>&lt;strong>DX11 can win when DX12 is poorly implemented&lt;/strong> -- steadier frame pacing, fewer hitches, better on older or thermally limited machines.&lt;/li>
&lt;li>&lt;strong>DX12's weakness is shader-compilation stutter&lt;/strong> when a studio doesn't pre-compile shaders properly.&lt;/li>
&lt;li>&lt;strong>Ray tracing requires DX12.&lt;/strong> If you want it, you're on DX12.&lt;/li>
&lt;li>&lt;strong>The rule:&lt;/strong> try both, keep whichever gives better &lt;em>1% lows&lt;/em> -- not the higher average FPS counter.&lt;/li>
&lt;/ul>
&lt;/div>
&lt;p>&amp;ldquo;DX12 vs DX11, which gives more FPS?&amp;rdquo; has a frustrating but honest answer: it depends on what is bottlenecking your frame rate, and on how well the studio built the game&amp;rsquo;s DX12 mode. The good news is that once you understand the &lt;em>one&lt;/em> real difference between them, you can predict which will help &amp;ndash; and test it yourself in two minutes. This guide gives you both.&lt;/p>
&lt;h2 id="the-one-real-difference-how-they-use-your-cpu">The one real difference: how they use your CPU&lt;/h2>
&lt;p>Everything else follows from this. DirectX is the layer that turns &amp;ldquo;draw this scene&amp;rdquo; into instructions for your GPU, and the two versions hand that work to your CPU very differently.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>DX11&lt;/strong> routes most of its render commands through a &lt;strong>single main CPU thread&lt;/strong>. If that one thread maxes out, your frame rate sags &amp;ndash; even if the rest of your CPU cores are sitting nearly idle. The driver does a lot of the heavy lifting for you, which keeps things simple and stable, but it is a one-lane road.&lt;/li>
&lt;li>&lt;strong>DX12&lt;/strong> spreads those render commands across &lt;strong>multiple CPU cores&lt;/strong> at once. On a modern six-core-or-more processor, that removes the single-thread choke point, which is exactly why it helps when your CPU is the limit. The trade-off: it moves responsibility from the driver to the game, so a lazy or rushed DX12 implementation can perform &lt;em>worse&lt;/em> than DX11.&lt;/li>
&lt;/ul>
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;padding:28px 16px 22px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;">
&lt;div style="text-align:center;margin-bottom:14px;">
&lt;div style="font-size:18px;font-weight:600;letter-spacing:-0.3px;">One lane vs many: how each uses your CPU&lt;/div>
&lt;div style="font-size:12px;color:#9a9ab5;margin-top:4px;">Relative render load per CPU core (illustrative)&lt;/div>
&lt;/div>
&lt;svg viewBox="0 0 760 340" xmlns="http://www.w3.org/2000/svg" style="width:100%;display:block;" role="img" aria-label="DX11 piles render work onto one CPU core that maxes out while the others sit idle. DX12 spreads the same work evenly across all cores, so a modern multi-core CPU is not bottlenecked by a single thread.">
&lt;text x="195" y="34" font-size="15" font-weight="600" fill="#5090e0" text-anchor="middle">DX11: one core does the work&lt;/text>
&lt;rect x="58" y="120" width="34" height="150" rx="3" fill="#ed6a5a">&lt;/rect>
&lt;rect x="108" y="240" width="34" height="30" rx="3" fill="#33335a">&lt;/rect>
&lt;rect x="158" y="240" width="34" height="30" rx="3" fill="#33335a">&lt;/rect>
&lt;rect x="208" y="240" width="34" height="30" rx="3" fill="#33335a">&lt;/rect>
&lt;rect x="258" y="240" width="34" height="30" rx="3" fill="#33335a">&lt;/rect>
&lt;rect x="308" y="240" width="34" height="30" rx="3" fill="#33335a">&lt;/rect>
&lt;text x="75" y="112" font-size="10" font-weight="700" fill="#ed6a5a" text-anchor="middle">maxed&lt;/text>
&lt;line x1="50" y1="270" x2="350" y2="270" stroke="rgba(255,255,255,0.16)" stroke-width="1">&lt;/line>
&lt;text x="200" y="292" font-size="11" fill="#7a7a96" text-anchor="middle">6 CPU cores -- 5 sit nearly idle&lt;/text>
&lt;line x1="380" y1="60" x2="380" y2="290" stroke="rgba(255,255,255,0.08)" stroke-width="1">&lt;/line>
&lt;text x="565" y="34" font-size="15" font-weight="600" fill="#5dca7a" text-anchor="middle">DX12: work spread across cores&lt;/text>
&lt;rect x="428" y="180" width="34" height="90" rx="3" fill="#5dca7a">&lt;/rect>
&lt;rect x="478" y="186" width="34" height="84" rx="3" fill="#5dca7a">&lt;/rect>
&lt;rect x="528" y="178" width="34" height="92" rx="3" fill="#5dca7a">&lt;/rect>
&lt;rect x="578" y="190" width="34" height="80" rx="3" fill="#5dca7a">&lt;/rect>
&lt;rect x="628" y="184" width="34" height="86" rx="3" fill="#5dca7a">&lt;/rect>
&lt;rect x="678" y="188" width="34" height="82" rx="3" fill="#5dca7a">&lt;/rect>
&lt;line x1="420" y1="270" x2="720" y2="270" stroke="rgba(255,255,255,0.16)" stroke-width="1">&lt;/line>
&lt;text x="570" y="292" font-size="11" fill="#7a7a96" text-anchor="middle">6 CPU cores -- all share the load&lt;/text>
&lt;text x="380" y="322" font-size="12" fill="#b8b8cc" text-anchor="middle">When the single DX11 thread maxes out, FPS sags with cores to spare. DX12 removes that choke point.&lt;/text>
&lt;/svg>
&lt;/div>
&lt;/div>
&lt;h2 id="so-which-is-faster">So which is faster?&lt;/h2>
&lt;p>The honest rule, in one line: &lt;strong>DX12 has the upside when your CPU is the bottleneck and the game&amp;rsquo;s DX12 path is well built; otherwise the two are close, and a bad DX12 port can lose to DX11.&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>CPU-bound + modern multi-core CPU + good DX12 port&lt;/strong> -&amp;gt; DX12 typically gives &lt;strong>10-20% more FPS&lt;/strong>. This is the scenario DX12 was built for.&lt;/li>
&lt;li>&lt;strong>GPU-bound&lt;/strong> (you are at high resolution/settings and the graphics card is the limit) -&amp;gt; the API barely matters; both feed the same GPU. Pick on stability.&lt;/li>
&lt;li>&lt;strong>Poorly optimized DX12 mode&lt;/strong> -&amp;gt; DX11 can be &lt;em>faster&lt;/em> and smoother. A messy DX12 implementation can create the very CPU bottleneck DX12 is supposed to remove.&lt;/li>
&lt;/ul>
&lt;p>That last point is why you cannot just declare &amp;ldquo;DX12 is newer, so use DX12.&amp;rdquo; Newer is only better when the studio did the work. And since the whole question turns on whether your CPU is the limiter, it helps to know that first: the &lt;a href="https://techfuelhq.com/tools/pc-bottleneck-calculator/">PC Bottleneck Calculator&lt;/a> estimates whether your CPU or GPU is the bottleneck at your resolution.&lt;/p>
&lt;h2 id="dx12s-real-weakness-shader-compilation-stutter">DX12&amp;rsquo;s real weakness: shader-compilation stutter&lt;/h2>
&lt;p>If you have heard people complain about &amp;ldquo;DX12 stutter,&amp;rdquo; this is it. Because DX12 gives developers direct control of the graphics pipeline, the &lt;em>game&lt;/em> is responsible for compiling shaders ahead of time. When a studio does not pre-compile them well, shaders get compiled on the fly during gameplay &amp;ndash; and each one is a brief hitch. DX11&amp;rsquo;s driver handled more of this automatically behind the scenes, which is why some DX11 games feel smoother even when the average FPS is the same.&lt;/p>
&lt;p>This is the single biggest reason to actually test both rather than trust the average frame rate: DX12 can show a higher average FPS while feeling worse, because the stutters live in the &lt;strong>1% lows&lt;/strong>, not the average.&lt;/p>
&lt;h2 id="when-to-use-which">When to use which&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Situation&lt;/th>
&lt;th scope="col">Pick&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Modern 6+ core CPU, CPU-limited, good DX12 port&lt;/td>
&lt;td>&lt;strong>DX12&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>You want ray tracing / mesh shaders&lt;/td>
&lt;td>&lt;strong>DX12&lt;/strong> (required)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>The game&amp;rsquo;s DX12 mode stutters or crashes&lt;/td>
&lt;td>&lt;strong>DX11&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Older CPU, or a thermally limited laptop&lt;/td>
&lt;td>&lt;strong>DX11&lt;/strong> (often steadier)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GPU-bound at high resolution&lt;/td>
&lt;td>Either &amp;ndash; pick the steadier one&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;h2 id="how-to-test-it-yourself-two-minutes">How to test it yourself (two minutes)&lt;/h2>
&lt;p>Do not trust a forum verdict for &lt;em>your&lt;/em> hardware and &lt;em>your&lt;/em> game. Test it:&lt;/p>
&lt;ol>
&lt;li>In the game&amp;rsquo;s graphics/display settings, find the &lt;strong>Graphics API / Renderer / DirectX version&lt;/strong> dropdown (some games use a &lt;code>-dx11&lt;/code> / &lt;code>-dx12&lt;/code> launch option instead). Switching usually needs a game restart.&lt;/li>
&lt;li>Pick a demanding, repeatable scene &amp;ndash; a busy area, not an empty menu.&lt;/li>
&lt;li>Turn on a frame-time overlay (your GPU software&amp;rsquo;s overlay, or a tool that shows &lt;strong>1% lows&lt;/strong> and frame-time, not just average FPS).&lt;/li>
&lt;li>Run the same scene on each API and compare the &lt;strong>1% lows and frame-time consistency.&lt;/strong> Keep whichever is steadier, even if its average FPS is a touch lower. Smooth beats a higher number that hitches.&lt;/li>
&lt;/ol>
&lt;h2 id="a-note-on-the-cpu-that-drives-this">A note on the CPU that drives this&lt;/h2>
&lt;p>Because DX12&amp;rsquo;s whole advantage is spreading work across cores, the API conversation is really a CPU conversation. A strong modern gaming CPU &amp;ndash; lots of fast cores and large cache &amp;ndash; is what lets DX12 pull ahead, and it is also what carries you in the CPU-bound games where the API matters most. That is a big part of why the &lt;a href="https://techfuelhq.com/pc-builds/2500-dollar-7800x3d-rtx-5080-4k-build-2026/">$2,500 4K build&lt;/a> is built around a Ryzen 7 7800X3D, and why the &lt;a href="https://techfuelhq.com/gpu-reviews/">GPU reviews&lt;/a> pair cards with CPUs that can keep them fed. If a specific game stutters under DX12, that is also worth checking against the &lt;a href="https://techfuelhq.com/gaming/easy-anti-cheat-fix-guide-2026/">anti-cheat and launch fixes&lt;/a> before blaming the API &amp;ndash; sometimes the &amp;ldquo;DX12 problem&amp;rdquo; is something else entirely.&lt;/p>
&lt;h2 id="the-bottom-line">The bottom line&lt;/h2>
&lt;p>DX12 is not automatically better than DX11 &amp;ndash; it is better &lt;em>at one job&lt;/em>: getting more frames out of a modern multi-core CPU when that CPU is the limit and the game was built properly. DX11 is the steadier, simpler path that still wins in messy DX12 ports and on older hardware. Ray tracing forces DX12. For everything else, switch between them in the settings, watch your 1% lows, and keep the one that feels smooth. The right API is the one your specific game and PC actually run best &amp;ndash; and now you can prove which that is.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>Hardware Times &amp;ndash; difference between DirectX 11 and DirectX 12: &lt;a href="https://hardwaretimes.com/what-is-the-difference-between-directx-11-and-directx-12/" rel="noopener">https://hardwaretimes.com/what-is-the-difference-between-directx-11-and-directx-12/&lt;/a>&lt;/li>
&lt;li>Overclock.net &amp;ndash; DX11 vs DX12 multi-thread performance (Ashes of the Singularity): &lt;a href="https://www.overclock.net/threads/directx-11-vs-directx-12-multi-thread-performance-ashes-of-the-singularity.1584528/" rel="noopener">https://www.overclock.net/threads/directx-11-vs-directx-12-multi-thread-performance-ashes-of-the-singularity.1584528/&lt;/a>&lt;/li>
&lt;li>Community analysis on DX12 CPU overhead and shader-compilation stutter (AnandTech, Beyond3D forums): &lt;a href="https://forums.anandtech.com/threads/how-does-a-directx-11-game-has-a-lower-overhead-cpu-limited-scenario-than-dx12.2568366/" rel="noopener">https://forums.anandtech.com/threads/how-does-a-directx-11-game-has-a-lower-overhead-cpu-limited-scenario-than-dx12.2568366/&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Easy Anti-Cheat Errors: The Complete Fix Guide (2026)</title><link>https://techfuelhq.com/gaming/easy-anti-cheat-fix-guide-2026/</link><pubDate>Sun, 28 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/gaming/easy-anti-cheat-fix-guide-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-28 · ~11 min read · St. Louis County, MO&lt;/p>
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR · Fix Easy Anti-Cheat&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>Start here:&lt;/strong> run the game's own &lt;strong>EasyAntiCheat_Setup.exe&lt;/strong> as administrator and click &lt;strong>Repair Service&lt;/strong>. This fixes most "not installed" errors.&lt;/li>
&lt;li>&lt;strong>If it still fails:&lt;/strong> reinstall EAC with that same tool, verify game files, and run the game as administrator.&lt;/li>
&lt;li>&lt;strong>Windows 11 "untrusted system file" / won't launch:&lt;/strong> enable &lt;strong>Secure Boot + TPM 2.0&lt;/strong> (EAC now requires them), and check &lt;strong>Memory Integrity&lt;/strong>.&lt;/li>
&lt;li>&lt;strong>The cause almost no guide mentions:&lt;/strong> Windows 11 &lt;strong>Smart App Control&lt;/strong> can silently block an unsigned launcher or anti-cheat module. &lt;strong>Confirm it first&lt;/strong> (Event Viewer), then disable it as a last resort -- it lowers security for your whole PC.&lt;/li>
&lt;li>&lt;strong>Never&lt;/strong> download a third-party "EAC fixer." Every real fix is a Windows setting or the official tool already inside your game.&lt;/li>
&lt;/ul>
&lt;/div>
&lt;p>Easy Anti-Cheat (EAC) runs underneath a huge share of online PC games &amp;ndash; Star Citizen, Apex Legends, Fortnite, Lords of the Fallen, Elden Ring, and dozens more &amp;ndash; and when it breaks, the game simply will not start. The errors come in a few flavors (&amp;ldquo;Easy Anti-Cheat is not installed,&amp;rdquo; &amp;ldquo;Easy Anti-Cheat failed to start,&amp;rdquo; &amp;ldquo;untrusted system file,&amp;rdquo; or a launcher that just bounces back to desktop), but they share a small set of real causes. This guide ranks the fixes by how often they actually work, and it covers one cause &amp;ndash; Windows 11 Smart App Control &amp;ndash; that I ran into on my own machine and that nearly every other guide misses.&lt;/p>
&lt;p>The one rule before you start: &lt;strong>fix the cause, not the symptom.&lt;/strong> Reinstalling a 100 GB game because a service failed to register is the slow, wrong move. Work down this list in order and stop at the one that applies to you.&lt;/p>
&lt;h2 id="what-easy-anti-cheat-actually-is-and-why-it-fails">What Easy Anti-Cheat actually is (and why it fails)&lt;/h2>
&lt;p>EAC is a kernel-level anti-cheat service that each game installs alongside itself. Because it runs at a low level and has to trust the code around it, it is unusually sensitive to four things: whether its own service is registered correctly, whether it has permission to run, whether Windows&amp;rsquo; platform-security features (Secure Boot, TPM) are on, and whether anything on the system is &lt;em>blocking&lt;/em> it from loading. Almost every EAC error traces back to one of those four. Knowing which one is the whole game.&lt;/p>
&lt;h2 id="the-fixes-ranked-by-what-actually-works">The fixes, ranked by what actually works&lt;/h2>
&lt;h3 id="1-repair-the-easy-anti-cheat-service-fixes-most-not-installed-errors">1. Repair the Easy Anti-Cheat service (fixes most &amp;ldquo;not installed&amp;rdquo; errors)&lt;/h3>
&lt;p>EAC ships a small installer &lt;em>inside every game that uses it&lt;/em>, and it has a one-click repair. This is the first thing to try and it resolves the majority of &amp;ldquo;not installed&amp;rdquo; / &amp;ldquo;failed to start&amp;rdquo; errors.&lt;/p>
&lt;ol>
&lt;li>Open the game&amp;rsquo;s install folder. For Steam that is usually &lt;code>C:\Program Files (x86)\Steam\steamapps\common\[Game Name]&lt;/code>; other launchers have their own path.&lt;/li>
&lt;li>Find the &lt;strong>EasyAntiCheat&lt;/strong> (or &lt;strong>EasyAntiCheat_EOS&lt;/strong>) subfolder and open it.&lt;/li>
&lt;li>Right-click &lt;strong>EasyAntiCheat_Setup.exe&lt;/strong> and choose &lt;strong>Run as administrator&lt;/strong> (accept the UAC prompt).&lt;/li>
&lt;li>Pick your game from the dropdown, then click &lt;strong>Repair Service&lt;/strong>.&lt;/li>
&lt;li>&lt;strong>Restart your PC&lt;/strong> and launch the game again.&lt;/li>
&lt;/ol>
&lt;p>If repair does not do it, run the same tool, choose &lt;strong>Uninstall&lt;/strong>, let it finish, then run it again and choose &lt;strong>Install&lt;/strong>. This rebuilds the service from scratch. (&lt;a href="https://www.drivereasy.com/knowledge/easy-anti-cheat-not-installed/" rel="noopener">Driver Easy&lt;/a>, &lt;a href="https://appuals.com/easy-anti-cheat-is-not-installed/" rel="noopener">Appuals&lt;/a>)&lt;/p>
&lt;h3 id="2-run-the-game-and-the-repair-tool-as-administrator">2. Run the game (and the repair tool) as administrator&lt;/h3>
&lt;p>EAC needs to register and start a Windows service, which requires elevated rights. If it lacks them, you get a &amp;ldquo;not installed&amp;rdquo; or &amp;ldquo;failed to start&amp;rdquo; error even when the files are fine. Right-click the game&amp;rsquo;s launcher (or the EAC setup) and &lt;strong>Run as administrator&lt;/strong>. To make it permanent, open the launcher&amp;rsquo;s Properties, go to Compatibility, and tick &lt;strong>Run this program as an administrator&lt;/strong>.&lt;/p>
&lt;h3 id="3-verify-the-game-files">3. Verify the game files&lt;/h3>
&lt;p>A single corrupted EAC file will break the service. Use your launcher&amp;rsquo;s repair: on Steam, right-click the game, Properties, Installed Files, &lt;strong>Verify integrity of game files&lt;/strong>; other launchers have an equivalent &amp;ldquo;verify&amp;rdquo; or &amp;ldquo;scan.&amp;rdquo; This re-downloads only what is broken, not the whole game.&lt;/p>
&lt;h3 id="4-turn-on-secure-boot-and-tpm-the-untrusted-system-file--windows-11-cause">4. Turn on Secure Boot and TPM (the &amp;ldquo;untrusted system file&amp;rdquo; / Windows 11 cause)&lt;/h3>
&lt;p>Modern Easy Anti-Cheat enforces &lt;strong>Secure Boot&lt;/strong> and &lt;strong>TPM 2.0&lt;/strong> as part of its &amp;ldquo;additional security requirements.&amp;rdquo; If Secure Boot is disabled, newer EAC titles can refuse to start or report an &lt;strong>untrusted system file&lt;/strong>. (&lt;a href="https://www.easy.ac/support/articles/additional-security-requirements" rel="noopener">Easy Anti-Cheat additional security requirements&lt;/a>)&lt;/p>
&lt;ol>
&lt;li>Reboot into your &lt;strong>BIOS/UEFI&lt;/strong> (usually Del or F2 at boot).&lt;/li>
&lt;li>Under &lt;strong>Boot&lt;/strong> or &lt;strong>Security&lt;/strong>, set &lt;strong>Secure Boot&lt;/strong> to &lt;strong>Enabled&lt;/strong>, and confirm &lt;strong>TPM&lt;/strong> (often labeled PTT on Intel or fTPM on AMD) is &lt;strong>on&lt;/strong>.&lt;/li>
&lt;li>Save and reboot.&lt;/li>
&lt;li>If a game still complains, open &lt;strong>Windows Security &amp;gt; Device security &amp;gt; Core isolation&lt;/strong> and try enabling &lt;strong>Memory Integrity&lt;/strong> (note it can cost a little performance on some systems). (&lt;a href="https://learn.microsoft.com/en-us/answers/questions/3929849/i-cant-play-any-game-that-uses-anti-cheat" rel="noopener">Microsoft Q&amp;amp;A&lt;/a>)&lt;/li>
&lt;/ol>
&lt;p>A caution worth stating: enabling Secure Boot on a PC that was installed in Legacy/CSM mode can stop Windows from booting. If your install is older, confirm it is using UEFI/GPT before flipping Secure Boot on.&lt;/p>
&lt;h3 id="5-update-windows-gpu-drivers-and-the-visual-c-runtimes">5. Update Windows, GPU drivers, and the Visual C++ runtimes&lt;/h3>
&lt;p>EAC leans on current platform components. Install pending &lt;strong>Windows Updates&lt;/strong>, update your &lt;strong>GPU driver&lt;/strong>, and install the latest &lt;strong>Microsoft Visual C++ Redistributables&lt;/strong> (x64 and x86). Outdated runtimes are a quiet cause of &amp;ldquo;failed to start.&amp;rdquo;&lt;/p>
&lt;h3 id="6-whitelist-eac-in-your-antivirus">6. Whitelist EAC in your antivirus&lt;/h3>
&lt;p>Because EAC injects at a low level, third-party antivirus sometimes quarantines or locks its files mid-launch. Add the game&amp;rsquo;s folder and &lt;code>EasyAntiCheat_Setup.exe&lt;/code> to your antivirus &lt;strong>exclusions&lt;/strong> (preferred), or pause real-time protection only long enough to test. Whitelisting beats fully disabling your antivirus.&lt;/p>
&lt;h3 id="7-the-cause-almost-no-guide-covers-windows-11-smart-app-control">7. The cause almost no guide covers: Windows 11 Smart App Control&lt;/h3>
&lt;p>This is the one I hit personally, on a clean Windows 11 install on my own 7800X3D / RTX 5080 build: the game would not launch, no fix above changed anything, and there was no useful error &amp;ndash; because the thing blocking it was a Windows security feature, not the game.&lt;/p>
&lt;p>&lt;strong>Smart App Control (SAC)&lt;/strong> is a Windows 11 (22H2 and newer) feature that blocks apps it does not recognize or that are unsigned &amp;ndash; &lt;strong>system-wide, with no per-app allowlist.&lt;/strong> It is separate from Microsoft Defender. When SAC is enforced, it can silently block an &lt;strong>unsigned game launcher or an anti-cheat component&lt;/strong> from loading, and the result looks exactly like a generic EAC or launch failure with no message pointing at the real cause.&lt;/p>
&lt;p>It is a &lt;strong>real but uncommon&lt;/strong> cause, which is why it belongs near the bottom of this list &amp;ndash; but if every other fix has failed and you are on Windows 11, check it.&lt;/p>
&lt;p>&lt;strong>Confirm SAC is actually the cause first.&lt;/strong> Do not disable a security feature on a guess:&lt;/p>
&lt;ul>
&lt;li>Look for a notification that reads &lt;strong>&amp;ldquo;Smart App Control blocked an app,&amp;rdquo;&lt;/strong> or&lt;/li>
&lt;li>Open &lt;strong>Event Viewer &amp;gt; Applications and Services Logs &amp;gt; Microsoft &amp;gt; Windows&lt;/strong>, and check the &lt;strong>CodeIntegrity&lt;/strong> / &lt;strong>AppLocker&lt;/strong> logs around the time the game failed for a block on the launcher or EAC executable.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>If, and only if, SAC is confirmed as the cause&lt;/strong>, you can turn it off:&lt;/p>
&lt;ol>
&lt;li>Open &lt;strong>Windows Security &amp;gt; App &amp;amp; browser control &amp;gt; Smart App Control settings&lt;/strong>.&lt;/li>
&lt;li>If it reads &lt;strong>On&lt;/strong> or &lt;strong>Evaluation&lt;/strong>, set it to &lt;strong>Off&lt;/strong>.&lt;/li>
&lt;li>Restart and launch the game.&lt;/li>
&lt;/ol>
&lt;p>Two honest caveats you should know before you do this:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>It lowers security for your whole PC&lt;/strong>, not just the game. SAC blocks unsigned and unknown software across the system, so turning it off removes that layer everywhere.&lt;/li>
&lt;li>&lt;strong>Historically, turning SAC off was a one-way door&lt;/strong> &amp;ndash; re-enabling it required reinstalling Windows. An &lt;strong>April 2026 Windows 11 update&lt;/strong> is changing this so you can re-enable SAC from Windows Security without a reinstall, but it is rolling out gradually and your PC may not have it yet. Treat disabling SAC as a deliberate choice, and re-enable it once your game&amp;rsquo;s anti-cheat is trusted.&lt;/li>
&lt;/ul>
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;padding:28px 16px 22px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;">
&lt;div style="text-align:center;margin-bottom:14px;">
&lt;div style="font-size:18px;font-weight:600;letter-spacing:-0.3px;">Work the fixes in order -- stop at yours&lt;/div>
&lt;div style="font-size:12px;color:#9a9ab5;margin-top:4px;">Most common at the top; the security-lowering step is deliberately last&lt;/div>
&lt;/div>
&lt;svg viewBox="0 0 760 396" xmlns="http://www.w3.org/2000/svg" style="width:100%;display:block;" role="img" aria-label="Ordered checklist of Easy Anti-Cheat fixes from safest and most common to last resort: 1 repair the EAC service, 2 run as administrator, 3 verify game files, 4 enable Secure Boot and TPM, 5 update Windows GPU drivers and Visual C plus plus, 6 whitelist antivirus, 7 last resort and only after confirming the cause, disable Smart App Control which lowers system security.">
&lt;line x1="42" y1="40" x2="42" y2="332" stroke="rgba(255,255,255,0.12)" stroke-width="2">&lt;/line>
&lt;g>
&lt;circle cx="42" cy="48" r="13" fill="#5dca7a">&lt;/circle>&lt;text x="42" y="53" font-size="13" font-weight="700" fill="#0a0a23" text-anchor="middle">1&lt;/text>
&lt;text x="68" y="44" font-size="14" font-weight="600" fill="#e8e8f0">Repair the EAC service&lt;/text>
&lt;text x="68" y="62" font-size="12" fill="#9090a8">EasyAntiCheat_Setup.exe (as admin) -&amp;gt; Repair Service -- fixes most cases&lt;/text>
&lt;/g>
&lt;g>
&lt;circle cx="42" cy="98" r="13" fill="#5dca7a">&lt;/circle>&lt;text x="42" y="103" font-size="13" font-weight="700" fill="#0a0a23" text-anchor="middle">2&lt;/text>
&lt;text x="68" y="94" font-size="14" font-weight="600" fill="#e8e8f0">Run as administrator&lt;/text>
&lt;text x="68" y="112" font-size="12" fill="#9090a8">EAC needs elevated rights to register its service&lt;/text>
&lt;/g>
&lt;g>
&lt;circle cx="42" cy="148" r="13" fill="#5dca7a">&lt;/circle>&lt;text x="42" y="153" font-size="13" font-weight="700" fill="#0a0a23" text-anchor="middle">3&lt;/text>
&lt;text x="68" y="144" font-size="14" font-weight="600" fill="#e8e8f0">Verify game files&lt;/text>
&lt;text x="68" y="162" font-size="12" fill="#9090a8">Repairs one corrupted file without re-downloading the game&lt;/text>
&lt;/g>
&lt;g>
&lt;circle cx="42" cy="198" r="13" fill="#5090e0">&lt;/circle>&lt;text x="42" y="203" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">4&lt;/text>
&lt;text x="68" y="194" font-size="14" font-weight="600" fill="#e8e8f0">Enable Secure Boot + TPM&lt;/text>
&lt;text x="68" y="212" font-size="12" fill="#9090a8">Required by modern EAC; fixes "untrusted system file"&lt;/text>
&lt;/g>
&lt;g>
&lt;circle cx="42" cy="248" r="13" fill="#5090e0">&lt;/circle>&lt;text x="42" y="253" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">5&lt;/text>
&lt;text x="68" y="244" font-size="14" font-weight="600" fill="#e8e8f0">Update Windows, GPU driver, VC++&lt;/text>
&lt;text x="68" y="262" font-size="12" fill="#9090a8">Outdated runtimes cause "failed to start"&lt;/text>
&lt;/g>
&lt;g>
&lt;circle cx="42" cy="298" r="13" fill="#c8a03c">&lt;/circle>&lt;text x="42" y="303" font-size="13" font-weight="700" fill="#0a0a23" text-anchor="middle">6&lt;/text>
&lt;text x="68" y="294" font-size="14" font-weight="600" fill="#e8e8f0">Whitelist your antivirus&lt;/text>
&lt;text x="68" y="312" font-size="12" fill="#9090a8">Exclude the game folder + EAC setup (don't fully disable)&lt;/text>
&lt;/g>
&lt;g>
&lt;circle cx="42" cy="348" r="13" fill="#ed6a5a">&lt;/circle>&lt;text x="42" y="353" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">7&lt;/text>
&lt;text x="68" y="344" font-size="14" font-weight="600" fill="#ed6a5a">LAST RESORT: disable Smart App Control&lt;/text>
&lt;text x="68" y="362" font-size="12" fill="#c89090">Only after confirming it (Event Viewer) -- it lowers security PC-wide&lt;/text>
&lt;/g>
&lt;/svg>
&lt;/div>
&lt;/div>
&lt;h2 id="what-not-to-do">What not to do&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Do not download a third-party &amp;ldquo;EAC fixer&amp;rdquo; or &amp;ldquo;anti-cheat repair&amp;rdquo; tool.&lt;/strong> Every real fix is either a Windows setting or the official &lt;code>EasyAntiCheat_Setup.exe&lt;/code> already inside your game. A downloaded program that changes system or security settings is exactly the kind of unsigned software Windows SmartScreen and Smart App Control exist to block &amp;ndash; and ironically, running one can trigger the very problem you are trying to fix.&lt;/li>
&lt;li>&lt;strong>Do not reinstall the whole game first.&lt;/strong> It is the slowest fix and rarely the right one; it only helps if file verification (step 3) finds damage it cannot repair.&lt;/li>
&lt;li>&lt;strong>Do not disable Smart App Control or your antivirus &amp;ldquo;just to see.&amp;rdquo;&lt;/strong> Confirm the cause first. Lowering a security layer should be a decision, not a shot in the dark.&lt;/li>
&lt;/ul>
&lt;h2 id="game-specific-notes">Game-specific notes&lt;/h2>
&lt;p>EAC behaves the same across titles, but a few have their own quirks. &lt;strong>Star Citizen&lt;/strong> is the one I see trip people up most, because its launcher is unsigned and its errors (like the generic &amp;ldquo;5007&amp;rdquo;) hide the real cause &amp;ndash; it has its own ranked, log-first walkthrough here: &lt;strong>&lt;a href="https://techfuelhq.com/gaming/star-citizen/star-citizen-error-5007-fix/">Star Citizen Error 5007: read your log first&lt;/a>&lt;/strong>. If you are building or upgrading a rig for EAC-heavy games, Secure Boot and TPM are now effectively mandatory, which is one more reason the &lt;a href="https://techfuelhq.com/pc-builds/2500-dollar-7800x3d-rtx-5080-4k-build-2026/">modern AM5 build&lt;/a> ships them on by default, and the &lt;a href="https://techfuelhq.com/gpu-reviews/">GPU reviews&lt;/a> cover the cards that actually carry these games.&lt;/p>
&lt;h2 id="the-bottom-line">The bottom line&lt;/h2>
&lt;p>Easy Anti-Cheat errors look scary but come from a short list of causes. Repair the service, give it admin rights, verify your files, and &amp;ndash; on Windows 11 &amp;ndash; make sure Secure Boot and TPM are on. If you have exhausted those and you are still stuck, check whether Smart App Control is silently blocking the launcher before you reach for anything drastic, and disable it only with eyes open. Fix the cause that applies to you, in order, and you will spend ten minutes on this instead of an evening.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>Easy Anti-Cheat &amp;ndash; additional security requirements (Secure Boot, TPM): &lt;a href="https://www.easy.ac/support/articles/additional-security-requirements" rel="noopener">https://www.easy.ac/support/articles/additional-security-requirements&lt;/a>&lt;/li>
&lt;li>Roberts Space Industries &amp;ndash; Easy Anti-Cheat troubleshooting: &lt;a href="https://support.robertsspaceindustries.com/hc/en-us/articles/4412276152343-Easy-Anti-Cheat-Troubleshooting" rel="noopener">https://support.robertsspaceindustries.com/hc/en-us/articles/4412276152343-Easy-Anti-Cheat-Troubleshooting&lt;/a>&lt;/li>
&lt;li>Microsoft Q&amp;amp;A &amp;ndash; can&amp;rsquo;t play games that use anti-cheat (Secure Boot / Memory Integrity): &lt;a href="https://learn.microsoft.com/en-us/answers/questions/3929849/i-cant-play-any-game-that-uses-anti-cheat" rel="noopener">https://learn.microsoft.com/en-us/answers/questions/3929849/i-cant-play-any-game-that-uses-anti-cheat&lt;/a>&lt;/li>
&lt;li>Driver Easy &amp;ndash; &amp;ldquo;Easy Anti-Cheat is not installed&amp;rdquo; repair steps: &lt;a href="https://www.drivereasy.com/knowledge/easy-anti-cheat-not-installed/" rel="noopener">https://www.drivereasy.com/knowledge/easy-anti-cheat-not-installed/&lt;/a>&lt;/li>
&lt;li>Appuals &amp;ndash; Easy Anti-Cheat is not installed: &lt;a href="https://appuals.com/easy-anti-cheat-is-not-installed/" rel="noopener">https://appuals.com/easy-anti-cheat-is-not-installed/&lt;/a>&lt;/li>
&lt;li>Microsoft &amp;ndash; Smart App Control overview: &lt;a href="https://support.microsoft.com/en-us/topic/what-is-smart-app-control-285ea03d-fa88-4d56-882e-6698afdb7003" rel="noopener">https://support.microsoft.com/en-us/topic/what-is-smart-app-control-285ea03d-fa88-4d56-882e-6698afdb7003&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Karakeep vs Linkwarden: Which Self-Hosted Bookmark Manager (2026)</title><link>https://techfuelhq.com/homelab/karakeep-vs-linkwarden-2026/</link><pubDate>Sun, 28 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/homelab/karakeep-vs-linkwarden-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-28 · ~10 min read · St. Louis County, MO&lt;/p>
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR · The one-line call&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>Karakeep&lt;/strong> (formerly Hoarder) = &lt;strong>keep + organize + AI&lt;/strong>. Bookmark links, notes, images, PDFs, and videos; automatic AI tagging (OpenAI &lt;em>or&lt;/em> local Ollama). Pick it to build an organized, searchable knowledge base.&lt;/li>
&lt;li>&lt;strong>Linkwarden&lt;/strong> = &lt;strong>archive + preserve&lt;/strong>. Auto-saves a PDF and a screenshot of every page, so your bookmarks survive link rot. Pick it to keep a permanent, self-owned copy of what you save.&lt;/li>
&lt;li>&lt;strong>Both&lt;/strong> are AGPL-3.0, self-hostable with Docker, search via Meilisearch, and ship browser extensions + iOS/Android apps. You can't really go wrong; you're choosing a &lt;em>philosophy&lt;/em>, not a winner.&lt;/li>
&lt;/ul>
&lt;/div>
&lt;p>Self-hosted bookmark managers all promise the same thing &amp;ndash; &amp;ldquo;own your bookmarks&amp;rdquo; &amp;ndash; but the two that homelabbers actually shortlist in 2026 are &lt;strong>Karakeep&lt;/strong> and &lt;strong>Linkwarden&lt;/strong>, and they answer a different question underneath. One wants to help you &lt;em>organize&lt;/em> what you save. The other wants to &lt;em>guarantee it still exists&lt;/em> in five years. That difference should drive your choice more than any feature checklist.&lt;/p>
&lt;p>This is a researched comparison drawn from both projects&amp;rsquo; documentation, GitHub repositories, and community write-ups, current as of June 2026 &amp;ndash; not a paid review and not a claim of a months-long side-by-side deployment. Where a number matters (stars, RAM, services), it&amp;rsquo;s pulled from the source.&lt;/p>
&lt;h2 id="what-each-one-actually-is">What each one actually is&lt;/h2>
&lt;p>&lt;strong>Karakeep&lt;/strong> (&lt;a href="https://github.com/karakeep-app/karakeep" rel="noopener">github.com/karakeep-app/karakeep&lt;/a>) is a &amp;ldquo;bookmark-everything&amp;rdquo; app: links, notes, images, PDFs, and videos, with &lt;strong>AI-based automatic tagging&lt;/strong> and full-text search as the headline features. It was previously called &lt;strong>Hoarder&lt;/strong> and rebranded to Karakeep. It&amp;rsquo;s an active, popular project &amp;ndash; roughly &lt;strong>26.3k GitHub stars&lt;/strong> at the time of writing, about two years into development, released under &lt;strong>AGPL-3.0&lt;/strong>.&lt;/p>
&lt;p>&lt;strong>Linkwarden&lt;/strong> is a self-hosted bookmark manager whose defining feature is &lt;strong>archival&lt;/strong>: it automatically captures a PDF and a screenshot of every page you save, so the content survives even if the original URL dies. It&amp;rsquo;s the older of the two &amp;ndash; around &lt;strong>four years&lt;/strong> of development versus Karakeep&amp;rsquo;s two, roughly &lt;strong>18.8k stars&lt;/strong>, also &lt;strong>AGPL-3.0&lt;/strong>. That ~1.9-year head start shows up as a polished, mature archive view and PWA.&lt;/p>
&lt;p>So both are genuinely free, self-hostable, and well-supported. The fork in the road is what they optimize for.&lt;/p>
&lt;h2 id="the-core-difference-organizing-vs-archiving">The core difference: organizing vs archiving&lt;/h2>
&lt;p>This is the whole comparison in one sentence: &lt;strong>Karakeep focuses on the &lt;em>keeping and organizing&lt;/em> part; Linkwarden focuses heavily on the &lt;em>archiving&lt;/em> part.&lt;/strong> Everything else follows from that.&lt;/p>
&lt;ul>
&lt;li>If your problem is &lt;em>&amp;ldquo;I save hundreds of links and can never find anything,&amp;rdquo;&lt;/em> Karakeep&amp;rsquo;s AI tagging and broad content support (notes, images, PDFs, video) are aimed straight at you. It behaves more like a personal, searchable knowledge base than a bookmark list.&lt;/li>
&lt;li>If your problem is &lt;em>&amp;ldquo;the article I bookmarked last year is now a 404,&amp;rdquo;&lt;/em> Linkwarden&amp;rsquo;s automatic per-page PDF + screenshot archive is the answer. You&amp;rsquo;re trading some organizational flash for a durable, self-owned copy of everything.&lt;/li>
&lt;/ul>
&lt;p>Plenty of people want both, and either tool will technically do both. But each is clearly &lt;em>better&lt;/em> at its half, so match the tool to the problem that actually bothers you.&lt;/p>
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;padding:28px 16px 22px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;">
&lt;div style="text-align:center;margin-bottom:14px;">
&lt;div style="font-size:18px;font-weight:600;letter-spacing:-0.3px;">Which one fits your actual problem&lt;/div>
&lt;div style="font-size:12px;color:#9a9ab5;margin-top:4px;">Pick by the pain you have, not the feature list&lt;/div>
&lt;/div>
&lt;svg viewBox="0 0 760 372" xmlns="http://www.w3.org/2000/svg" style="width:100%;display:block;" role="img" aria-label="Decision guide. Choose Karakeep if your problem is saving hundreds of links you can never find again: it keeps and organizes links, notes, images, PDFs and video with AI tagging that can run on a local Ollama model. Choose Linkwarden if your problem is bookmarks that turn into dead 404 links: it archives a PDF and screenshot of every page and is the more mature project. Both are AGPL-3.0, run in Docker, search with Meilisearch, and ship browser and mobile apps.">
&lt;rect x="30" y="24" width="330" height="250" rx="10" fill="#11112a" stroke="rgba(93,202,122,0.5)" stroke-width="1.5">&lt;/rect>
&lt;text x="195" y="54" font-size="16" font-weight="700" fill="#5dca7a" text-anchor="middle">Choose Karakeep&lt;/text>
&lt;text x="195" y="74" font-size="12" fill="#9090a8" text-anchor="middle">keep + organize&lt;/text>
&lt;text x="52" y="108" font-size="12.5" font-style="italic" fill="#b8b8cc">"I save hundreds of links and&lt;/text>
&lt;text x="52" y="126" font-size="12.5" font-style="italic" fill="#b8b8cc">can never find anything."&lt;/text>
&lt;circle cx="62" cy="158" r="4" fill="#5dca7a">&lt;/circle>
&lt;text x="76" y="162" font-size="12.5" fill="#dcdcea">Links, notes, images, PDFs, video&lt;/text>
&lt;circle cx="62" cy="190" r="4" fill="#5dca7a">&lt;/circle>
&lt;text x="76" y="194" font-size="12.5" fill="#dcdcea">AI auto-tagging + full-text search&lt;/text>
&lt;circle cx="62" cy="222" r="4" fill="#5dca7a">&lt;/circle>
&lt;text x="76" y="226" font-size="12.5" fill="#dcdcea">Local Ollama option (stays private)&lt;/text>
&lt;text x="195" y="258" font-size="12" fill="#5dca7a" text-anchor="middle">Build a searchable knowledge base&lt;/text>
&lt;text x="380" y="152" font-size="14" font-weight="700" fill="#9a9ab5" text-anchor="middle">or&lt;/text>
&lt;rect x="400" y="24" width="330" height="250" rx="10" fill="#11112a" stroke="rgba(80,144,224,0.5)" stroke-width="1.5">&lt;/rect>
&lt;text x="565" y="54" font-size="16" font-weight="700" fill="#5090e0" text-anchor="middle">Choose Linkwarden&lt;/text>
&lt;text x="565" y="74" font-size="12" fill="#9090a8" text-anchor="middle">archive + preserve&lt;/text>
&lt;text x="422" y="108" font-size="12.5" font-style="italic" fill="#b8b8cc">"The article I bookmarked last&lt;/text>
&lt;text x="422" y="126" font-size="12.5" font-style="italic" fill="#b8b8cc">year is now a 404."&lt;/text>
&lt;circle cx="432" cy="158" r="4" fill="#5090e0">&lt;/circle>
&lt;text x="446" y="162" font-size="12.5" fill="#dcdcea">Auto PDF + screenshot of every page&lt;/text>
&lt;circle cx="432" cy="190" r="4" fill="#5090e0">&lt;/circle>
&lt;text x="446" y="194" font-size="12.5" fill="#dcdcea">Survives link rot for years&lt;/text>
&lt;circle cx="432" cy="222" r="4" fill="#5090e0">&lt;/circle>
&lt;text x="446" y="226" font-size="12.5" fill="#dcdcea">More mature project (~4 years)&lt;/text>
&lt;text x="565" y="258" font-size="12" fill="#5090e0" text-anchor="middle">Keep a permanent, self-owned copy&lt;/text>
&lt;rect x="30" y="298" width="700" height="58" rx="8" fill="rgba(200,255,0,0.06)" stroke="rgba(200,255,0,0.35)" stroke-width="1">&lt;/rect>
&lt;text x="380" y="324" font-size="12.5" font-weight="600" fill="#e8e8f0" text-anchor="middle">Both: AGPL-3.0, self-hosted with Docker, Meilisearch search, browser + mobile apps.&lt;/text>
&lt;text x="380" y="344" font-size="12" fill="#b8b8cc" text-anchor="middle">You are choosing a philosophy, not a winner.&lt;/text>
&lt;/svg>
&lt;/div>
&lt;/div>
&lt;h2 id="feature-comparison">Feature comparison&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Dimension&lt;/th>
&lt;th scope="col">Karakeep (formerly Hoarder)&lt;/th>
&lt;th scope="col">Linkwarden&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Primary focus&lt;/strong>&lt;/td>
&lt;td>Keep + organize (knowledge base)&lt;/td>
&lt;td>Archive + preserve (link rot)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Content types&lt;/strong>&lt;/td>
&lt;td>Links, notes, images, PDFs, videos&lt;/td>
&lt;td>Links (with full-page PDF + screenshot archive)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>AI auto-tagging&lt;/strong>&lt;/td>
&lt;td>Yes &amp;ndash; OpenAI &lt;strong>or&lt;/strong> local Ollama&lt;/td>
&lt;td>Limited / not the focus&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Full-page archival&lt;/strong>&lt;/td>
&lt;td>Yes (headless Chrome)&lt;/td>
&lt;td>Yes &amp;ndash; the core feature, polished archive view&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Search&lt;/strong>&lt;/td>
&lt;td>Meilisearch (local, full-text)&lt;/td>
&lt;td>Meilisearch (local, full-text)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Apps / extensions&lt;/strong>&lt;/td>
&lt;td>Chrome, Firefox, iOS, Android&lt;/td>
&lt;td>Browser extensions, mobile, polished PWA&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>License&lt;/strong>&lt;/td>
&lt;td>AGPL-3.0&lt;/td>
&lt;td>AGPL-3.0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Maturity&lt;/strong>&lt;/td>
&lt;td>~2 years, ~26.3k stars&lt;/td>
&lt;td>~4 years, ~18.8k stars (more mature)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Managed cloud option&lt;/strong>&lt;/td>
&lt;td>Yes (optional)&lt;/td>
&lt;td>Yes (optional)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The single most important row is &lt;strong>AI auto-tagging with a local-LLM option&lt;/strong>. If you want hands-off organization &lt;em>without&lt;/em> shipping your reading habits to OpenAI, Karakeep&amp;rsquo;s Ollama support is a real differentiator &amp;ndash; you can run the entire tagging pipeline on your own hardware. Linkwarden&amp;rsquo;s standout row is &lt;strong>full-page archival&lt;/strong>, which it does more maturely than anything else in the category.&lt;/p>
&lt;h2 id="self-hosting-footprint-the-homelab-part">Self-hosting footprint (the homelab part)&lt;/h2>
&lt;p>Neither is a one-container drop-in, so size your box accordingly.&lt;/p>
&lt;p>&lt;strong>Karakeep&lt;/strong> runs &lt;strong>three services&lt;/strong>: the main web app, a &lt;strong>headless Chrome&lt;/strong> instance (for archival and screenshots), and &lt;strong>Meilisearch&lt;/strong> for search. In practice the core app sits around ~200MB RAM, Meilisearch ~100MB, and the Chromium crawler can spike to ~500MB while it processes a page &amp;ndash; so a typical deployment is comfortable on a &lt;strong>2GB-RAM&lt;/strong> box, with at least ~1GB free recommended so Meilisearch has breathing room (&lt;a href="https://docs.karakeep.app/installation/docker/" rel="noopener">Karakeep Docker docs&lt;/a>).&lt;/p>
&lt;p>&lt;strong>Linkwarden&amp;rsquo;s&lt;/strong> standard &lt;a href="https://docs.linkwarden.app/self-hosting/installation" rel="noopener">Docker Compose&lt;/a> brings up the app with &lt;strong>PostgreSQL&lt;/strong> plus &lt;strong>Meilisearch&lt;/strong>. Same ballpark &amp;ndash; plan on a couple of gigabytes of RAM and a Docker host you already run.&lt;/p>
&lt;p>Either fits fine on a mini PC or a small Proxmox LXC/VM. If you don&amp;rsquo;t already have a Docker host, our &lt;a href="https://techfuelhq.com/tutorials/docker-compose-starter-stack-homelab-2026/">Docker Compose starter stack&lt;/a> gets you to a clean base in an afternoon, and the &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">best mini PCs for a homelab&lt;/a> covers the hardware to run it on.&lt;/p>
&lt;h2 id="which-should-you-pick">Which should you pick?&lt;/h2>
&lt;p>&lt;strong>Choose Karakeep if:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>You save a &lt;em>mix&lt;/em> of things &amp;ndash; links, notes, screenshots, PDFs &amp;ndash; and want them organized, not just listed.&lt;/li>
&lt;li>You want automatic tagging and are happy to point it at a &lt;strong>local Ollama&lt;/strong> model to keep everything private.&lt;/li>
&lt;li>You value faster, nicer first-party apps for day-to-day capture.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Choose Linkwarden if:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Your top priority is &lt;strong>permanence&lt;/strong> &amp;ndash; a self-owned PDF/screenshot of every page that survives link rot.&lt;/li>
&lt;li>You want the more &lt;strong>mature, battle-tested&lt;/strong> project with the most polished archive view.&lt;/li>
&lt;li>You mostly save &lt;em>links&lt;/em> (articles, references) rather than mixed media, and &amp;ldquo;find it later&amp;rdquo; matters less than &amp;ldquo;still have it later.&amp;rdquo;&lt;/li>
&lt;/ul>
&lt;p>If you genuinely can&amp;rsquo;t decide, default to &lt;strong>Linkwarden for an archive you&amp;rsquo;ll trust in five years&lt;/strong>, or &lt;strong>Karakeep for a living, AI-organized knowledge base you&amp;rsquo;ll actually browse&lt;/strong>. Both are AGPL-3.0 and Docker-native, so trying one and migrating later is a weekend, not a commitment.&lt;/p>
&lt;h2 id="where-these-fit-in-a-self-hosted-stack">Where these fit in a self-hosted stack&lt;/h2>
&lt;p>A bookmark manager is one of the highest-value, lowest-effort self-hosted apps you can run &amp;ndash; it replaces a SaaS you&amp;rsquo;d otherwise rent, and your data never leaves your network. For the broader picture of which SaaS tools are genuinely worth self-hosting (and which aren&amp;rsquo;t), see &lt;a href="https://techfuelhq.com/articles/self-hosted-apps-replace-saas-2026/">self-hosted apps that replace SaaS&lt;/a>, and if you&amp;rsquo;re weighing &lt;em>other&lt;/em> head-to-head homelab choices, the &lt;a href="https://techfuelhq.com/homelab/komodo-vs-portainer-vs-dockge-2026/">Komodo vs Portainer vs Dockge&lt;/a> breakdown uses the same &amp;ldquo;match the tool to your actual problem&amp;rdquo; approach.&lt;/p>
&lt;p>One category note before you commit to either: both of these are &lt;em>bookmark managers&lt;/em>, built to organize and preserve links at scale. If your real goal is reading — a clean reader view for articles you save on your phone and finish on the couch, the job Pocket did until it shut down — that is a neighbouring category with different tools, compared in &lt;a href="https://techfuelhq.com/homelab/self-hosted-read-it-later-2026/">self-hosted read-it-later apps&lt;/a>.&lt;/p>
&lt;p>The honest bottom line: in 2026 these are the two best self-hosted bookmark managers, they share a license and a search engine, and they barely compete on quality &amp;ndash; they compete on &lt;em>intent&lt;/em>. Decide whether you&amp;rsquo;re organizing or archiving, and the choice makes itself.&lt;/p></description></item><item><title>Star Citizen Error 5007: Read Your Log First (2026)</title><link>https://techfuelhq.com/gaming/star-citizen/star-citizen-error-5007-fix/</link><pubDate>Sun, 28 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/gaming/star-citizen/star-citizen-error-5007-fix/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-28 · ~10 min read · St. Louis County, MO&lt;/p>
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR · Stop guessing at 5007&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>5007 is not one problem.&lt;/strong> It is the RSI Launcher's generic "Datapatcher - Unknown error." The real cause is written in your &lt;strong>log.log&lt;/strong>.&lt;/li>
&lt;li>&lt;strong>Read the log first&lt;/strong> (60 seconds): RSI logo &amp;rarr; Settings &amp;rarr; Application &amp;rarr; Get Log &amp;rarr; search for "Could not resolve host", "permission", or "verify".&lt;/li>
&lt;li>&lt;strong>Most common on a fresh install:&lt;/strong> an &lt;strong>NVMe sector-size mismatch&lt;/strong> -- fixed with one reversible registry command (or install to a SATA drive).&lt;/li>
&lt;li>&lt;strong>Most common while updating:&lt;/strong> &lt;strong>DNS&lt;/strong> ("could not resolve host") or &lt;strong>low virtual memory&lt;/strong>.&lt;/li>
&lt;li>&lt;strong>Don't&lt;/strong> reinstall 100GB or disable Windows security on a guess. Use the tool below to find &lt;em>your&lt;/em> fix.&lt;/li>
&lt;/ul>
&lt;/div>
&lt;p>If you have hit &lt;strong>error 5007&lt;/strong> in Star Citizen, the internet has probably already told you to &amp;ldquo;verify your files&amp;rdquo; or &amp;ldquo;reinstall the game.&amp;rdquo; Most of the time that is wrong, and it costs you an evening and a 100 GB re-download. Here is the honest version: 5007 is the RSI Launcher&amp;rsquo;s catch-all for a patch step that failed, the &lt;em>actual&lt;/em> reason is sitting in a log file, and once you read that line, the fix is usually small and specific.&lt;/p>
&lt;p>This guide does three things the 60-second fix videos do not: it tells you what 5007 really is, it shows you the one-minute log check that reveals your cause, and it ranks the real fixes &amp;ndash; with a small tool to point you straight at yours.&lt;/p>
&lt;h2 id="what-error-5007-actually-is">What error 5007 actually is&lt;/h2>
&lt;p>In the RSI Launcher, the &lt;strong>Datapatcher&lt;/strong> is the engine that downloads and applies game patches. When it fails for a reason it cannot classify, it reports &lt;strong>5007 &amp;ndash; &amp;ldquo;Datapatcher - Unknown error.&amp;rdquo;&lt;/strong> That is the key word: &lt;em>unknown.&lt;/em> It is an umbrella code, not a diagnosis.&lt;/p>
&lt;p>You can see this in the codes around it, which RSI&amp;rsquo;s launcher does name:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>5001&lt;/strong> &amp;ndash; Datapatcher: Fix Permissions (the launcher cannot write to the game folder)&lt;/li>
&lt;li>&lt;strong>5006&lt;/strong> &amp;ndash; Failed to verify a file (corrupted or incomplete data)&lt;/li>
&lt;li>&lt;strong>5015&lt;/strong> &amp;ndash; Network: could not resolve host &lt;code>builds.robertsspaceindustries.com&lt;/code> (DNS/network)&lt;/li>
&lt;/ul>
&lt;p>So 5007 is &amp;ldquo;something in the patch pipeline broke and I cannot tell you what.&amp;rdquo; The same code can mean a storage problem on one PC, a DNS problem on another, and a low-memory problem on a third. That is exactly why a one-size fix does not exist &amp;ndash; and why the first move is to read the log, not to start deleting things.&lt;/p>
&lt;h2 id="step-0-the-60-second-log-check-do-this-first">Step 0: the 60-second log check (do this first)&lt;/h2>
&lt;p>This is read-only, it cannot hurt anything, and it is the single most useful thing you can do.&lt;/p>
&lt;ol>
&lt;li>Open the &lt;strong>RSI Launcher&lt;/strong>.&lt;/li>
&lt;li>Click the &lt;strong>RSI logo&lt;/strong> in the top-left, then &lt;strong>Settings&lt;/strong>.&lt;/li>
&lt;li>Go to &lt;strong>Application&lt;/strong> and click &lt;strong>Get Log&lt;/strong> &amp;ndash; it opens the folder containing &lt;code>log.log&lt;/code>.&lt;/li>
&lt;li>Open &lt;strong>log.log&lt;/strong> in Notepad and press &lt;strong>Ctrl+F&lt;/strong> to search for:
&lt;ul>
&lt;li>&lt;strong>&amp;ldquo;Could not resolve host&amp;rdquo;&lt;/strong> → a &lt;strong>DNS / network&lt;/strong> problem (see fix B)&lt;/li>
&lt;li>&lt;strong>&amp;ldquo;permission&amp;rdquo;&lt;/strong> or &lt;strong>&amp;ldquo;access&amp;rdquo;&lt;/strong> → a &lt;strong>permissions / install-path&lt;/strong> problem (fix D)&lt;/li>
&lt;li>&lt;strong>&amp;ldquo;verify&amp;rdquo;&lt;/strong> → &lt;strong>corrupted files&lt;/strong> (fix E)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>While you are at it, open &lt;strong>status.robertsspaceindustries.com&lt;/strong> &amp;ndash; if RSI&amp;rsquo;s servers are down, 5007 is on their end and waiting is the fix.&lt;/li>
&lt;/ol>
&lt;p>Whatever phrase you find points you at the right fix below. If you are not sure, the tool here will walk you through it.&lt;/p>
&lt;div class="visual-block" style="margin:1.5rem 0;">
&lt;div id="sc5007-tool" style="background:#0a0a23;border:1px solid #1e1e3a;border-radius:10px;padding:22px 18px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;">
&lt;div style="font-size:17px;font-weight:700;color:#c8ff00;">Find your 5007 fix&lt;/div>
&lt;div style="font-size:13px;color:#9090a8;margin:4px 0 16px;">Pick what matches your situation. This tool only shows you the exact command or setting to run yourself -- it never changes anything on your PC.&lt;/div>
&lt;div id="sc5007-buttons" style="display:flex;flex-direction:column;gap:8px;">&lt;/div>
&lt;div id="sc5007-result" style="margin-top:16px;">&lt;/div>
&lt;noscript>&lt;div style="color:#c89090;font-size:13px;">This picker needs JavaScript. The same fixes are written out in full below.&lt;/div>&lt;/noscript>
&lt;/div>
&lt;/div>
&lt;script>
(function(){
var fixes = [
{key:'nvme', label:'Fresh install fails on an NVMe SSD (works on a SATA drive)',
title:'NVMe sector-size mismatch', color:'#ed6a5a',
what:'Advanced-format (4Kn) NVMe drives report 4096-byte sectors, which the Datapatcher can mishandle. The classic tell: the install fails on your NVMe but succeeds on a SATA SSD or hard drive.',
cmd:'reg add "HKLM\\SYSTEM\\CurrentControlSet\\Services\\stornvme\\Parameters\\Device" /v "ForcedPhysicalSectorSizeInBytes" /t REG_MULTI_SZ /d "* 4095" /f',
after:'Run this in an admin Command Prompt, then RESTART the PC, delete the failed partial install, and retry. (Simplest alternative: install Star Citizen to a SATA SSD/HDD instead.)',
risk:'Edits a storage-driver registry key (does not touch any security feature).',
undo:'reg delete "HKLM\\SYSTEM\\CurrentControlSet\\Services\\stornvme\\Parameters\\Device" /v "ForcedPhysicalSectorSizeInBytes" /f'},
{key:'dns', label:'log.log says "Could not resolve host" (or it fails while updating)',
title:'DNS / network', color:'#5090e0',
what:'The launcher cannot reach builds.robertsspaceindustries.com to pull the patch. Switching DNS and flushing the cache fixes most of these.',
steps:'Settings > Network &amp; internet > your connection > DNS server assignment > Edit > Manual > IPv4 On > Preferred DNS 1.1.1.1 (or 8.8.8.8) > Save.',
cmd:'ipconfig /flushdns',
after:'Run the flush in an admin Command Prompt, reopen the launcher, and retry. If it still fails, try a VPN set to a different country.',
risk:'Low -- a reversible network setting; no security feature disabled.',
undo:'Set DNS assignment back to Automatic (DHCP).'},
{key:'pagefile', label:'Low RAM, or it fails near the end of a large patch',
title:'Virtual memory (pagefile) too small', color:'#c8a03c',
what:'The patch needs large temporary space; on RAM-limited PCs it runs out of pagefile. Players have fixed 5007 by raising the pagefile and freeing disk.',
steps:'Search "Advanced system settings" > Advanced > Performance Settings > Advanced > Virtual memory > Change > uncheck "Automatically manage" > Custom size. A known-good value on 16GB RAM is Initial 24576 / Maximum 49152 (MB). Keep well over 60GB free on the drive. Restart and retry.',
risk:'Low -- a standard, reversible Windows setting.',
undo:'Re-check "Automatically manage paging file size for all drives."'},
{key:'path', label:'Installed to a non-default drive, or had an old install elsewhere',
title:'Install-path / leftover files / permissions', color:'#5dca7a',
what:'Stale partial installs on another drive, a non-default path, or missing write permission (code 5001) make the Datapatcher fail.',
steps:'1) Launcher > Settings > confirm the Library Folder path. 2) Delete old partial installs on other drives. 3) Right-click the launcher > Run as administrator. 4) If the target folder is missing, create it manually to match the launcher path, then retry.',
risk:'Low -- reversible; no security feature touched.',
undo:'No undo needed; these are normal file/permission steps.'},
{key:'verify', label:'log.log says "verify", or the patch was interrupted',
title:'Corrupted files / stale cache', color:'#5dca7a',
what:'Bad data from an interrupted patch. Verify and cache-clear are safe and far cheaper than a reinstall.',
steps:'Launcher > Settings > select your channel (LIVE/PTU) > VERIFY. Or Settings > Application > CLEAR LAUNCHER CACHE. Or close the launcher and delete the StarCitizen\\&lt;channel>\\USER folder (resets settings only, not the whole game).',
risk:'Low -- verify and cache-clear are safe. Avoid a full reinstall unless everything else fails.',
undo:'No undo needed.'},
{key:'sac', label:'Windows 11, nothing above worked, and Smart App Control is On',
title:'Smart App Control (LAST RESORT)', color:'#ed6a5a',
what:'Smart App Control can silently block the unsigned Star Citizen launcher or anti-cheat -- a real but UNCOMMON cause. Confirm it before disabling, because it lowers security for your whole PC.',
steps:'CONFIRM FIRST: look for a "Smart App Control blocked an app" notice, or check Event Viewer > Applications and Services Logs > Microsoft > Windows > CodeIntegrity for a block on the launcher/EAC. ONLY if confirmed: Windows Security > App &amp; browser control > Smart App Control settings > Off, then restart.',
risk:'HIGH -- this disables a malware/PUA protection layer system-wide (no per-app allowlist). Re-enable it once the anti-cheat is trusted.',
undo:'Re-enable in Windows Security (an April 2026 Windows update allows this without a reinstall, but it is rolling out gradually).'},
{key:'unsure', label:'Not sure / I have not read the log yet',
title:'Read log.log first', color:'#c8ff00',
what:'Do not change anything yet. The log tells you which fix you need.',
steps:'RSI Launcher > click the RSI logo (top-left) > Settings > Application > Get Log > open log.log in Notepad > Ctrl+F for "Could not resolve host" (=DNS), "permission"/"access" (=path), or "verify" (=files). Also check status.robertsspaceindustries.com.',
risk:'None -- this is read-only.',
undo:'Nothing to undo.'}
];
function esc(s){return String(s).replace(/&amp;/g,'&amp;amp;').replace(/&lt;/g,'&amp;lt;').replace(/>/g,'&amp;gt;');}
function cmdBlock(label,cmd){
return '&lt;div style="margin:10px 0 0;">&lt;div style="font-size:11px;color:#7a7a96;text-transform:uppercase;letter-spacing:0.04em;margin-bottom:4px;">'+label+'&lt;/div>'+
'&lt;div style="display:flex;gap:8px;align-items:flex-start;">&lt;code style="flex:1;background:#11112a;border:1px solid #262648;border-radius:6px;padding:8px 10px;font-size:12px;color:#dcdcea;word-break:break-all;white-space:pre-wrap;">'+esc(cmd)+'&lt;/code>'+
'&lt;button type="button" data-cmd="'+esc(cmd)+'" style="flex:none;background:#c8ff00;color:#0a0a23;border:0;border-radius:6px;padding:8px 12px;font-size:12px;font-weight:700;cursor:pointer;">Copy&lt;/button>&lt;/div>&lt;/div>';
}
function render(f){
var h='&lt;div style="border-left:4px solid '+f.color+';background:rgba(255,255,255,0.02);border-radius:6px;padding:14px 16px;">';
h+='&lt;div style="font-size:15px;font-weight:700;color:'+f.color+';">'+esc(f.title)+'&lt;/div>';
h+='&lt;p style="margin:8px 0 0;font-size:13.5px;line-height:1.55;color:#cfcfe0;">'+esc(f.what)+'&lt;/p>';
if(f.steps){h+='&lt;p style="margin:10px 0 0;font-size:13px;line-height:1.55;color:#b8b8cc;">'+esc(f.steps)+'&lt;/p>';}
if(f.cmd){h+=cmdBlock('Run this yourself (admin Command Prompt)',f.cmd);}
if(f.after){h+='&lt;p style="margin:10px 0 0;font-size:12.5px;color:#9090a8;">'+esc(f.after)+'&lt;/p>';}
h+='&lt;div style="margin-top:10px;font-size:12.5px;color:#c8b87a;">&lt;strong>Risk:&lt;/strong> '+esc(f.risk)+'&lt;/div>';
if(f.undo){ if(/reg delete|ipconfig/.test(f.undo)){h+=cmdBlock('How to undo it',f.undo);} else {h+='&lt;div style="margin-top:6px;font-size:12.5px;color:#9090a8;">&lt;strong>Undo:&lt;/strong> '+esc(f.undo)+'&lt;/div>';} }
h+='&lt;/div>';
return h;
}
var wrap=document.getElementById('sc5007-buttons');
var out=document.getElementById('sc5007-result');
if(!wrap||!out){return;}
fixes.forEach(function(f){
var b=document.createElement('button');
b.type='button';
b.textContent=f.label;
b.style.cssText='text-align:left;background:#11112a;color:#dcdcea;border:1px solid #262648;border-radius:8px;padding:11px 14px;font-size:13.5px;cursor:pointer;line-height:1.4;';
b.addEventListener('click',function(){
var all=wrap.getElementsByTagName('button');
for(var i=0;i&lt;all.length;i++){all[i].style.borderColor='#262648';all[i].style.background='#11112a';}
b.style.borderColor=f.color;b.style.background='#161636';
out.innerHTML=render(f);
});
wrap.appendChild(b);
});
out.addEventListener('click',function(e){
var t=e.target;
if(t&amp;&amp;t.tagName==='BUTTON'&amp;&amp;t.getAttribute('data-cmd')){
var cmd=t.getAttribute('data-cmd');
if(navigator.clipboard&amp;&amp;navigator.clipboard.writeText){
navigator.clipboard.writeText(cmd).then(function(){t.textContent='Copied';setTimeout(function(){t.textContent='Copy';},1500);});
}
}
});
})();
&lt;/script>
&lt;h2 id="the-fixes-ranked">The fixes, ranked&lt;/h2>
&lt;p>The tool above gives you the short version; here is the full detail for each, in rough order of how often they actually resolve 5007.&lt;/p>
&lt;p>&lt;strong>A. NVMe sector-size mismatch (top cause on fresh installs).&lt;/strong> Advanced-format NVMe drives present 4096-byte sectors that the Datapatcher can choke on. If the install fails on your NVMe but works on a SATA drive, force the OS to present 512-byte sectors with the registry command in the tool, restart, delete the failed partial install, and retry. It is reversible by deleting that value. If you would rather not touch the registry, install to a SATA SSD or hard drive instead.&lt;/p>
&lt;p>&lt;strong>B. DNS / &amp;ldquo;could not resolve host.&amp;rdquo;&lt;/strong> If &lt;code>log.log&lt;/code> shows it cannot resolve &lt;code>builds.robertsspaceindustries.com&lt;/code>, change your DNS to 1.1.1.1 (or 8.8.8.8), run &lt;code>ipconfig /flushdns&lt;/code> in an admin prompt, and retry. A VPN set to a different country sometimes clears stubborn CDN-routing cases. This is the most common cause of &lt;em>update&lt;/em> (not first-install) failures.&lt;/p>
&lt;p>&lt;strong>C. Virtual memory (pagefile).&lt;/strong> The patch needs large transient space; RAM-limited PCs run out. Raise the pagefile (a known-good value on 16 GB of RAM is 24576 MB initial / 49152 MB max) and keep well over 60 GB free, then retry. It is a standard, reversible Windows setting.&lt;/p>
&lt;p>&lt;strong>D. Install path, leftover files, and permissions.&lt;/strong> Confirm your library path, delete stale partial installs on other drives, run the launcher as administrator, and create the target folder manually if it is missing (this covers the 5001 &amp;ldquo;fix permissions&amp;rdquo; case too).&lt;/p>
&lt;p>&lt;strong>E. Verify files / clear cache (not a full reinstall).&lt;/strong> If the log says &amp;ldquo;verify,&amp;rdquo; use the launcher&amp;rsquo;s VERIFY, clear the launcher cache, or delete the &lt;code>USER&lt;/code> folder. Avoid a full 100+ GB reinstall unless everything else has failed &amp;ndash; it usually does not fix DNS- or storage-rooted 5007 anyway.&lt;/p>
&lt;p>&lt;strong>F. Antivirus and clock.&lt;/strong> Whitelist the launcher and game folder in third-party antivirus (or pause it briefly to test), disable VPN &amp;ldquo;web protection&amp;rdquo; features during the patch, and make sure your system clock is set automatically &amp;ndash; a wrong clock breaks the secure connection to RSI&amp;rsquo;s servers.&lt;/p>
&lt;p>&lt;strong>G. Smart App Control (Windows 11, last resort).&lt;/strong> Only if you are on Windows 11, every fix above failed, and you have &lt;em>confirmed&lt;/em> in Event Viewer that Smart App Control blocked the launcher or anti-cheat. Disabling it lowers security for your whole PC, so re-enable it afterward. This is the same Windows feature covered in depth in the &lt;a href="https://techfuelhq.com/gaming/easy-anti-cheat-fix-guide-2026/">Easy Anti-Cheat fix guide&lt;/a>, because it blocks EAC the same way it blocks the RSI launcher.&lt;/p>
&lt;h2 id="my-own-5007-and-why-this-guide-exists">My own 5007, and why this guide exists&lt;/h2>
&lt;p>I hit 5007 on a clean Windows 11 install on my own 7800X3D / RTX 5080 build. I did the obvious things first &amp;ndash; verified, cleared cache, ran as admin &amp;ndash; and none of it changed anything, because the launcher&amp;rsquo;s unsigned executable was being blocked by &lt;strong>Smart App Control&lt;/strong>, and nothing in the 5007 message said so. The fix took thirty seconds once I knew the cause; finding the cause took the log. That is the whole lesson here: 5007 hides its reason, the reason is in the log, and the right fix is small once you read it. Most guides skip that and send you straight to a reinstall.&lt;/p>
&lt;h2 id="what-not-to-do">What not to do&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Do not reinstall the whole game first.&lt;/strong> It is the slowest &amp;ldquo;fix&amp;rdquo; and rarely the right one for 5007.&lt;/li>
&lt;li>&lt;strong>Do not disable Windows security on a guess.&lt;/strong> Smart App Control is a real but uncommon cause; confirm it before you touch it.&lt;/li>
&lt;li>&lt;strong>Do not run a downloaded &amp;ldquo;Star Citizen fixer&amp;rdquo; tool.&lt;/strong> Everything you need is a Windows setting or a command you can read &amp;ndash; nothing to install.&lt;/li>
&lt;/ul>
&lt;h2 id="where-to-go-next">Where to go next&lt;/h2>
&lt;p>If your launch problem turns out to be the anti-cheat rather than the patcher, the cross-game &lt;a href="https://techfuelhq.com/gaming/easy-anti-cheat-fix-guide-2026/">Easy Anti-Cheat fix guide&lt;/a> ranks those fixes the same way. For everything else Star Citizen &amp;ndash; specs, settings, and performance &amp;ndash; see the &lt;a href="https://techfuelhq.com/gaming/star-citizen/">Star Citizen troubleshooting hub&lt;/a>, and if the game launches fine but runs badly, the &lt;a href="https://techfuelhq.com/gaming/star-citizen/star-citizen-best-settings-fps-2026/">best settings for FPS guide&lt;/a> covers which dials actually move the frame rate. And if your 5007 traced back to an undersized drive or too little RAM, that is no accident: the &lt;a href="https://techfuelhq.com/gaming/star-citizen/star-citizen-system-requirements-2026/">Star Citizen system requirements guide&lt;/a> explains why RAM and a fast NVMe matter more than your GPU, and the &lt;a href="https://techfuelhq.com/articles/ram-ssd-price-crisis-2026/">2026 RAM and SSD price reality&lt;/a> covers how to buy them.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>Roberts Space Industries &amp;ndash; Error 2000 or 50XX (Datapatcher codes): &lt;a href="https://support.robertsspaceindustries.com/hc/en-us/articles/22514899089431-Error-2000-or-50XX" rel="noopener">https://support.robertsspaceindustries.com/hc/en-us/articles/22514899089431-Error-2000-or-50XX&lt;/a>&lt;/li>
&lt;li>Roberts Space Industries &amp;ndash; Troubleshoot the RSI Launcher: &lt;a href="https://support.robertsspaceindustries.com/hc/en-us/articles/360000161747-Troubleshoot-the-RSI-Launcher" rel="noopener">https://support.robertsspaceindustries.com/hc/en-us/articles/360000161747-Troubleshoot-the-RSI-Launcher&lt;/a>&lt;/li>
&lt;li>RSI status (server-side outages): &lt;a href="https://status.robertsspaceindustries.com" rel="noopener">https://status.robertsspaceindustries.com&lt;/a>&lt;/li>
&lt;li>Microsoft &amp;ndash; What is Smart App Control: &lt;a href="https://support.microsoft.com/en-us/topic/what-is-smart-app-control-285ea03d-fa88-4d56-882e-6698afdb7003" rel="noopener">https://support.microsoft.com/en-us/topic/what-is-smart-app-control-285ea03d-fa88-4d56-882e-6698afdb7003&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Star Citizen System Requirements &amp; Recommended Specs (2026)</title><link>https://techfuelhq.com/gaming/star-citizen/star-citizen-system-requirements-2026/</link><pubDate>Sun, 28 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/gaming/star-citizen/star-citizen-system-requirements-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-28 · ~10 min read · St. Louis County, MO&lt;/p>
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR · What Star Citizen really needs&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>The official minimum lets it launch, not run well.&lt;/strong> 16GB RAM and a GTX 1060 will start the game; they will not give you a smooth one.&lt;/li>
&lt;li>&lt;strong>RAM is the #1 thing.&lt;/strong> The game uses &lt;strong>18-24GB&lt;/strong> in busy areas, so &lt;strong>32GB&lt;/strong> is the real 2026 minimum. With 16GB you swap to disk and stutter.&lt;/li>
&lt;li>&lt;strong>An NVMe SSD is the #2 thing.&lt;/strong> Star Citizen streams constantly; a slow drive causes missing textures and clipping, not just long loads.&lt;/li>
&lt;li>&lt;strong>It's more CPU/RAM/IO-bound than GPU-bound.&lt;/strong> A mid-range 8GB+ GPU with 32GB and an NVMe beats a top GPU with 16GB and a slow disk.&lt;/li>
&lt;li>&lt;strong>Target by resolution:&lt;/strong> 1080p = 8GB GPU; 1440p = 12GB; 4K = 16GB. Plus 32GB RAM and NVMe at every tier.&lt;/li>
&lt;/ul>
&lt;/div>
&lt;p>Most &amp;ldquo;Star Citizen system requirements&amp;rdquo; pages just copy the official spec sheet and move on. The problem is that the official sheet is misleading &amp;ndash; not wrong, but it lists what gets the game to a menu, not what gets you a stable session in a hundred-player city. This guide gives you both: the real official numbers, and the honest 2026 reality of what actually decides whether Star Citizen runs well, which is mostly your RAM and your SSD &amp;ndash; not your graphics card.&lt;/p>
&lt;h2 id="the-official-minimum-requirements">The official minimum requirements&lt;/h2>
&lt;p>These are the current, officially published minimums. Treat them as &amp;ldquo;the game will start,&amp;rdquo; not &amp;ldquo;the game will be smooth.&amp;rdquo;&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Component&lt;/th>
&lt;th scope="col">Official minimum&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>OS&lt;/strong>&lt;/td>
&lt;td>Windows 10 64-bit (latest update)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>CPU&lt;/strong>&lt;/td>
&lt;td>Quad-core with AVX, AVX2 &amp;amp; FMA3 &amp;ndash; Intel i7 Haswell (4th gen) or later, AMD Ryzen 5 1600 / Excavator or later&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>GPU&lt;/strong>&lt;/td>
&lt;td>DirectX 11.1 / Vulkan 1.2 capable, &lt;strong>4GB VRAM&lt;/strong> (GTX 1060 / RX 580 class)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>RAM&lt;/strong>&lt;/td>
&lt;td>&lt;strong>16GB&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Storage&lt;/strong>&lt;/td>
&lt;td>&lt;strong>100GB+ free on an SSD&lt;/strong> (NTFS), plus room for the pagefile&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The thing to understand: Star Citizen is in active development, its build keeps growing, and its real memory and storage behavior outpaces that 16GB / 100GB line. The official sheet even pairs with a &amp;ldquo;recommended&amp;rdquo; tier of Windows 11, an 8-core CPU, an 8GB+ DirectX 12 GPU, and &lt;strong>32GB of RAM&lt;/strong> &amp;ndash; which is much closer to the truth.&lt;/p>
&lt;h2 id="why-the-minimum-lies-ram-is-the-real-bottleneck">Why the minimum lies: RAM is the real bottleneck&lt;/h2>
&lt;p>Here is the single most useful fact in this whole guide. In a busy landing zone or a populated server, the Star Citizen process alone commonly uses &lt;strong>18 to 24GB of RAM&lt;/strong>. If you only have 16GB installed, the game needs more memory than you have, so Windows pushes the overflow into the pagefile on your SSD &amp;ndash; and that swapping is what produces the stutter and frame hitches people blame on their GPU. No graphics card fixes a memory problem.&lt;/p>
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;padding:28px 16px 22px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;">
&lt;div style="text-align:center;margin-bottom:14px;">
&lt;div style="font-size:18px;font-weight:600;letter-spacing:-0.3px;">Why 16GB isn't enough for Star Citizen&lt;/div>
&lt;div style="font-size:12px;color:#9a9ab5;margin-top:4px;">The game's real memory use vs what each kit gives you&lt;/div>
&lt;/div>
&lt;svg viewBox="0 0 760 300" xmlns="http://www.w3.org/2000/svg" style="width:100%;display:block;" role="img" aria-label="Star Citizen uses about 18 to 24 GB of RAM in a busy area. A 16GB kit ends before that range, so the overflow swaps to disk and stutters. A 32GB kit covers the same usage with headroom to spare.">
&lt;rect x="420" y="48" width="90" height="200" fill="rgba(237,106,90,0.12)">&lt;/rect>
&lt;text x="465" y="40" font-size="12" font-weight="600" fill="#ed8a7a" text-anchor="middle">busy-city use&lt;/text>
&lt;text x="465" y="266" font-size="11" fill="#c89090" text-anchor="middle">~18-24 GB&lt;/text>
&lt;line x1="150" y1="248" x2="690" y2="248" stroke="rgba(255,255,255,0.18)" stroke-width="1">&lt;/line>
&lt;text x="150" y="266" font-size="10" fill="#9a9ab5" text-anchor="middle">0&lt;/text>
&lt;text x="270" y="266" font-size="10" fill="#9a9ab5" text-anchor="middle">8&lt;/text>
&lt;text x="390" y="266" font-size="10" fill="#9a9ab5" text-anchor="middle">16&lt;/text>
&lt;text x="510" y="266" font-size="10" fill="#9a9ab5" text-anchor="middle">24&lt;/text>
&lt;text x="630" y="266" font-size="10" fill="#9a9ab5" text-anchor="middle">32 GB&lt;/text>
&lt;rect x="150" y="92" width="240" height="40" rx="3" fill="#5090e0">&lt;/rect>
&lt;text x="160" y="84" font-size="13" font-weight="600" fill="#e8e8f0">16 GB - official minimum&lt;/text>
&lt;text x="400" y="116" font-size="12" font-weight="700" fill="#ed6a5a">ends before the game's needs -&amp;gt; swaps to disk&lt;/text>
&lt;rect x="150" y="168" width="480" height="40" rx="3" fill="#5dca7a">&lt;/rect>
&lt;text x="160" y="160" font-size="13" font-weight="600" fill="#e8e8f0">32 GB - recommended&lt;/text>
&lt;text x="572" y="193" font-size="12" font-weight="700" fill="#0a0a23" text-anchor="middle">headroom&lt;/text>
&lt;text x="645" y="192" font-size="12" font-weight="700" fill="#5dca7a">covers it&lt;/text>
&lt;/svg>
&lt;div style="font-size:11px;color:#9a9ab5;text-align:center;margin-top:10px;">Real-world memory use reported across Star Citizen community testing; 1 GB = the chart's horizontal unit.&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>Going from 16GB to 32GB is the highest-impact, best-value upgrade you can make for this game &amp;ndash; and with the &lt;a href="https://techfuelhq.com/articles/ram-ssd-price-crisis-2026/">2026 memory price spike&lt;/a>, it is also the upgrade to plan for deliberately rather than overspend on. If you are buying RAM, our &lt;a href="https://techfuelhq.com/articles/ddr5-ram-buying-guide-2025/">DDR5 buying guide&lt;/a> covers what actually matters (speed, timings, two sticks vs four).&lt;/p>
&lt;h2 id="the-2-bottleneck-your-ssd-has-to-be-fast">The #2 bottleneck: your SSD has to be fast&lt;/h2>
&lt;p>Star Citizen streams an enormous amount of data continuously as you fly between locations. A slow drive does not just make loads longer &amp;ndash; it makes assets &lt;em>fail to arrive on time&lt;/em>, which shows up as invisible terrain you fall through, missing or low-detail textures, doors that will not open, and general clipping. People often read those as &amp;ldquo;bugs&amp;rdquo; when they are really a storage-speed problem.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>SSD is mandatory.&lt;/strong> The game will not behave on a mechanical hard drive.&lt;/li>
&lt;li>&lt;strong>NVMe is strongly recommended.&lt;/strong> A good NVMe drive roughly halves load times versus a SATA SSD and smooths the transitions between locations.&lt;/li>
&lt;li>&lt;strong>Budget 150GB+ free&lt;/strong>, and double that if you also run the PTU test universe alongside the live build. The install keeps growing.&lt;/li>
&lt;/ul>
&lt;p>If your drive is the weak link, that is also the most common root cause behind launch and patch failures &amp;ndash; see the &lt;a href="https://techfuelhq.com/gaming/star-citizen/star-citizen-error-5007-fix/">log-first Error 5007 guide&lt;/a>, where an advanced-format NVMe is the top fix.&lt;/p>
&lt;h2 id="what-you-actually-need-in-2026-by-resolution">What you actually need in 2026, by resolution&lt;/h2>
&lt;p>This is the practical target. RAM and storage are constant across every tier because they are the real bottlenecks; the GPU is what scales with resolution.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Tier&lt;/th>
&lt;th scope="col">CPU&lt;/th>
&lt;th scope="col">GPU (VRAM)&lt;/th>
&lt;th scope="col">RAM&lt;/th>
&lt;th scope="col">Storage&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>1080p&lt;/strong>&lt;/td>
&lt;td>Ryzen 5 7600 / Core i5-13400&lt;/td>
&lt;td>RTX 4060 / RX 7600 (&lt;strong>8GB&lt;/strong>)&lt;/td>
&lt;td>&lt;strong>32GB&lt;/strong>&lt;/td>
&lt;td>1TB NVMe&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>1440p&lt;/strong>&lt;/td>
&lt;td>Ryzen 7 7700X / Core i5-14600K&lt;/td>
&lt;td>RTX 4070 / RX 7800 XT (&lt;strong>12GB&lt;/strong>)&lt;/td>
&lt;td>&lt;strong>32GB&lt;/strong>&lt;/td>
&lt;td>1-2TB NVMe&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>4K&lt;/strong>&lt;/td>
&lt;td>Ryzen 7 7800X3D / Core i7-14700K&lt;/td>
&lt;td>RTX 5080 / RX 9070 XT (&lt;strong>16GB&lt;/strong>)&lt;/td>
&lt;td>&lt;strong>32GB&lt;/strong> (64GB optional)&lt;/td>
&lt;td>2TB NVMe&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>A few honest notes on this table:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>CPU:&lt;/strong> Star Citizen loves per-core speed and benefits from AMD&amp;rsquo;s 3D V-Cache. The &lt;a href="https://techfuelhq.com/pc-builds/2500-dollar-7800x3d-rtx-5080-4k-build-2026/">Ryzen 7 7800X3D&lt;/a> is the standout value chip for it &amp;ndash; big cache, low power, excellent gaming performance. You do not need to jump to a 9800X3D for this game.&lt;/li>
&lt;li>&lt;strong>GPU:&lt;/strong> because the game is so often CPU/RAM/IO-limited, do not buy the most expensive card and pair it with weak memory and storage. VRAM is the spec to watch &amp;ndash; 8GB at 1080p, 12GB at 1440p, 16GB at 4K. The &lt;a href="https://techfuelhq.com/gpu-reviews/">GPU reviews&lt;/a> cover the specific cards.&lt;/li>
&lt;li>&lt;strong>RAM:&lt;/strong> 32GB everywhere. 64GB only helps if you multitask heavily (streaming, lots of browser tabs) while playing.&lt;/li>
&lt;/ul>
&lt;h2 id="is-your-pc-gpu-bound-or-something-else">Is your PC GPU-bound or something else?&lt;/h2>
&lt;p>The most common mistake is upgrading the graphics card to fix stutter that a memory or storage upgrade would actually cure. A quick way to think about it:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Stutter, hitching, long &amp;ldquo;loading&amp;rdquo; hangs, assets popping in late&lt;/strong> -&amp;gt; almost always RAM (you are swapping) or your SSD (too slow). Fix those first.&lt;/li>
&lt;li>&lt;strong>Low but &lt;em>steady&lt;/em> frame rate that drops as you raise resolution/settings&lt;/strong> -&amp;gt; that is the GPU. See the &lt;a href="https://techfuelhq.com/gaming/star-citizen/star-citizen-best-settings-fps-2026/">Star Citizen best settings for FPS guide&lt;/a> for the specific dials that move it. Lower settings or step up a card tier.&lt;/li>
&lt;li>&lt;strong>Poor performance only in crowded cities/servers&lt;/strong> -&amp;gt; partly the game&amp;rsquo;s server-side performance, and partly your CPU&amp;rsquo;s per-core speed. This is the one you cannot fully buy your way out of yet. If a game gives you the choice, the API matters here too &amp;ndash; see &lt;a href="https://techfuelhq.com/gaming/dx12-vs-dx11-fps-2026/">DX12 vs DX11&lt;/a> for which one helps when the CPU is the limit.&lt;/li>
&lt;/ul>
&lt;p>For a worked example of a machine that handles 4K Star Citizen with real headroom &amp;ndash; 7800X3D, RTX 5080, 32GB, NVMe &amp;ndash; see the &lt;a href="https://techfuelhq.com/pc-builds/2500-dollar-7800x3d-rtx-5080-4k-build-2026/">$2,500 4K build&lt;/a>, which was specced around exactly these priorities.&lt;/p>
&lt;h2 id="my-own-setup-and-what-mattered">My own setup, and what mattered&lt;/h2>
&lt;p>I run Star Citizen on a 7800X3D / RTX 5080 build with 32GB of RAM on an NVMe drive. The honest lesson from living with it: the GPU is the part I think about least. The things that decided whether a session was smooth were having enough RAM to never touch the pagefile and a fast enough SSD that assets streamed in before I reached them. If you only change one thing on an older machine, make it 32GB of RAM; if you can change two, make the second an NVMe SSD. The graphics card is where you spend what is left, sized to the resolution you actually play at.&lt;/p>
&lt;h2 id="where-to-go-next">Where to go next&lt;/h2>
&lt;ul>
&lt;li>It launches but errors out? &lt;a href="https://techfuelhq.com/gaming/star-citizen/star-citizen-error-5007-fix/">Star Citizen Error 5007: read your log first&lt;/a>.&lt;/li>
&lt;li>It is the anti-cheat, not the patcher? &lt;a href="https://techfuelhq.com/gaming/easy-anti-cheat-fix-guide-2026/">Easy Anti-Cheat fix guide&lt;/a>.&lt;/li>
&lt;li>Buying the RAM and SSD now? &lt;a href="https://techfuelhq.com/articles/ram-ssd-price-crisis-2026/">Why RAM and SSD prices tripled in 2026&lt;/a> explains the timing.&lt;/li>
&lt;li>Building the whole rig? The &lt;a href="https://techfuelhq.com/pc-builds/2500-dollar-7800x3d-rtx-5080-4k-build-2026/">$2,500 7800X3D + RTX 5080 4K build&lt;/a>.&lt;/li>
&lt;/ul>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>Roberts Space Industries &amp;ndash; Star Citizen Minimum System Requirements: &lt;a href="https://support.robertsspaceindustries.com/hc/en-us/articles/360042417374-Star-Citizen-Minimum-System-Requirements" rel="noopener">https://support.robertsspaceindustries.com/hc/en-us/articles/360042417374-Star-Citizen-Minimum-System-Requirements&lt;/a>&lt;/li>
&lt;li>Star Citizen Logbook &amp;ndash; system requirements (minimum + recommended tiers): &lt;a href="https://citizen-logbook.com/en/requirements" rel="noopener">https://citizen-logbook.com/en/requirements&lt;/a>&lt;/li>
&lt;li>Community testing on real-world RAM use and NVMe streaming behavior (StarCitizen.au, Doctor Memory): &lt;a href="https://starcitizen.au/system-requirements/" rel="noopener">https://starcitizen.au/system-requirements/&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Why RAM and SSD Prices Tripled in 2026 (and What to Do)</title><link>https://techfuelhq.com/articles/ram-ssd-price-crisis-2026/</link><pubDate>Sun, 28 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/ram-ssd-price-crisis-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-28 · ~11 min read · St. Louis County, MO&lt;/p>
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR · The 2026 memory crunch&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>What happened:&lt;/strong> consumer DDR5 RAM and NVMe SSDs roughly &lt;strong>tripled to quadrupled&lt;/strong> in price through 2026. A 32GB DDR5 kit that was ~$90 is now ~$375; a 2TB NVMe that was ~$130 is now $300-480.&lt;/li>
&lt;li>&lt;strong>Why:&lt;/strong> memory makers shifted wafer capacity to high-margin &lt;strong>AI data-center memory&lt;/strong> (HBM + high-capacity modules). It's a deliberate reallocation, not a factory failure.&lt;/li>
&lt;li>&lt;strong>When it ends:&lt;/strong> prices peak &lt;strong>Q3-Q4 2026&lt;/strong>; meaningful relief not before late 2026, and 2024 levels unlikely for 12-18 months. New capacity lands ~2027-2028.&lt;/li>
&lt;li>&lt;strong>What to do:&lt;/strong> if you need RAM/SSD, &lt;strong>buy now&lt;/strong> (prices are still climbing). &lt;strong>Right-size&lt;/strong> (32GB + a 1-2TB SSD for most), &lt;strong>reuse&lt;/strong> what you own, and budget extra for those two parts. GPUs and CPUs are comparatively stable.&lt;/li>
&lt;/ul>
&lt;/div>
&lt;p>If you priced a PC build in 2024 and went back to your cart in 2026, the shock isn&amp;rsquo;t the graphics card. It&amp;rsquo;s the two parts nobody used to think about: the RAM and the SSD. They quietly became the most expensive surprise in a modern build, and the reason has almost nothing to do with PCs.&lt;/p>
&lt;p>This is the explainer: the real numbers (cited, not vibes), the actual cause, the honest timeline, and a practical plan for building or upgrading during the crunch.&lt;/p>
&lt;h2 id="the-numbers-how-bad-it-actually-got">The numbers: how bad it actually got&lt;/h2>
&lt;p>&lt;strong>RAM.&lt;/strong> On June 3, 2026, &lt;a href="https://www.tomshardware.com/pc-components/ram/ram-price-index-2026-lowest-price-on-ddr5-and-ddr4-memory-of-all-capacities" rel="noopener">Tom&amp;rsquo;s Hardware&amp;rsquo;s daily RAM price tracker&lt;/a> recorded the cheapest in-stock 32GB DDR5 kit in the US at &lt;strong>$374.97&lt;/strong> — a kit class that routinely sold for &lt;strong>$80-120&lt;/strong> a year earlier. High-capacity 64GB kits that sat near $150-200 for most of 2025 now commonly list at &lt;strong>$600 or more&lt;/strong>. Across the board, consumer DRAM rose roughly &lt;strong>300-600%&lt;/strong> off its 2024-2025 lows, and &lt;a href="https://www.networkworld.com/article/4093752/server-memory-prices-could-double-by-2026-as-ai-demand-strains-supply.html" rel="noopener">DRAM contract prices jumped 55-60% in Q1 2026 alone&lt;/a>.&lt;/p>
&lt;p>&lt;strong>SSDs.&lt;/strong> Storage followed, with a lag and then a vengeance. &lt;a href="https://www.tweaktown.com/news/108804/nand-flash-pricing-for-ssds-has-doubled-in-six-months-2026-capacity-already-sold-out/index.html" rel="noopener">NAND flash pricing more than doubled in roughly six months&lt;/a>, and by mid-2026 NAND had risen close to 4x off its lows. A 2TB NVMe drive that could be found for &lt;strong>$120-150&lt;/strong> a year ago now lists at &lt;strong>$300-480&lt;/strong>; Samsung&amp;rsquo;s 990 Pro 2TB bottomed near $189 in 2025, while the newer 9100 Pro 2TB was listed around &lt;strong>$478&lt;/strong> in April 2026. Consumer SSDs broadly climbed 100-200% in a matter of months.&lt;/p>
&lt;p>To put it plainly: in a typical mainstream build, the memory and the boot drive went from &amp;ldquo;rounding error&amp;rdquo; to the two parts that can cost more than the CPU.&lt;/p>
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;padding:28px 16px 22px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;">
&lt;div style="text-align:center;margin-bottom:14px;">
&lt;div style="font-size:18px;font-weight:600;letter-spacing:-0.3px;">Same parts, one year apart: 2025 vs mid-2026&lt;/div>
&lt;div style="font-size:12px;color:#9a9ab5;margin-top:4px;">Typical US street prices for identical components&lt;/div>
&lt;/div>
&lt;svg viewBox="0 0 760 410" xmlns="http://www.w3.org/2000/svg" style="width:100%;display:block;" role="img" aria-label="Bar chart comparing 2025 and mid-2026 prices: a 32GB DDR5 kit rose from about 90 dollars to about 375, a 64GB DDR5 kit from about 175 dollars to about 600, and a 2TB NVMe SSD from about 130 dollars to about 390.">
&lt;rect x="455" y="18" width="14" height="14" rx="2" fill="#5090e0">&lt;/rect>
&lt;text x="475" y="30" font-size="12" fill="#9090a8">2025 (pre-shortage)&lt;/text>
&lt;rect x="610" y="18" width="14" height="14" rx="2" fill="#ed6a5a">&lt;/rect>
&lt;text x="630" y="30" font-size="12" fill="#9090a8">mid-2026&lt;/text>
&lt;line x1="100" y1="360" x2="710" y2="360" stroke="rgba(255,255,255,0.18)" stroke-width="1">&lt;/line>
&lt;line x1="100" y1="276" x2="710" y2="276" stroke="rgba(255,255,255,0.07)" stroke-width="1">&lt;/line>
&lt;line x1="100" y1="192" x2="710" y2="192" stroke="rgba(255,255,255,0.07)" stroke-width="1">&lt;/line>
&lt;line x1="100" y1="108" x2="710" y2="108" stroke="rgba(255,255,255,0.07)" stroke-width="1">&lt;/line>
&lt;text x="92" y="364" font-size="11" fill="#9a9ab5" text-anchor="end">$0&lt;/text>
&lt;text x="92" y="280" font-size="11" fill="#9a9ab5" text-anchor="end">$200&lt;/text>
&lt;text x="92" y="196" font-size="11" fill="#9a9ab5" text-anchor="end">$400&lt;/text>
&lt;text x="92" y="112" font-size="11" fill="#9a9ab5" text-anchor="end">$600&lt;/text>
&lt;rect x="151" y="322.2" width="46" height="37.8" rx="2" fill="#5090e0">&lt;/rect>
&lt;rect x="203" y="202.5" width="46" height="157.5" rx="2" fill="#ed6a5a">&lt;/rect>
&lt;text x="174" y="314" font-size="12" fill="#cfcfe0" text-anchor="middle">$90&lt;/text>
&lt;text x="226" y="194" font-size="13" font-weight="600" fill="#ffffff" text-anchor="middle">$375&lt;/text>
&lt;text x="226" y="179" font-size="11" font-weight="700" fill="#c8ff00" text-anchor="middle">~4x&lt;/text>
&lt;text x="200" y="382" font-size="12" fill="#b8b8cc" text-anchor="middle">32GB DDR5 kit&lt;/text>
&lt;rect x="351" y="286.5" width="46" height="73.5" rx="2" fill="#5090e0">&lt;/rect>
&lt;rect x="403" y="108" width="46" height="252" rx="2" fill="#ed6a5a">&lt;/rect>
&lt;text x="374" y="278" font-size="12" fill="#cfcfe0" text-anchor="middle">$175&lt;/text>
&lt;text x="426" y="100" font-size="13" font-weight="600" fill="#ffffff" text-anchor="middle">$600+&lt;/text>
&lt;text x="426" y="85" font-size="11" font-weight="700" fill="#c8ff00" text-anchor="middle">~3.4x&lt;/text>
&lt;text x="400" y="382" font-size="12" fill="#b8b8cc" text-anchor="middle">64GB DDR5 kit&lt;/text>
&lt;rect x="551" y="305.4" width="46" height="54.6" rx="2" fill="#5090e0">&lt;/rect>
&lt;rect x="603" y="196.2" width="46" height="163.8" rx="2" fill="#ed6a5a">&lt;/rect>
&lt;text x="574" y="297" font-size="12" fill="#cfcfe0" text-anchor="middle">$130&lt;/text>
&lt;text x="626" y="188" font-size="13" font-weight="600" fill="#ffffff" text-anchor="middle">$390&lt;/text>
&lt;text x="626" y="173" font-size="11" font-weight="700" fill="#c8ff00" text-anchor="middle">~3x&lt;/text>
&lt;text x="600" y="382" font-size="12" fill="#b8b8cc" text-anchor="middle">2TB NVMe SSD&lt;/text>
&lt;/svg>
&lt;div style="font-size:11px;color:#9a9ab5;text-align:center;margin-top:10px;">Source: Tom's Hardware RAM and SSD price trackers, June 2026. 2025 figures are typical pre-shortage street prices.&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="why-is-ram-so-expensive-your-dimm-lost-a-bidding-war-to-a-server">Why is RAM so expensive? Your DIMM lost a bidding war to a server&lt;/h2>
&lt;p>The shortage is not a manufacturing breakdown. It&amp;rsquo;s a &lt;strong>capacity reallocation&lt;/strong>, and the buyer who outbid you is an AI data center.&lt;/p>
&lt;p>Memory makers have a finite amount of wafer capacity, and in 2026 they pointed it at the most profitable product they make: &lt;strong>high-bandwidth memory (HBM)&lt;/strong> and high-capacity modules for AI accelerators. &lt;a href="https://www.idc.com/resource-center/blog/global-memory-shortage-crisis-market-analysis-and-the-potential-impact-on-the-smartphone-and-pc-markets-in-2026/" rel="noopener">IDC and other analysts&lt;/a> describe a deliberate shift of production away from consumer electronics toward AI memory, with AI workloads projected to absorb about &lt;strong>20% of global DRAM wafer capacity in 2026&lt;/strong>.&lt;/p>
&lt;p>The economics are brutal and they explain everything:&lt;/p>
&lt;ul>
&lt;li>A single &lt;strong>HBM3E&lt;/strong> stack sells for roughly &lt;strong>$60-100&lt;/strong>, versus about &lt;strong>$5-10&lt;/strong> for a comparable amount of conventional DDR5.&lt;/li>
&lt;li>One gigabyte of HBM consumes roughly the &lt;strong>wafer area of four gigabytes&lt;/strong> of standard DRAM.&lt;/li>
&lt;/ul>
&lt;p>So a wafer turned into HBM earns several times more than the same wafer turned into the DIMMs you buy — while also producing &lt;em>less&lt;/em> total memory. Every gigabyte of AI memory is effectively several gigabytes of consumer memory that never gets made, at many times the margin. Faced with that math, no manufacturer rationally prioritizes a $90 desktop kit. NAND tells the same story for storage: AI data centers need vast, fast storage, and &lt;a href="https://www.tomshardware.com/pc-components/ssds/phison-ceo-confirms-nand-prices-have-more-than-doubled-and-will-continue-to-rise-all-2026-production-already-sold-out-ssds-facing-pricing-apocalypse-throughout-2027" rel="noopener">one major SSD-controller maker (Phison) confirmed NAND prices had more than doubled and that all of 2026&amp;rsquo;s production was already sold out&lt;/a>.&lt;/p>
&lt;p>That&amp;rsquo;s the uncomfortable part: this isn&amp;rsquo;t a glitch that gets patched next quarter. It&amp;rsquo;s the market working exactly as designed, against you.&lt;/p>
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;padding:28px 16px 22px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;">
&lt;div style="text-align:center;margin-bottom:14px;">
&lt;div style="font-size:18px;font-weight:600;letter-spacing:-0.3px;">One wafer, two products: why yours lost the bid&lt;/div>
&lt;div style="font-size:12px;color:#9a9ab5;margin-top:4px;">A memory maker's wafer capacity is fixed, so it goes to the more profitable product&lt;/div>
&lt;/div>
&lt;svg viewBox="0 0 760 380" xmlns="http://www.w3.org/2000/svg" style="width:100%;display:block;" role="img" aria-label="Comparison: a wafer made into consumer DDR5 sells for about 5 to 10 dollars for a comparable amount of memory at low margin, while the same wafer made into AI HBM3E memory sells for about 60 to 100 dollars per stack at far higher margin, and one gigabyte of HBM uses the wafer area of four gigabytes of DRAM. AI is projected to absorb about 20 percent of global DRAM wafer capacity in 2026.">
&lt;rect x="30" y="24" width="330" height="236" rx="10" fill="#11112a" stroke="rgba(80,144,224,0.45)" stroke-width="1.5">&lt;/rect>
&lt;text x="195" y="56" font-size="15" font-weight="600" fill="#5090e0" text-anchor="middle">Wafer made into consumer DDR5&lt;/text>
&lt;circle cx="62" cy="96" r="4" fill="#5090e0">&lt;/circle>
&lt;text x="76" y="100" font-size="13" fill="#dcdcea">Sells for about $5 to $10&lt;/text>
&lt;text x="76" y="118" font-size="11" fill="#7a7a96">for a comparable amount of memory&lt;/text>
&lt;circle cx="62" cy="150" r="4" fill="#5090e0">&lt;/circle>
&lt;text x="76" y="154" font-size="13" fill="#dcdcea">More gigabytes made per wafer&lt;/text>
&lt;circle cx="62" cy="194" r="4" fill="#5090e0">&lt;/circle>
&lt;text x="76" y="198" font-size="13" fill="#dcdcea">Low margin&lt;/text>
&lt;text x="195" y="240" font-size="12" fill="#9090a8" text-anchor="middle">The part you actually buy&lt;/text>
&lt;text x="380" y="146" font-size="15" font-weight="700" fill="#9a9ab5" text-anchor="middle">vs&lt;/text>
&lt;rect x="400" y="24" width="330" height="236" rx="10" fill="#11112a" stroke="rgba(237,106,90,0.5)" stroke-width="1.5">&lt;/rect>
&lt;text x="565" y="56" font-size="15" font-weight="600" fill="#ed6a5a" text-anchor="middle">Wafer made into AI memory (HBM3E)&lt;/text>
&lt;circle cx="432" cy="96" r="4" fill="#ed6a5a">&lt;/circle>
&lt;text x="446" y="100" font-size="13" fill="#dcdcea">Sells for about $60 to $100 per stack&lt;/text>
&lt;circle cx="432" cy="140" r="4" fill="#ed6a5a">&lt;/circle>
&lt;text x="446" y="144" font-size="13" fill="#dcdcea">1GB of HBM uses the wafer area&lt;/text>
&lt;text x="446" y="162" font-size="13" fill="#dcdcea">of 4GB of DRAM&lt;/text>
&lt;circle cx="432" cy="200" r="4" fill="#ed6a5a">&lt;/circle>
&lt;text x="446" y="204" font-size="13" fill="#dcdcea">Far higher margin, less memory made&lt;/text>
&lt;text x="565" y="240" font-size="12" fill="#c8ff00" text-anchor="middle">Several times the profit per wafer&lt;/text>
&lt;rect x="30" y="288" width="700" height="68" rx="8" fill="rgba(200,255,0,0.06)" stroke="rgba(200,255,0,0.35)" stroke-width="1">&lt;/rect>
&lt;text x="380" y="316" font-size="13" font-weight="600" fill="#e8e8f0" text-anchor="middle">AI is projected to absorb about 20% of global DRAM wafer capacity in 2026.&lt;/text>
&lt;text x="380" y="338" font-size="12.5" fill="#b8b8cc" text-anchor="middle">Every wafer sent to AI is one not making your DIMM.&lt;/text>
&lt;/svg>
&lt;div style="font-size:11px;color:#9a9ab5;text-align:center;margin-top:10px;">Figures per IDC market analysis and industry reporting cited in this article.&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="when-does-it-end">When does it end?&lt;/h2>
&lt;p>Honestly: not soon, and not on a schedule anyone can promise. But the cited consensus is consistent enough to plan around.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Through 2026:&lt;/strong> prices stay elevated and keep climbing, with the &lt;strong>peak expected in Q3-Q4 2026&lt;/strong>. &lt;a href="https://www.tweaktown.com/news/108804/nand-flash-pricing-for-ssds-has-doubled-in-six-months-2026-capacity-already-sold-out/index.html" rel="noopener">TrendForce projected client SSD contract prices rising at least 40% quarter-over-quarter in Q1 2026&lt;/a>, with tight supply persisting all year.&lt;/li>
&lt;li>&lt;strong>Relief:&lt;/strong> the earliest meaningful softening is &lt;strong>late 2026&lt;/strong>, and a return toward 2024 price levels is widely called &lt;strong>unlikely within the next 12-18 months&lt;/strong>.&lt;/li>
&lt;li>&lt;strong>Real capacity:&lt;/strong> new fabrication capacity is generally expected to come online around &lt;strong>2027-2028&lt;/strong> — and even that only helps if AI memory demand moderates, which few analysts expect.&lt;/li>
&lt;/ul>
&lt;p>The blunt takeaway from the timeline: in 2026, &amp;ldquo;wait for prices to drop&amp;rdquo; is bad advice. Prices are far more likely to be &lt;em>higher&lt;/em> in three months than lower.&lt;/p>
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;padding:28px 16px 22px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;">
&lt;div style="text-align:center;margin-bottom:14px;">
&lt;div style="font-size:18px;font-weight:600;letter-spacing:-0.3px;">The 2026 memory price timeline&lt;/div>
&lt;div style="font-size:12px;color:#9a9ab5;margin-top:4px;">Cited consensus across industry trackers&lt;/div>
&lt;/div>
&lt;svg viewBox="0 0 760 250" xmlns="http://www.w3.org/2000/svg" style="width:100%;display:block;" role="img" aria-label="Timeline: 2024 to 2025 lows, Q1 2026 DRAM contract prices up 55 to 60 percent, peak expected in Q3 to Q4 2026, earliest relief late 2026, and new manufacturing capacity around 2027 to 2028. We are currently near mid-2026, before the peak.">
&lt;line x1="70" y1="130" x2="694" y2="130" stroke="rgba(255,255,255,0.22)" stroke-width="2">&lt;/line>
&lt;text x="330" y="58" font-size="11" font-weight="700" fill="#c8ff00" text-anchor="middle">we are here (mid-2026)&lt;/text>
&lt;line x1="330" y1="66" x2="330" y2="122" stroke="#c8ff00" stroke-width="1.5" stroke-dasharray="3 3">&lt;/line>
&lt;circle cx="110" cy="130" r="6" fill="#5dca7a">&lt;/circle>
&lt;text x="110" y="104" font-size="12" font-weight="600" fill="#dcdcea" text-anchor="middle">2024-2025&lt;/text>
&lt;text x="110" y="156" font-size="11" fill="#7a7a96" text-anchor="middle">price lows&lt;/text>
&lt;circle cx="250" cy="130" r="6" fill="#5090e0">&lt;/circle>
&lt;text x="250" y="104" font-size="12" font-weight="600" fill="#dcdcea" text-anchor="middle">Q1 2026&lt;/text>
&lt;text x="250" y="156" font-size="11" fill="#7a7a96" text-anchor="middle">DRAM contracts&lt;/text>
&lt;text x="250" y="170" font-size="11" fill="#7a7a96" text-anchor="middle">+55-60%&lt;/text>
&lt;circle cx="410" cy="130" r="9" fill="#ed6a5a">&lt;/circle>
&lt;text x="410" y="100" font-size="13" font-weight="700" fill="#ed6a5a" text-anchor="middle">Q3-Q4 2026&lt;/text>
&lt;text x="410" y="160" font-size="12" font-weight="600" fill="#ed6a5a" text-anchor="middle">PEAK (expected)&lt;/text>
&lt;circle cx="545" cy="130" r="6" fill="#c8a03c">&lt;/circle>
&lt;text x="545" y="104" font-size="12" font-weight="600" fill="#dcdcea" text-anchor="middle">late 2026&lt;/text>
&lt;text x="545" y="156" font-size="11" fill="#7a7a96" text-anchor="middle">earliest relief&lt;/text>
&lt;circle cx="670" cy="130" r="6" fill="#5dca7a">&lt;/circle>
&lt;text x="670" y="104" font-size="12" font-weight="600" fill="#dcdcea" text-anchor="middle">2027-2028&lt;/text>
&lt;text x="670" y="156" font-size="11" fill="#7a7a96" text-anchor="middle">new capacity&lt;/text>
&lt;text x="382" y="222" font-size="12.5" fill="#b8b8cc" text-anchor="middle">A return toward 2024 price levels is widely called unlikely within the next 12-18 months.&lt;/text>
&lt;/svg>
&lt;/div>
&lt;/div>
&lt;h2 id="what-to-actually-do-a-builders-plan">What to actually do (a builder&amp;rsquo;s plan)&lt;/h2>
&lt;p>Here&amp;rsquo;s the practical part, and it&amp;rsquo;s where most of the value is.&lt;/p>
&lt;p>&lt;strong>1. If you need RAM or an SSD, buy it now.&lt;/strong> This is the rare case where &amp;ldquo;buy the dip&amp;rdquo; is wrong — there is no dip coming in 2026. If a build or upgrade is already on your list, the memory and storage are the two parts to lock in first, before the Q3-Q4 peak.&lt;/p>
&lt;p>&lt;strong>2. Right-size, don&amp;rsquo;t over-buy.&lt;/strong> The instinct to &amp;ldquo;future-proof&amp;rdquo; with 64GB or a 4TB SSD is exactly the wrong move at these prices. For most people:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>RAM:&lt;/strong> 32GB DDR5-6000 is the sweet spot for gaming and general use; 16GB is the floor if the budget is brutal (and even 16GB now runs ~$240). Going to 64GB roughly doubles an already-painful cost for capacity most desktops never touch. (&lt;a href="https://techfuelhq.com/articles/how-much-ram-do-you-need-2026/">How much RAM do you actually need in 2026?&lt;/a> breaks it down by use case.)&lt;/li>
&lt;li>&lt;strong>SSD:&lt;/strong> a single 1-2TB NVMe covers the vast majority of builds. Buy the capacity you&amp;rsquo;ll use in the next year, not the next five.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>3. Reuse what you already own.&lt;/strong> DDR5 and NVMe carry forward cleanly. If you&amp;rsquo;re upgrading a platform, pull the RAM and the boot drive from the old machine before you price new ones — a perfectly good DDR5 kit or 1TB NVMe you already paid 2024 prices for is the cheapest memory you will buy in 2026.&lt;/p>
&lt;p>&lt;strong>4. Spend the budget where the spike &lt;em>isn&amp;rsquo;t&lt;/em>.&lt;/strong> GPUs, CPUs, and motherboards have been comparatively stable through the memory crunch. That means the RAM and SSD are the line items distorting your build budget — so cut elsewhere only if you must, and treat memory/storage as the fixed cost they&amp;rsquo;ve become. Our &lt;a href="https://techfuelhq.com/pc-builds/budget-am5-1080p-gaming-pc-2026/">$1,000-class budget AM5 build&lt;/a> was priced &lt;em>around&lt;/em> this shortage and shows how much the memory line alone moves the total.&lt;/p>
&lt;p>&lt;strong>5. Model the running cost, not just the sticker.&lt;/strong> If you&amp;rsquo;re building a homelab or always-on box, the parts you keep for years cost more than their purchase price. Size the rest of the system honestly and run the numbers with the &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">Power &amp;amp; Cost Calculator&lt;/a> so the shortage doesn&amp;rsquo;t push you into an oversized, power-hungry box you&amp;rsquo;ll pay for monthly.&lt;/p>
&lt;p>For the deeper RAM-specific breakdown — speeds, timings, and what actually matters when you do buy — see the &lt;a href="https://techfuelhq.com/articles/ddr5-ram-buying-guide-2025/">DDR5 RAM buying guide&lt;/a>, which now carries a dated note reflecting these 2026 prices.&lt;/p>
&lt;h2 id="the-bottom-line">The bottom line&lt;/h2>
&lt;p>The 2026 memory crunch is real, it&amp;rsquo;s cited, and it&amp;rsquo;s structural: your DDR5 kit and your NVMe drive lost a bidding war to AI data centers that pay several times more for the same silicon. Prices were still climbing through mid-2026 and are expected to peak before the year is out, with no return to 2024 levels on the near horizon.&lt;/p>
&lt;p>So the move isn&amp;rsquo;t to panic and it isn&amp;rsquo;t to wait. It&amp;rsquo;s to &lt;strong>buy what you need now, buy exactly as much as you&amp;rsquo;ll use, reuse what you own, and put the rest of the budget where the spike isn&amp;rsquo;t.&lt;/strong> Do that, and the most expensive surprise in a 2026 build becomes a line item you planned for instead of one that blows up your cart.&lt;/p></description></item><item><title>Xbox Controller Not Connecting to PC? The Fix Ladder (2026)</title><link>https://techfuelhq.com/gaming/xbox-controller-not-connecting-to-pc-fix-2026/</link><pubDate>Sun, 28 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/gaming/xbox-controller-not-connecting-to-pc-fix-2026/</guid><description>&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR · Fix an Xbox controller on PC&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>Start wired.&lt;/strong> Plug in a known-good &lt;strong>USB-C cable&lt;/strong>. If it works wired, the controller and the game are fine and the problem is your wireless path.&lt;/li>
&lt;li>&lt;strong>Check if your controller even has Bluetooth.&lt;/strong> Only newer models do -- the giveaway is whether the plastic around the Xbox button is part of the &lt;strong>faceplate&lt;/strong> (has Bluetooth) or the &lt;strong>top by the bumpers&lt;/strong> (no Bluetooth).&lt;/li>
&lt;li>&lt;strong>One Bluetooth controller at a time.&lt;/strong> Windows only allows a single Bluetooth game controller. For more, use USB or the &lt;strong>Xbox Wireless Adapter for Windows&lt;/strong>.&lt;/li>
&lt;li>&lt;strong>Update firmware&lt;/strong> in the Xbox Accessories app (over USB or the adapter -- it will not see a Bluetooth-connected pad), then &lt;strong>reinstall the driver&lt;/strong> in Device Manager.&lt;/li>
&lt;li>&lt;strong>Then the basics:&lt;/strong> fresh batteries, move off other 2.4 GHz gear, get closer to the PC.&lt;/li>
&lt;/ul>
&lt;/div>
&lt;p>An Xbox controller is the default gamepad for Windows &amp;ndash; Steam, the Xbox app, and almost every controller-friendly game expect it &amp;ndash; so when it will not connect, it stops play cold. The frustrating part is that &amp;ldquo;not connecting&amp;rdquo; covers several very different problems: a controller that has no Bluetooth radio at all, a Windows limit you have never heard of, dead batteries, stale firmware, or a driver that needs rebuilding. This guide ranks the fixes by what actually clears the most cases, and it is honest about the one thing most guides skip: a lot of Xbox controllers simply cannot do Bluetooth, and Windows only lets you run one Bluetooth pad at a time anyway.&lt;/p>
&lt;p>The rule before you start is the same one I use for every connection problem: &lt;strong>confirm what works before you change what does not.&lt;/strong> A USB cable rules out half the possible causes in thirty seconds, so that is rung one. (If Windows does not recognize the controller over USB at all &amp;ndash; or throws a generic &amp;ldquo;USB device not recognized&amp;rdquo; &amp;ndash; that is a separate host-side problem; work the &lt;a href="https://techfuelhq.com/articles/usb-device-not-recognized-2026/">USB device not recognized fixes&lt;/a> first.)&lt;/p>
&lt;h2 id="how-an-xbox-controller-talks-to-a-pc">How an Xbox controller talks to a PC&lt;/h2>
&lt;p>There are exactly three supported ways to connect an Xbox controller to a Windows device: a &lt;strong>USB cable&lt;/strong>, the &lt;strong>Xbox Wireless Adapter for Windows&lt;/strong>, or &lt;strong>Bluetooth&lt;/strong> on controllers that support it. (&lt;a href="https://support.xbox.com/en-US/help/hardware-network/controller/connect-xbox-wireless-controller-to-pc" rel="noopener">Xbox Support &amp;ndash; connect to PC&lt;/a>) Each path has different requirements, and most &amp;ldquo;won&amp;rsquo;t connect&amp;rdquo; problems are really &amp;ldquo;I picked a path my controller or my PC can&amp;rsquo;t do.&amp;rdquo; Knowing which of the three you are on tells you which fixes even apply.&lt;/p>
&lt;h2 id="the-fixes-ranked-by-what-actually-works">The fixes, ranked by what actually works&lt;/h2>
&lt;h3 id="1-connect-with-a-usb-c-cable-first-rules-out-everything-wireless">1. Connect with a USB-C cable first (rules out everything wireless)&lt;/h3>
&lt;p>A wired connection skips radio entirely, so it is both the fastest fix and the best diagnostic. Plug a &lt;strong>known-good USB-C cable&lt;/strong> (data-capable, not a charge-only cable) into the back of the controller and into your PC. (&lt;a href="https://support.xbox.com/en-US/help/hardware-network/controller/connect-xbox-wireless-controller-to-pc" rel="noopener">Xbox Support&lt;/a>) Windows installs the controller driver automatically and it should work in seconds.&lt;/p>
&lt;p>What this tells you: if the controller works &lt;strong>wired&lt;/strong>, the controller, the cable port, the game, and Windows are all fine &amp;ndash; your problem is specifically the wireless path, and you can jump to the wireless rungs below. If it does &lt;strong>not&lt;/strong> work even wired, suspect the cable first (swap it), then the USB port, then move on to the driver reinstall in rung 5.&lt;/p>
&lt;h3 id="2-bluetooth-know-your-model-and-the-one-controller-limit">2. Bluetooth: know your model and the one-controller limit&lt;/h3>
&lt;p>Bluetooth is where most people get stuck, for two reasons almost no guide states plainly.&lt;/p>
&lt;p>&lt;strong>First: only newer Xbox controllers have Bluetooth.&lt;/strong> You can identify yours by looking at the plastic around the &lt;strong>Xbox (guide) button&lt;/strong>. On Bluetooth-capable controllers, that plastic is part of the &lt;strong>faceplate&lt;/strong> of the controller. On older controllers without Bluetooth, the plastic around the Xbox button is part of the &lt;strong>top of the controller, where the bumpers are.&lt;/strong> (&lt;a href="https://support.xbox.com/en-US/help/hardware-network/accessories/connect-and-troubleshoot-xbox-one-bluetooth-issues" rel="noopener">Xbox Support &amp;ndash; set up Bluetooth&lt;/a>) If yours is the older style, no amount of pairing will work &amp;ndash; skip to rung 3 (the wireless adapter) or stay wired.&lt;/p>
&lt;p>&lt;strong>Second: Windows only allows one Bluetooth game controller at a time.&lt;/strong> (&lt;a href="https://learn.microsoft.com/en-us/answers/questions/4301395/windows-multi-controller-support-bluetooth" rel="noopener">Microsoft Q&amp;amp;A&lt;/a>) If you already have one Bluetooth pad bound and try to add a second, it appears to pair but never registers in-game. This is a Windows limitation, not a broken controller. For more than one wireless controller, you need USB cables or the Xbox Wireless Adapter.&lt;/p>
&lt;p>If your controller does have Bluetooth and you are within the limit, pair it like any Bluetooth device:&lt;/p>
&lt;ol>
&lt;li>Hold the &lt;strong>Xbox button&lt;/strong> to turn the controller on, then press and hold the small &lt;strong>Pair button&lt;/strong> on the top until the Xbox button flashes quickly.&lt;/li>
&lt;li>On the PC, open &lt;strong>Settings &amp;gt; Bluetooth &amp;amp; devices &amp;gt; Add device &amp;gt; Bluetooth&lt;/strong>.&lt;/li>
&lt;li>Select &lt;strong>Xbox Wireless Controller&lt;/strong> from the list and let it connect. (&lt;a href="https://support.xbox.com/en-US/help/hardware-network/controller/connect-xbox-wireless-controller-to-pc" rel="noopener">Xbox Support&lt;/a>)&lt;/li>
&lt;/ol>
&lt;p>If the controller is also paired to an Xbox console, it can fight over which device it joins &amp;ndash; turn the console off, or unpair the controller there, while you set up the PC.&lt;/p>
&lt;h3 id="3-use-the-xbox-wireless-adapter-for-older-controllers-or-multiple-pads">3. Use the Xbox Wireless Adapter for older controllers (or multiple pads)&lt;/h3>
&lt;p>If your controller has no Bluetooth, or you want several controllers connected wirelessly, the &lt;strong>Xbox Wireless Adapter for Windows&lt;/strong> is the answer. It is a small USB dongle that uses Xbox&amp;rsquo;s own wireless protocol instead of Bluetooth, works on Windows 10 and 11, and supports up to &lt;strong>eight&lt;/strong> controllers at once. (&lt;a href="https://support.xbox.com/en-US/help/hardware-network/accessories/xbox-wireless-adapter-for-windows-setup" rel="noopener">Xbox Support &amp;ndash; adapter setup&lt;/a>)&lt;/p>
&lt;ol>
&lt;li>Plug the adapter into a USB port (front-panel or a short extension can help line-of-sight).&lt;/li>
&lt;li>Press the &lt;strong>button on the adapter&lt;/strong> until its light flashes.&lt;/li>
&lt;li>Turn the controller on, hold its &lt;strong>Pair button&lt;/strong> until the Xbox button flashes, and the two will bind. (&lt;a href="https://support.xbox.com/en-US/help/hardware-network/accessories/xbox-wireless-adapter-for-windows-setup" rel="noopener">Xbox Support&lt;/a>)&lt;/li>
&lt;/ol>
&lt;p>This path sidesteps the Bluetooth single-controller limit entirely, which is why it is the right call for couch co-op.&lt;/p>
&lt;h3 id="4-update-the-controller-firmware-fixes-flaky-wireless">4. Update the controller firmware (fixes flaky wireless)&lt;/h3>
&lt;p>Stale controller firmware is a genuine cause of dropped and refused wireless connections. Update it in the &lt;strong>Xbox Accessories app&lt;/strong> (free in the Microsoft Store): open the app, connect the controller with a &lt;strong>USB-C cable or the Xbox Wireless Adapter&lt;/strong>, and apply any update it offers. (&lt;a href="https://support.xbox.com/en-US/help/hardware-network/controller/update-xbox-wireless-controller" rel="noopener">Xbox Support &amp;ndash; update controller&lt;/a>)&lt;/p>
&lt;p>One honest catch that trips people up: &lt;strong>the Xbox Accessories app will not detect a controller connected over Bluetooth.&lt;/strong> (&lt;a href="https://support.xbox.com/en-US/help/hardware-network/controller/update-xbox-wireless-controller" rel="noopener">Xbox Support&lt;/a>) So even though your goal is to fix Bluetooth, you have to connect by cable to do the update. Plug in, update, unplug, then try pairing again.&lt;/p>
&lt;h3 id="5-reinstall-the-controller-driver-in-device-manager">5. Reinstall the controller driver in Device Manager&lt;/h3>
&lt;p>If Windows recognizes the controller but it behaves badly &amp;ndash; shows up with an error, or refuses to register inputs &amp;ndash; rebuilding its driver often clears it. Microsoft&amp;rsquo;s own guidance is to &lt;strong>unplug the device first&lt;/strong>, because Windows will rediscover it and reinstall the driver automatically. (&lt;a href="https://learn.microsoft.com/en-us/windows-hardware/drivers/install/using-device-manager-to-uninstall-devices-and-driver-packages" rel="noopener">Microsoft Learn &amp;ndash; uninstall via Device Manager&lt;/a>)&lt;/p>
&lt;ol>
&lt;li>Open &lt;strong>Device Manager&lt;/strong> (search for it from the Start menu).&lt;/li>
&lt;li>Expand the node for the controller (look under &lt;strong>Xbox Peripherals&lt;/strong>, &lt;strong>Human Interface Devices&lt;/strong>, or &lt;strong>Bluetooth&lt;/strong>), right-click it, and choose &lt;strong>Uninstall device&lt;/strong>.&lt;/li>
&lt;li>If offered, you can tick &lt;strong>Delete the driver software for this device&lt;/strong> to remove the package too. (&lt;a href="https://learn.microsoft.com/en-us/windows-hardware/drivers/install/using-device-manager-to-uninstall-devices-and-driver-packages" rel="noopener">Microsoft Learn&lt;/a>)&lt;/li>
&lt;li>Unplug and replug the controller (or reboot). Windows reinstalls a clean driver. (&lt;a href="https://learn.microsoft.com/en-us/windows-hardware/drivers/install/using-device-manager-to-uninstall-devices-and-driver-packages" rel="noopener">Microsoft Learn&lt;/a>)&lt;/li>
&lt;/ol>
&lt;h3 id="6-battery-and-interference-basics-do-not-skip-these">6. Battery and interference basics (do not skip these)&lt;/h3>
&lt;p>These are last on the list only because the rungs above fix more cases &amp;ndash; but a dead battery or a noisy 2.4 GHz environment will defeat every other step.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Fresh power.&lt;/strong> Replace the AA batteries or fully charge the rechargeable pack. A controller low on power often pairs and then drops.&lt;/li>
&lt;li>&lt;strong>Reduce 2.4 GHz interference.&lt;/strong> Bluetooth and the Xbox wireless adapter share the crowded 2.4 GHz band with Wi-Fi, USB 3.0 devices, and wireless mice. If your &lt;a href="https://techfuelhq.com/articles/wifi-keeps-disconnecting-2026/">Wi-Fi keeps dropping&lt;/a> at the same times, that band is congested network-wide and worth fixing at the router &amp;ndash; moving other devices to 5 GHz frees up airtime for the controller too. Move the controller and adapter away from those, and get closer to the PC.&lt;/li>
&lt;li>&lt;strong>Mind the range and line of sight.&lt;/strong> A metal case or a desk between you and the PC weakens the signal. A short USB extension that brings the adapter (or a Bluetooth dongle) onto the desk often fixes &amp;ldquo;connects then disconnects.&amp;rdquo;&lt;/li>
&lt;/ul>
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;padding:28px 16px 22px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;">
&lt;div style="text-align:center;margin-bottom:14px;">
&lt;div style="font-size:18px;font-weight:600;letter-spacing:-0.3px;">Work the fixes in order -- stop at yours&lt;/div>
&lt;div style="font-size:12px;color:#9a9ab5;margin-top:4px;">Wired first (it diagnoses everything); the basics are last because the rungs above fix more cases&lt;/div>
&lt;/div>
&lt;svg viewBox="0 0 760 346" xmlns="http://www.w3.org/2000/svg" style="width:100%;display:block;" role="img" aria-label="Ordered checklist of fixes for an Xbox controller not connecting to a PC, from fastest and most diagnostic to last: 1 connect with a USB-C cable first to rule out wireless, 2 Bluetooth -- check your model has Bluetooth and remember Windows allows only one Bluetooth controller at a time, 3 use the Xbox Wireless Adapter for older controllers or multiple pads, 4 update controller firmware in the Xbox Accessories app over USB, 5 reinstall the controller driver in Device Manager, 6 battery and 2.4 gigahertz interference basics.">
&lt;line x1="42" y1="40" x2="42" y2="290" stroke="rgba(255,255,255,0.12)" stroke-width="2">&lt;/line>
&lt;g>
&lt;circle cx="42" cy="48" r="13" fill="#5dca7a">&lt;/circle>&lt;text x="42" y="53" font-size="13" font-weight="700" fill="#0a0a23" text-anchor="middle">1&lt;/text>
&lt;text x="68" y="44" font-size="14" font-weight="600" fill="#e8e8f0">Connect with a USB-C cable first&lt;/text>
&lt;text x="68" y="62" font-size="12" fill="#9090a8">Wired works = problem is your wireless path. Use a data cable, not charge-only&lt;/text>
&lt;/g>
&lt;g>
&lt;circle cx="42" cy="98" r="13" fill="#5dca7a">&lt;/circle>&lt;text x="42" y="103" font-size="13" font-weight="700" fill="#0a0a23" text-anchor="middle">2&lt;/text>
&lt;text x="68" y="94" font-size="14" font-weight="600" fill="#e8e8f0">Bluetooth: check model + the 1-controller limit&lt;/text>
&lt;text x="68" y="112" font-size="12" fill="#9090a8">Plastic on the faceplate = has Bluetooth. Windows allows one BT pad at a time&lt;/text>
&lt;/g>
&lt;g>
&lt;circle cx="42" cy="148" r="13" fill="#5090e0">&lt;/circle>&lt;text x="42" y="153" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">3&lt;/text>
&lt;text x="68" y="144" font-size="14" font-weight="600" fill="#e8e8f0">Xbox Wireless Adapter for older / multiple pads&lt;/text>
&lt;text x="68" y="162" font-size="12" fill="#9090a8">Not Bluetooth -- its own protocol, up to 8 controllers, Win 10/11&lt;/text>
&lt;/g>
&lt;g>
&lt;circle cx="42" cy="198" r="13" fill="#5090e0">&lt;/circle>&lt;text x="42" y="203" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">4&lt;/text>
&lt;text x="68" y="194" font-size="14" font-weight="600" fill="#e8e8f0">Update firmware in the Xbox Accessories app&lt;/text>
&lt;text x="68" y="212" font-size="12" fill="#9090a8">Over USB or the adapter -- the app can't see a Bluetooth-connected pad&lt;/text>
&lt;/g>
&lt;g>
&lt;circle cx="42" cy="248" r="13" fill="#5090e0">&lt;/circle>&lt;text x="42" y="253" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">5&lt;/text>
&lt;text x="68" y="244" font-size="14" font-weight="600" fill="#e8e8f0">Reinstall the driver in Device Manager&lt;/text>
&lt;text x="68" y="262" font-size="12" fill="#9090a8">Unplug first; Windows rediscovers and reinstalls a clean driver&lt;/text>
&lt;/g>
&lt;g>
&lt;circle cx="42" cy="298" r="13" fill="#c8a03c">&lt;/circle>&lt;text x="42" y="303" font-size="13" font-weight="700" fill="#0a0a23" text-anchor="middle">6&lt;/text>
&lt;text x="68" y="294" font-size="14" font-weight="600" fill="#e8e8f0">Battery + 2.4 GHz interference basics&lt;/text>
&lt;text x="68" y="312" font-size="12" fill="#9090a8">Fresh power, move off Wi-Fi/USB 3.0 gear, get closer to the PC&lt;/text>
&lt;/g>
&lt;/svg>
&lt;/div>
&lt;/div>
&lt;h2 id="what-not-to-do">What not to do&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Do not assume your controller has Bluetooth.&lt;/strong> Plenty of perfectly good Xbox One pads never had it. Check the plastic around the Xbox button before you spend an hour fighting a pairing that was never possible. (&lt;a href="https://support.xbox.com/en-US/help/hardware-network/accessories/connect-and-troubleshoot-xbox-one-bluetooth-issues" rel="noopener">Xbox Support&lt;/a>)&lt;/li>
&lt;li>&lt;strong>Do not try to run two Bluetooth controllers.&lt;/strong> Windows allows one. (&lt;a href="https://learn.microsoft.com/en-us/answers/questions/4301395/windows-multi-controller-support-bluetooth" rel="noopener">Microsoft Q&amp;amp;A&lt;/a>) The second one will look connected and do nothing in-game &amp;ndash; use USB or the wireless adapter for the others.&lt;/li>
&lt;li>&lt;strong>Do not download a third-party &amp;ldquo;controller driver&amp;rdquo; or &amp;ldquo;fixer.&amp;rdquo;&lt;/strong> The driver Windows installs on its own is the correct one, and a downloaded driver utility is exactly the kind of unsigned software that causes more problems than it solves. Reinstall the in-box driver through Device Manager instead.&lt;/li>
&lt;li>&lt;strong>Do not skip the firmware update because pairing &amp;ldquo;should&amp;rdquo; work.&lt;/strong> Outdated firmware is a quiet cause of wireless drops, and the fix is two minutes over a cable. (&lt;a href="https://support.xbox.com/en-US/help/hardware-network/controller/update-xbox-wireless-controller" rel="noopener">Xbox Support&lt;/a>)&lt;/li>
&lt;/ul>
&lt;h2 id="where-this-fits">Where this fits&lt;/h2>
&lt;p>A controller that will not connect is a peripheral problem, but the same habits carry over to the rest of PC gaming troubleshooting on this site: confirm what works, identify your exact cause, then apply the one fix that matches. If the peripheral acting up is a keyboard rather than a pad, the &lt;a href="https://techfuelhq.com/articles/keyboard-not-working-2026/">keyboard-not-working walkthrough&lt;/a> sorts the dead-vs-wrong-input symptoms the same way. If your issue is a game that will not launch rather than a controller that will not pair, the &lt;a href="https://techfuelhq.com/gaming/easy-anti-cheat-fix-guide-2026/">Easy Anti-Cheat fix guide&lt;/a> uses the same ranked approach for launcher and anti-cheat errors, and the rest of the &lt;a href="https://techfuelhq.com/gaming/">gaming section&lt;/a> covers driver crashes, DX12 stutter, and game-specific fixes. If you are putting a new rig together, every machine in our &lt;a href="https://techfuelhq.com/pc-builds/2500-dollar-7800x3d-rtx-5080-4k-build-2026/">build guides&lt;/a> has the USB-C ports and Bluetooth that make all three connection paths available out of the box.&lt;/p>
&lt;h2 id="the-bottom-line">The bottom line&lt;/h2>
&lt;p>&amp;ldquo;Xbox controller not connecting to PC&amp;rdquo; almost always comes down to picking the wrong connection path for your specific controller. Go wired first to prove the controller works, then sort the wireless side: confirm your model actually has Bluetooth, respect the one-Bluetooth-controller limit, and reach for the Xbox Wireless Adapter when Bluetooth is not an option. Update the firmware, rebuild the driver if Windows is confused, and rule out dead batteries and 2.4 GHz noise. Work the list in order and you will have the pad in your hands in a few minutes instead of an evening.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>Xbox Support &amp;ndash; How do I connect my Xbox controller to PC? (USB, adapter, Bluetooth): &lt;a href="https://support.xbox.com/en-US/help/hardware-network/controller/connect-xbox-wireless-controller-to-pc" rel="noopener">https://support.xbox.com/en-US/help/hardware-network/controller/connect-xbox-wireless-controller-to-pc&lt;/a>&lt;/li>
&lt;li>Xbox Support &amp;ndash; Set up Bluetooth on your Xbox Wireless Controller (model identification): &lt;a href="https://support.xbox.com/en-US/help/hardware-network/accessories/connect-and-troubleshoot-xbox-one-bluetooth-issues" rel="noopener">https://support.xbox.com/en-US/help/hardware-network/accessories/connect-and-troubleshoot-xbox-one-bluetooth-issues&lt;/a>&lt;/li>
&lt;li>Microsoft Q&amp;amp;A &amp;ndash; Windows multi-controller Bluetooth support (one controller at a time): &lt;a href="https://learn.microsoft.com/en-us/answers/questions/4301395/windows-multi-controller-support-bluetooth" rel="noopener">https://learn.microsoft.com/en-us/answers/questions/4301395/windows-multi-controller-support-bluetooth&lt;/a>&lt;/li>
&lt;li>Xbox Support &amp;ndash; Set up the Xbox Wireless Adapter for Windows (up to 8 controllers): &lt;a href="https://support.xbox.com/en-US/help/hardware-network/accessories/xbox-wireless-adapter-for-windows-setup" rel="noopener">https://support.xbox.com/en-US/help/hardware-network/accessories/xbox-wireless-adapter-for-windows-setup&lt;/a>&lt;/li>
&lt;li>Xbox Support &amp;ndash; Update your Xbox Wireless Controller (Xbox Accessories app, no Bluetooth detection): &lt;a href="https://support.xbox.com/en-US/help/hardware-network/controller/update-xbox-wireless-controller" rel="noopener">https://support.xbox.com/en-US/help/hardware-network/controller/update-xbox-wireless-controller&lt;/a>&lt;/li>
&lt;li>Microsoft Learn &amp;ndash; Using Device Manager to uninstall devices and driver packages: &lt;a href="https://learn.microsoft.com/en-us/windows-hardware/drivers/install/using-device-manager-to-uninstall-devices-and-driver-packages" rel="noopener">https://learn.microsoft.com/en-us/windows-hardware/drivers/install/using-device-manager-to-uninstall-devices-and-driver-packages&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>How to Overclock Your Monitor (More Hz Safely, 2026)</title><link>https://techfuelhq.com/gaming/how-to-overclock-monitor-2026/</link><pubDate>Sat, 27 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/gaming/how-to-overclock-monitor-2026/</guid><description>&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR · Overclock your monitor safely&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>Pick one tool:&lt;/strong> NVIDIA Control Panel (Create Custom Resolution), AMD Adrenalin (Custom Resolution), or &lt;strong>CRU&lt;/strong> for any GPU including Intel.&lt;/li>
&lt;li>&lt;strong>Go up in small steps&lt;/strong> -- a 60Hz panel often reaches 70-75Hz, but it is panel-dependent and &lt;em>no one can promise a number&lt;/em>.&lt;/li>
&lt;li>&lt;strong>The mandatory step:&lt;/strong> run the &lt;strong>TestUFO frame-skipping test&lt;/strong>. A monitor will happily report a higher Hz while silently dropping frames -- which is worse than stock.&lt;/li>
&lt;li>&lt;strong>You cannot beat physics:&lt;/strong> your panel &lt;em>and&lt;/em> your cable/port bandwidth set a hard ceiling. DisplayPort 1.4 carries ~25.92 Gbps; HDMI 2.0 ~18 Gbps.&lt;/li>
&lt;li>&lt;strong>It is reversible.&lt;/strong> The worst common failure is a black screen, fixed by reverting the setting or booting into safe mode.&lt;/li>
&lt;/ul>
&lt;/div>
&lt;p>Overclocking a monitor means asking it to refresh faster than its rated number &amp;ndash; pushing a 60Hz panel to 75Hz, or a 144Hz panel to 165Hz. It works because manufacturers rate panels conservatively, so there is often a little unlabeled headroom on top. The catch is that &amp;ldquo;often&amp;rdquo; is not &amp;ldquo;always,&amp;rdquo; and a monitor that &lt;em>accepts&lt;/em> a higher rate is not the same as a monitor that &lt;em>delivers&lt;/em> it. This guide gives you the three ways to do it and the one test that separates a real overclock from a fake one.&lt;/p>
&lt;h2 id="first-the-ceiling-you-cannot-move">First, the ceiling you cannot move&lt;/h2>
&lt;p>Before you change anything, understand what you are working against, because it explains every failure you will hit. Your maximum refresh rate is capped by the &lt;strong>lower&lt;/strong> of two limits.&lt;/p>
&lt;p>The first is the &lt;strong>panel itself&lt;/strong> &amp;ndash; the physical electronics that drive the pixels. This is the limit you are probing when you overclock, and it varies unit to unit.&lt;/p>
&lt;p>The second is &lt;strong>bandwidth&lt;/strong>: how much data your cable and port can carry. A refresh rate is just frames per second, and every frame is a fixed pile of data (pixels x color depth). Push more frames per second through the same pipe and you need more bandwidth. The pipe has a published ceiling:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>DisplayPort 1.4 (HBR3)&lt;/strong> runs at 32.4 Gbps of raw link rate, which delivers about &lt;strong>25.92 Gbps&lt;/strong> of usable video data after encoding overhead, per the &lt;a href="https://en.wikipedia.org/wiki/DisplayPort" rel="noopener">DisplayPort specification&lt;/a>.&lt;/li>
&lt;li>&lt;strong>DisplayPort 2.1&lt;/strong> raises that sharply with its UHBR modes &amp;ndash; UHBR 10 at 40 Gbps, UHBR 13.5 at 54 Gbps, and UHBR 20 at 80 Gbps of raw link rate, again &lt;a href="https://en.wikipedia.org/wiki/DisplayPort" rel="noopener">per the spec&lt;/a>.&lt;/li>
&lt;li>&lt;strong>HDMI 2.0&lt;/strong> carries up to &lt;strong>18 Gbps&lt;/strong>, and &lt;strong>HDMI 2.1&lt;/strong> raises the ceiling to &lt;strong>48 Gbps&lt;/strong>, a spec set by the &lt;a href="https://hdmiforum.org/hdmi-forum-releases-version-2-0-hdmi-specification/" rel="noopener">HDMI Forum&lt;/a>.&lt;/li>
&lt;/ul>
&lt;p>Why this matters in practice: if you hit a flat wall where the monitor simply rejects anything above a certain rate no matter how gently you climb, you are probably bandwidth-limited, not panel-limited. NVIDIA&amp;rsquo;s own documentation notes the refresh rate is bounded by the display&amp;rsquo;s scan capability at the &lt;a href="https://www.nvidia.com/content/Control-Panel-Help/vLatest/en-us/mergedProjects/nvdsp/Custom_Timings_Dialog_Box.htm" rel="noopener">current resolution&lt;/a>. No software trick beats a hardware pipe. The fix is a better cable or a higher-spec port &amp;ndash; not a registry edit.&lt;/p>
&lt;h2 id="path-1-nvidia-control-panel">Path 1: NVIDIA Control Panel&lt;/h2>
&lt;p>If you have a GeForce card, the built-in tool is the easiest starting point and it has its own validation step built in.&lt;/p>
&lt;ol>
&lt;li>Right-click the desktop and open the &lt;strong>NVIDIA Control Panel&lt;/strong>.&lt;/li>
&lt;li>Under &lt;strong>Display&lt;/strong>, click &lt;strong>Change resolution&lt;/strong>.&lt;/li>
&lt;li>Click the &lt;strong>Customize&lt;/strong> button, then check &lt;strong>Enable resolutions not exposed by the display&lt;/strong>, then click &lt;strong>Create Custom Resolution&lt;/strong>.&lt;/li>
&lt;li>Leave the resolution at your native value and raise only the &lt;strong>Refresh rate (Hz)&lt;/strong> field by a small amount &amp;ndash; say from 60 to 65.&lt;/li>
&lt;li>Click &lt;strong>Test&lt;/strong>. NVIDIA documents that the panel will &lt;a href="https://nvidia.custhelp.com/app/answers/detail/a_id/759/~/custom-resolutions" rel="noopener">test the new mode&lt;/a> and, if the display accepts it, ask you to confirm before saving.&lt;/li>
&lt;/ol>
&lt;p>If the screen goes black, do nothing &amp;ndash; the test reverts automatically after a few seconds. If it holds and looks clean, confirm to save, then climb again in small steps until a rate fails. Then drop back to the last good one. Do not trust it yet; you still have to run the frame-skip test below.&lt;/p>
&lt;h2 id="path-2-amd-software-adrenalin-edition">Path 2: AMD Software (Adrenalin Edition)&lt;/h2>
&lt;p>The Radeon equivalent lives inside AMD&amp;rsquo;s driver suite and follows the same logic.&lt;/p>
&lt;ol>
&lt;li>Open &lt;strong>AMD Software: Adrenalin Edition&lt;/strong> and type &lt;strong>Custom&lt;/strong> into the search box, then open the &lt;strong>Custom Resolution&lt;/strong> result.&lt;/li>
&lt;li>Click &lt;strong>Create New&lt;/strong>. The profile opens pre-filled with your current settings.&lt;/li>
&lt;li>Raise the refresh-rate field by a small increment, leaving resolution and color depth alone, then click &lt;strong>Create&lt;/strong>.&lt;/li>
&lt;li>AMD checks the new mode for compatibility, and the &lt;a href="https://www.amd.com/en/resources/support-articles/faqs/DH3-032.html" rel="noopener">support article&lt;/a> notes the screen may go momentarily blank during this step &amp;ndash; that is normal.&lt;/li>
&lt;/ol>
&lt;p>As with NVIDIA, if the display refuses the mode you will see a blank screen that recovers on its own. Keep the highest rate that applies cleanly, then go verify it.&lt;/p>
&lt;h2 id="path-3-cru-custom-resolution-utility--any-gpu">Path 3: CRU (Custom Resolution Utility) &amp;ndash; any GPU&lt;/h2>
&lt;p>&lt;a href="https://www.monitortests.com/forum/Thread-Custom-Resolution-Utility-CRU" rel="noopener">Custom Resolution Utility&lt;/a>, written by ToastyX, is the tool to reach for when the vendor utility refuses a mode, when you want finer control over timing parameters, or when you are on Intel graphics. It is more capable because it works at a lower level: rather than asking the driver for a custom mode, CRU writes a &lt;strong>software EDID override&lt;/strong> into the registry &amp;ndash; effectively rewriting the table of resolutions your monitor advertises to Windows. It changes no hardware.&lt;/p>
&lt;p>That power is also why CRU demands more respect. Because it overrides what the system believes the monitor can do, a bad entry can leave you with no usable picture until you undo it. So do two things &lt;strong>before&lt;/strong> you start, both straight from the tool&amp;rsquo;s own &lt;a href="https://www.monitortests.com/forum/Thread-Custom-Resolution-Utility-CRU" rel="noopener">documentation&lt;/a>:&lt;/p>
&lt;ul>
&lt;li>Know how to boot into &lt;strong>safe mode&lt;/strong> (via a Windows recovery drive, or by holding the power button during boot to reach &lt;strong>Troubleshoot &amp;gt; Advanced options &amp;gt; Startup Settings&lt;/strong>).&lt;/li>
&lt;li>Know that &lt;strong>reset-all.exe&lt;/strong> (shipped with CRU) wipes every override and restores defaults, and it can be run from safe mode if the screen is unusable.&lt;/li>
&lt;/ul>
&lt;p>The workflow itself:&lt;/p>
&lt;ol>
&lt;li>Run &lt;strong>CRU.exe&lt;/strong> (accept the UAC prompt &amp;ndash; it needs registry access).&lt;/li>
&lt;li>Pick your display from the dropdown.&lt;/li>
&lt;li>Under &lt;strong>Detailed resolutions&lt;/strong>, click &lt;strong>Add&lt;/strong>, set your native resolution, and enter the higher refresh rate.&lt;/li>
&lt;li>Click &lt;strong>OK&lt;/strong>, then run the included &lt;strong>restart.exe&lt;/strong> to restart the graphics driver and apply the change. CRU requires this restart step to take effect.&lt;/li>
&lt;/ol>
&lt;p>If the screen comes back at the new rate, good. If it does not, restart.exe usually recovers on its own after a few seconds; if not, safe mode plus reset-all.exe is your reset button.&lt;/p>
&lt;h2 id="the-mandatory-step-everyone-skips-testufo-frame-skip-check">The mandatory step everyone skips: TestUFO frame-skip check&lt;/h2>
&lt;p>Here is the trap that makes most &amp;ldquo;I overclocked to 75Hz&amp;rdquo; claims meaningless. A monitor will frequently &lt;strong>accept&lt;/strong> a higher refresh rate, report it proudly in Windows display settings, and then quietly &lt;strong>skip frames&lt;/strong> &amp;ndash; displaying, say, only 60 unique frames inside a 75Hz cycle. You get the higher number with none of the smoothness, and in some cases worse pacing than stock. The reported Hz is a promise the panel did not keep.&lt;/p>
&lt;p>The only way to catch this is to look at actual frames, and the standard tool is the free &lt;a href="https://testufo.com/frameskipping" rel="noopener">TestUFO Frame Skipping Checker&lt;/a> from Blur Busters. It scrolls a row of numbered squares across the screen at your refresh rate. You photograph that motion with a phone camera set to a &lt;strong>long exposure&lt;/strong> &amp;ndash; around 1/10 second or longer &amp;ndash; and inspect the result:&lt;/p>
&lt;ul>
&lt;li>A &lt;strong>clean run&lt;/strong> shows an unbroken sequence of squares with no gaps. Per the Blur Busters method, a ~200ms exposure on a 144Hz display should capture roughly 28 successive squares.&lt;/li>
&lt;li>&lt;strong>Gaps in the sequence mean frame skipping.&lt;/strong> Any gap, even one, means the overclock is fake at that rate.&lt;/li>
&lt;/ul>
&lt;p>Close other apps and browser tabs before testing, and dim screen brightness so the camera can use a longer exposure. If your overclock skips, step the rate back down and retest until you find the highest rate that captures &lt;strong>zero&lt;/strong> gaps. &lt;em>That&lt;/em> rate &amp;ndash; not the highest one the monitor accepted &amp;ndash; is your real overclock.&lt;/p>
&lt;p>This is the entire point of the exercise. An overclock that drops frames is worse than useless; a verified, gap-free overclock is free smoothness. The test is what tells them apart.&lt;/p>
&lt;h2 id="realistic-expectations">Realistic expectations&lt;/h2>
&lt;p>Numbers vary so much that anyone quoting you a guaranteed figure is guessing. A 60Hz panel commonly lands somewhere in the 70-75Hz range, and many go no higher; a handful reach further. Two of the same model can disagree because of normal manufacturing tolerances. So the honest framing is a method, not a number: climb in small steps, run the frame-skip test at each one, and keep the best rate that passes clean. Whatever you get is a bonus.&lt;/p>
&lt;p>A few practical notes worth keeping in mind. Higher-refresh OLEDs and TVs-as-monitors behave differently from cheap LCD panels &amp;ndash; if you are running something like the &lt;a href="https://techfuelhq.com/articles/aorus-fo48u-review/">Aorus FO48U&lt;/a> or a desktop LCD covered in our &lt;a href="https://techfuelhq.com/articles/best-27-32-inch-monitor-homelab-2026/">27-to-32-inch monitor guide&lt;/a>, the same step-and-test method applies, but the bandwidth ceiling bites sooner at 4K because each frame is far larger. And remember that more frames only help if your PC can produce them &amp;ndash; a smooth overclock pairs naturally with the frame-rate fundamentals we cover in &lt;a href="https://techfuelhq.com/gaming/dx12-vs-dx11-fps-2026/">DX12 vs DX11&lt;/a>.&lt;/p>
&lt;p>Overclock in small steps, verify with TestUFO every single time, and never trust the number the monitor reports over the frames your camera sees.&lt;/p></description></item><item><title>Resizable BAR / Smart Access Memory: On or Off? (2026)</title><link>https://techfuelhq.com/gaming/resizable-bar-on-or-off-2026/</link><pubDate>Fri, 26 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/gaming/resizable-bar-on-or-off-2026/</guid><description>&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">Verdict · Resizable BAR / SAM&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>Turn it ON&lt;/strong> on any modern build: GeForce RTX 30-series or newer, Radeon RX 6000-series or newer, on a UEFI install.&lt;/li>
&lt;li>&lt;strong>What it does:&lt;/strong> lets the CPU map your GPU's &lt;strong>entire VRAM at once&lt;/strong> instead of through a small 256 MB window.&lt;/li>
&lt;li>&lt;strong>Honest payoff:&lt;/strong> a few percent in some games, no change in most, a small number of older titles regress. NVIDIA and AMD both default it &lt;strong>on&lt;/strong>.&lt;/li>
&lt;li>&lt;strong>How:&lt;/strong> in BIOS enable &lt;strong>Above 4G Decoding&lt;/strong> + &lt;strong>Re-Size BAR Support&lt;/strong>, with &lt;strong>CSM disabled&lt;/strong> (UEFI/GPT required). Update BIOS and driver first.&lt;/li>
&lt;li>&lt;strong>One real risk:&lt;/strong> disabling CSM on an old Legacy/MBR Windows install can stop it booting. Confirm you are on UEFI/GPT before you touch it.&lt;/li>
&lt;/ul>
&lt;/div>
&lt;p>Resizable BAR (ReBAR), which AMD markets as Smart Access Memory (SAM), is one of those BIOS toggles that gets talked about like a secret performance cheat. It is not. It is a small, legitimate, mostly-free improvement that you should enable on a modern system and then stop thinking about. This guide explains what it actually changes at the hardware level, gives you the honest performance picture from primary sources, and walks the exact BIOS steps to turn it on without breaking your boot.&lt;/p>
&lt;h2 id="what-resizable-bar-actually-is">What Resizable BAR actually is&lt;/h2>
&lt;p>A &amp;ldquo;BAR&amp;rdquo; is a Base Address Register, the PCI Express mechanism that maps a slice of a device&amp;rsquo;s memory into the CPU&amp;rsquo;s address space so the processor can read and write it. Historically, a graphics card only exposed a small portion of its memory this way. As Microsoft&amp;rsquo;s own driver documentation puts it, &amp;ldquo;discrete GPUs usually claim a 256 MB I/O region for their frame buffers&amp;rdquo; for &amp;ldquo;compatibility with 32-bit operating systems.&amp;rdquo; (&lt;a href="https://learn.microsoft.com/en-us/windows-hardware/drivers/display/resizable-bar-support" rel="noopener">Microsoft Learn&lt;/a>)&lt;/p>
&lt;p>That 256 MB window is the whole story. Your card might have 12 or 16 GB of VRAM, but the CPU could only &amp;ldquo;see&amp;rdquo; a 256 MB slice of it at any instant. To touch a different region, the system had to keep re-pointing that little window around the framebuffer while the GPU worked. It is a holdover from the 32-bit era that survived long into 64-bit computing.&lt;/p>
&lt;p>Resizable BAR removes the limit. It is a capability defined in the PCI Express specification by PCI-SIG, and on a card that supports it, Microsoft says &amp;ldquo;Windows renegotiates the size of a GPU&amp;rsquo;s BAR after firmware initialization,&amp;rdquo; after which &amp;ldquo;the GPU BAR is resized to its maximum size to expose the entire VRAM of the discrete GPU.&amp;rdquo; The driver then presents &amp;ldquo;a single CPUVisible memory segment&amp;rdquo; the CPU can address directly. (&lt;a href="https://learn.microsoft.com/en-us/windows-hardware/drivers/display/resizable-bar-support" rel="noopener">Microsoft Learn&lt;/a>)&lt;/p>
&lt;p>In plain terms: the CPU can now reach all of the GPU&amp;rsquo;s memory in one continuous mapping instead of peeking through a 256 MB porthole. When a game streams large assets, that can mean fewer round trips and better-fed transfers, which is where the occasional frame-rate gain comes from.&lt;/p>
&lt;p>Resizable BAR and Smart Access Memory are the same feature. ReBAR is the vendor-neutral PCI-SIG name; SAM is AMD&amp;rsquo;s brand for its version. NVIDIA and Intel use the generic term. The BIOS settings are identical regardless of whose GPU you run.&lt;/p>
&lt;h2 id="the-honest-performance-picture">The honest performance picture&lt;/h2>
&lt;p>Here is the part the &amp;ldquo;free FPS&amp;rdquo; headlines skip. The gains are real but small, and they are not universal.&lt;/p>
&lt;p>NVIDIA is refreshingly direct about this in its own announcement. The company states: &amp;ldquo;In our testing, we&amp;rsquo;ve found some titles benefit from a few percent, up to 12%. However, there are also titles that see a decrease in performance.&amp;rdquo; (&lt;a href="https://www.nvidia.com/en-us/geforce/news/geforce-rtx-30-series-resizable-bar-support/" rel="noopener">NVIDIA&lt;/a>) That is the whole shape of it from the vendor itself: some up, most flat, a few down.&lt;/p>
&lt;p>This is exactly why NVIDIA does not just switch it on for everything. It &amp;ldquo;pre-tests titles and uses game profiles to enable Resizable BAR only when it has a positive performance impact,&amp;rdquo; so that &amp;ldquo;you won&amp;rsquo;t have to worry about bugs or performance decreases.&amp;rdquo; (&lt;a href="https://www.nvidia.com/en-us/geforce/news/geforce-rtx-30-series-resizable-bar-support/" rel="noopener">NVIDIA&lt;/a>) The feature is enabled per-game on the driver side, not blindly across your whole library.&lt;/p>
&lt;p>AMD set higher expectations at launch, claiming SAM with RDNA 2 cards could deliver roughly 5 to 15 percent depending on the game. Independent testing landed lower. PCWorld&amp;rsquo;s explainer, written by Whitson Gordon, notes that while &amp;ldquo;AMD promises up to 16 percent&amp;rdquo; and &amp;ldquo;NVIDIA claims up to 12 percent,&amp;rdquo; their own testing showed &amp;ldquo;uplifts between 2 and 8 percent,&amp;rdquo; and warns plainly that &amp;ldquo;results can vary by game, resolution, and the hardware you&amp;rsquo;re using&amp;rdquo; and that &amp;ldquo;in some cases, Resizable BAR can actually decrease performance.&amp;rdquo; That piece also points to Hardware Unboxed finding measurable performance penalties in a few of NVIDIA&amp;rsquo;s own supported titles. (&lt;a href="https://www.pcworld.com/article/394720/faster-gaming-frame-rates-for-free-resizable-bar-explained.html" rel="noopener">PCWorld&lt;/a>)&lt;/p>
&lt;p>So the verified verdict is consistent across vendor and independent sources: &lt;strong>enable it, expect a few percent in the games that respond, expect nothing in most, and accept that a small number of older or lighter titles tick slightly down.&lt;/strong> Both NVIDIA and AMD ship it on by default on supported cards, which is the clearest signal of where the trade-off settles.&lt;/p>
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;padding:28px 16px 22px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;">
&lt;div style="text-align:center;margin-bottom:14px;">
&lt;div style="font-size:18px;font-weight:600;letter-spacing:-0.3px;">256 MB window vs. full-VRAM mapping&lt;/div>
&lt;div style="font-size:12px;color:#9a9ab5;margin-top:4px;">Resizable BAR lets the CPU address all of the GPU's memory at once&lt;/div>
&lt;/div>
&lt;svg viewBox="0 0 760 250" xmlns="http://www.w3.org/2000/svg" style="width:100%;display:block;" role="img" aria-label="Diagram comparing two states. Off: the CPU reaches GPU VRAM through a small 256 megabyte window and must move it around the framebuffer. On with Resizable BAR: the CPU maps the entire VRAM as one continuous CPU-visible segment.">
&lt;text x="190" y="28" font-size="14" font-weight="700" fill="#ed6a5a" text-anchor="middle">OFF -- 256 MB window&lt;/text>
&lt;rect x="60" y="44" width="260" height="150" rx="6" fill="rgba(255,255,255,0.04)" stroke="rgba(255,255,255,0.15)">&lt;/rect>
&lt;text x="190" y="64" font-size="11" fill="#9090a8" text-anchor="middle">GPU VRAM (e.g. 16 GB)&lt;/text>
&lt;rect x="76" y="78" width="52" height="100" rx="3" fill="rgba(237,106,90,0.35)" stroke="#ed6a5a">&lt;/rect>
&lt;text x="102" y="132" font-size="10" fill="#ffd2cc" text-anchor="middle" transform="rotate(-90 102 132)">256 MB&lt;/text>
&lt;text x="225" y="120" font-size="11" fill="#9090a8" text-anchor="middle">CPU re-points the&lt;/text>
&lt;text x="225" y="136" font-size="11" fill="#9090a8" text-anchor="middle">small window around&lt;/text>
&lt;text x="570" y="28" font-size="14" font-weight="700" fill="#5dca7a" text-anchor="middle">ON -- full VRAM&lt;/text>
&lt;rect x="440" y="44" width="260" height="150" rx="6" fill="rgba(93,202,122,0.10)" stroke="#5dca7a">&lt;/rect>
&lt;text x="570" y="64" font-size="11" fill="#9090a8" text-anchor="middle">GPU VRAM (e.g. 16 GB)&lt;/text>
&lt;rect x="456" y="78" width="228" height="100" rx="3" fill="rgba(93,202,122,0.25)" stroke="#5dca7a">&lt;/rect>
&lt;text x="570" y="132" font-size="11" fill="#d6f5de" text-anchor="middle">One CPUVisible segment&lt;/text>
&lt;text x="380" y="232" font-size="11" fill="#9a9ab5" text-anchor="middle">Source: Microsoft WDDM Resizable BAR documentation&lt;/text>
&lt;/svg>
&lt;/div>
&lt;/div>
&lt;h2 id="how-to-enable-resizable-bar--smart-access-memory">How to enable Resizable BAR / Smart Access Memory&lt;/h2>
&lt;p>Do the prep first, because most &amp;ldquo;ReBAR won&amp;rsquo;t turn on&amp;rdquo; problems are stale firmware.&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Update your motherboard BIOS&lt;/strong> to the latest version from your board vendor, and &lt;strong>update your GPU driver&lt;/strong>. ASUS notes that working Resize BAR needs &amp;ldquo;motherboard BIOS, graphics card VBIOS and driver support&amp;rdquo; all current. (&lt;a href="https://www.asus.com/us/support/faq/1046107/" rel="noopener">ASUS Support&lt;/a>) Older RTX 30 cards may also need a one-time VBIOS update via NVIDIA&amp;rsquo;s firmware tool.&lt;/li>
&lt;li>&lt;strong>Confirm you are on UEFI/GPT.&lt;/strong> Press Win+R, type &lt;code>msinfo32&lt;/code>, and check that &lt;strong>BIOS Mode&lt;/strong> reads &lt;strong>UEFI&lt;/strong>. If it says Legacy, your install is MBR and the next step can stop it booting. Convert to GPT first (or do not proceed).&lt;/li>
&lt;li>&lt;strong>Enter BIOS&lt;/strong> (usually Del or F2 at boot).&lt;/li>
&lt;li>&lt;strong>Disable CSM.&lt;/strong> ASUS states outright that the &amp;ldquo;Launch CSM option must set to Disabled to support Resize BAR.&amp;rdquo; (&lt;a href="https://www.asus.com/us/support/faq/1046107/" rel="noopener">ASUS Support&lt;/a>) It typically lives under a CSM (Compatibility Support Module) submenu.&lt;/li>
&lt;li>&lt;strong>Enable the two PCI settings.&lt;/strong> Under PCI Subsystem Settings (the wording varies by board), set &lt;strong>Above 4G Decoding&lt;/strong> to &lt;strong>Enabled&lt;/strong> and &lt;strong>Re-Size BAR Support&lt;/strong> to &lt;strong>Enabled&lt;/strong> or &lt;strong>Auto&lt;/strong>. ASUS&amp;rsquo;s own walkthrough places both there and calls for Above 4G Decoding enabled with Re-Size BAR Support set accordingly. (&lt;a href="https://edgeup.asus.com/2021/guide-how-to-enable-resizable-bar-on-your-asus-powered-gaming-pc/" rel="noopener">ASUS Edge Up&lt;/a>)&lt;/li>
&lt;li>&lt;strong>Save (F10) and reboot.&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Verify.&lt;/strong> On NVIDIA, open the NVIDIA Control Panel, go to System Information, and look for &lt;strong>Resizable BAR: Yes&lt;/strong>. On AMD, open AMD Software and check that &lt;strong>Smart Access Memory&lt;/strong> reads enabled.&lt;/li>
&lt;/ol>
&lt;p>If the Above 4G Decoding option is greyed out or Re-Size BAR refuses to enable, the cause is almost always one of the prep items: CSM still on, a Legacy/MBR install, or an out-of-date BIOS/VBIOS.&lt;/p>
&lt;h2 id="who-should-leave-it-off">Who should leave it off&lt;/h2>
&lt;p>The honest exceptions are narrow. If you are on an older system that NVIDIA, AMD, or Intel never qualified for Resizable BAR, leave it alone; forcing it on unsupported hardware is a community-mod path, not a supported one. And if your Windows install is Legacy/MBR and you are not ready to convert it to GPT, do not disable CSM just to chase a couple of percent. The downside risk (an install that will not boot) badly outweighs the upside.&lt;/p>
&lt;p>For everyone on a current GPU and a UEFI install, there is no good reason to keep it off. If your real question is whether your CPU and GPU are well matched in the first place, that is a different and more impactful tuning question. Our &lt;a href="https://techfuelhq.com/tools/pc-bottleneck-calculator/">PC bottleneck calculator&lt;/a> shows where the actual limiter sits at your resolution, which matters far more than a BAR toggle.&lt;/p>
&lt;h2 id="where-this-fits-with-your-other-settings">Where this fits with your other settings&lt;/h2>
&lt;p>Resizable BAR is one of a small cluster of platform-level toggles worth getting right once. Hardware-Accelerated GPU Scheduling (HAGS) is the other big one, and like ReBAR it helps in some scenarios and is neutral in most, so the same &amp;ldquo;enable it, verify, move on&amp;rdquo; mindset applies. If you are also chasing down launch or anti-cheat failures while you are in BIOS, our &lt;a href="https://techfuelhq.com/gaming/easy-anti-cheat-fix-guide-2026/">Easy Anti-Cheat fix guide&lt;/a> covers the Secure Boot and TPM settings that newer games now require. A modern build like our &lt;a href="https://techfuelhq.com/pc-builds/2500-dollar-7800x3d-rtx-5080-4k-build-2026/">7800X3D / RTX 5080 reference rig&lt;/a> ships with Resizable BAR available out of the box, and our &lt;a href="https://techfuelhq.com/gpu-reviews/">GPU reviews&lt;/a> cover the cards that support it.&lt;/p>
&lt;h2 id="the-bottom-line">The bottom line&lt;/h2>
&lt;p>Resizable BAR and Smart Access Memory do exactly one thing: they let your CPU map the GPU&amp;rsquo;s full memory at once instead of through a 256 MB porthole. The verified payoff is a few percent in some games, nothing in most, and a slight dip in a small handful. That is a good trade, which is why both major GPU vendors enable it by default. Update your BIOS and driver, confirm you are on UEFI/GPT, switch on Above 4G Decoding and Re-Size BAR Support with CSM off, verify it in your control panel, and leave it on. Then spend your tuning energy on the things that actually move frame rates more.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>Microsoft Learn &amp;ndash; System and Driver Support for Resizable BAR (256 MB region, full-VRAM CPUVisible segment): &lt;a href="https://learn.microsoft.com/en-us/windows-hardware/drivers/display/resizable-bar-support" rel="noopener">https://learn.microsoft.com/en-us/windows-hardware/drivers/display/resizable-bar-support&lt;/a>&lt;/li>
&lt;li>NVIDIA &amp;ndash; GeForce RTX 30 Series Performance Accelerates With Resizable BAR Support (per-game profiles; few percent up to 12%, some titles decrease): &lt;a href="https://www.nvidia.com/en-us/geforce/news/geforce-rtx-30-series-resizable-bar-support/" rel="noopener">https://www.nvidia.com/en-us/geforce/news/geforce-rtx-30-series-resizable-bar-support/&lt;/a>&lt;/li>
&lt;li>ASUS Support &amp;ndash; How to Enable Resize BAR (CSM must be disabled; BIOS/VBIOS/driver all current): &lt;a href="https://www.asus.com/us/support/faq/1046107/" rel="noopener">https://www.asus.com/us/support/faq/1046107/&lt;/a>&lt;/li>
&lt;li>ASUS Edge Up &amp;ndash; Guide: How to enable Resizable BAR on your ASUS-powered gaming PC (Above 4G Decoding + Re-Size BAR Support, UEFI/GPT): &lt;a href="https://edgeup.asus.com/2021/guide-how-to-enable-resizable-bar-on-your-asus-powered-gaming-pc/" rel="noopener">https://edgeup.asus.com/2021/guide-how-to-enable-resizable-bar-on-your-asus-powered-gaming-pc/&lt;/a>&lt;/li>
&lt;li>PCWorld (Whitson Gordon) &amp;ndash; Resizable BAR explained (2-8% measured uplift, game-dependent, can decrease performance; cites Hardware Unboxed penalties): &lt;a href="https://www.pcworld.com/article/394720/faster-gaming-frame-rates-for-free-resizable-bar-explained.html" rel="noopener">https://www.pcworld.com/article/394720/faster-gaming-frame-rates-for-free-resizable-bar-explained.html&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Hardware-Accelerated GPU Scheduling: On or Off? (2026)</title><link>https://techfuelhq.com/gaming/hardware-accelerated-gpu-scheduling-on-or-off-2026/</link><pubDate>Thu, 25 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/gaming/hardware-accelerated-gpu-scheduling-on-or-off-2026/</guid><description>&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR · HAGS on or off&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>Modern GPU (RTX 30/40/50, RX 6000+): turn it ON.&lt;/strong> Current drivers assume it, and it is the default on Windows 11.&lt;/li>
&lt;li>&lt;strong>It is required for frame generation.&lt;/strong> NVIDIA DLSS Frame Generation will not activate with HAGS off, and AMD's frame-gen path expects it on supported hardware.&lt;/li>
&lt;li>&lt;strong>FPS impact is usually neutral to slightly positive&lt;/strong> -- the real win is less CPU scheduling overhead and lower latency in some titles, not a big frame-rate jump.&lt;/li>
&lt;li>&lt;strong>Turn it OFF only if you see a regression:&lt;/strong> documented cases include micro-stutter, high DPC latency, and some VR hitching that clear up when it is disabled.&lt;/li>
&lt;li>&lt;strong>The toggle:&lt;/strong> Settings &amp;gt; System &amp;gt; Display &amp;gt; Graphics &amp;gt; Change default graphics settings. Restart after.&lt;/li>
&lt;/ul>
&lt;/div>
&lt;p>The short answer for almost everyone reading this: if you are on a modern graphics card, turn hardware-accelerated GPU scheduling &lt;strong>on&lt;/strong> and leave it on. It is the default on Windows 11 for a reason, and it is a hard requirement for the frame generation features people most want from RTX 40/50 and recent Radeon cards. The longer answer &amp;ndash; why it exists, what it changes, and the handful of real cases where off still wins &amp;ndash; is what decides whether you ever need to touch the switch.&lt;/p>
&lt;h2 id="what-hardware-accelerated-gpu-scheduling-actually-changes">What hardware-accelerated GPU scheduling actually changes&lt;/h2>
&lt;p>&amp;ldquo;HAGS&amp;rdquo; sounds like a performance toggle, but it is really a change to &lt;em>who schedules work onto your GPU&lt;/em>. Microsoft introduced it as part of the Windows graphics driver model, and the mechanism is specific.&lt;/p>
&lt;p>Before HAGS, Windows scheduled GPU work using a &lt;strong>high-priority thread running on your CPU&lt;/strong>. That thread collected render commands, batched them, and fed them to the GPU. With hardware-accelerated GPU scheduling enabled, Windows &amp;ldquo;can now offload most of GPU scheduling to a dedicated GPU-based scheduling processor,&amp;rdquo; as &lt;a href="https://devblogs.microsoft.com/directx/hardware-accelerated-gpu-scheduling/" rel="noopener">Microsoft&amp;rsquo;s DirectX team describes it&lt;/a>. The GPU&amp;rsquo;s own scheduling processor takes over the high-frequency work &amp;ndash; quanta management and context switching between GPU engines &amp;ndash; using its own memory (VRAM) to manage those queues in batches. Windows still decides which application gets priority; only the moment-to-moment scheduling moves down onto the silicon.&lt;/p>
&lt;p>Microsoft is blunt that this is &amp;ldquo;a significant and fundamental change to the driver model,&amp;rdquo; which is exactly why it shipped as an opt-in feature that was disabled by default, and why it needs a &lt;strong>WDDM 2.7 or newer driver&lt;/strong> plus a GPU built to support it. It is not a tweak layered on top of the old path; it is a different path.&lt;/p>
&lt;p>The practical consequence: with the CPU no longer running that scheduling thread, you free up some CPU overhead and can shave latency in the games where that overhead was a factor. That is the upside. It is also why the gains are modest and uneven rather than a universal FPS boost &amp;ndash; more on that below.&lt;/p>
&lt;h2 id="the-honest-fps-expectation-neutral-to-positive-not-a-magic-button">The honest FPS expectation: neutral-to-positive, not a magic button&lt;/h2>
&lt;p>This is where a lot of guides oversell it. Hardware-accelerated GPU scheduling does &lt;strong>not&lt;/strong> reliably hand you a big frame-rate increase. The realistic expectation is neutral to slightly positive on average FPS, with the meaningful benefit being reduced CPU scheduling overhead.&lt;/p>
&lt;p>That framing tells you &lt;em>where&lt;/em> it helps most: CPU-bound situations. If your processor is the limiter, trimming the scheduling work it has to do is more likely to matter. If you are GPU-bound &amp;ndash; pushing high resolution and settings where the graphics card is pegged &amp;ndash; moving the scheduler off the CPU changes very little, because the CPU was not the bottleneck to begin with. If you are not sure which side you are on, the &lt;a href="https://techfuelhq.com/tools/pc-bottleneck-calculator/">PC Bottleneck Calculator&lt;/a> estimates whether your CPU or GPU is the limiter at your resolution, and that is the variable that decides whether HAGS does anything you can feel.&lt;/p>
&lt;p>So the case for turning it on is not &amp;ldquo;more frames.&amp;rdquo; It is &amp;ldquo;modern drivers are built around it, it costs you nothing on average, and it unlocks the feature below.&amp;rdquo;&lt;/p>
&lt;h2 id="the-real-reason-it-is-non-negotiable-frame-generation">The real reason it is non-negotiable: frame generation&lt;/h2>
&lt;p>Here is the part that turns &amp;ldquo;probably leave it on&amp;rdquo; into &amp;ldquo;leave it on.&amp;rdquo; NVIDIA&amp;rsquo;s &lt;strong>DLSS Frame Generation requires hardware-accelerated GPU scheduling to be enabled at the operating-system level.&lt;/strong> This is not a community rumor &amp;ndash; it is stated in official game-vendor documentation. CD PROJEKT RED&amp;rsquo;s support page for DLSS Frame Generation says plainly that &amp;ldquo;DLSS Frame Generation requires a GeForce RTX 40 Series graphics card and Hardware-Accelerated GPU Scheduling being enabled in operating system,&amp;rdquo; and walks players through enabling it (&lt;a href="https://support.cdprojektred.com/en/cyberpunk/pc/sp-technical/issue/2369/dlss-frame-generation-how-to-enable-hardware-accelerated-gpu-scheduling-1" rel="noopener">CD PROJEKT RED support&lt;/a>).&lt;/p>
&lt;p>The reason is the mechanism from the first section: frame generation needs the GPU to have direct control over its own scheduling and memory to insert generated frames into the pipeline. If Windows is still running the old CPU-side scheduler, that control is not there, and the feature simply stays unavailable. On Windows 11 this is usually a non-issue because the setting is on by default; on Windows 10 you may have to enable it yourself before Frame Generation appears.&lt;/p>
&lt;p>AMD&amp;rsquo;s frame generation works differently under the hood &amp;ndash; its FSR 3 / driver-level Fluid Motion Frames path runs on the GPU&amp;rsquo;s shaders via asynchronous compute rather than a dedicated optical-flow hardware block like NVIDIA&amp;rsquo;s RTX 40 cards use, &lt;a href="https://gpuopen.com/fidelityfx-super-resolution-3/" rel="noopener">per AMD&amp;rsquo;s GPUOpen documentation&lt;/a>. The takeaway is the same in practice: on a supported modern Radeon, you want HAGS on and your driver current. If you want the full picture of how interpolated frames, latency, and the base-framerate floor interact, that is the subject of &lt;a href="https://techfuelhq.com/articles/frame-generation-explained-2026/">frame generation explained&lt;/a> &amp;ndash; this article is just the OS switch that lets any of it run.&lt;/p>
&lt;h2 id="when-off-can-actually-win">When OFF can actually win&lt;/h2>
&lt;p>A blanket &amp;ldquo;always on&amp;rdquo; would be dishonest, because a minority of setups regress with it enabled. These are real, documented cases &amp;ndash; not invented numbers &amp;ndash; and they share a pattern: the issue appears with HAGS on and clears when you turn it off.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Micro-stutter.&lt;/strong> Some players report frame-pacing micro-stutter that disappears the moment they disable HAGS, with the game running smooth afterward (&lt;a href="https://rog-forum.asus.com/t5/rog-strix-series/quot-if-i-enable-hags-i-get-micro-stutters/td-p/1019715" rel="noopener">ASUS ROG forum thread&lt;/a>).&lt;/li>
&lt;li>&lt;strong>High DPC latency.&lt;/strong> On some Windows 11 systems, high DPC latency tied to the NVIDIA display driver (nvlddmkm.sys) drops sharply after turning HAGS off (&lt;a href="https://www.nvidia.com/en-us/geforce/forums/game-ready-drivers/13/506279/high-dpc-latency-nvidia-win-11/3341675/" rel="noopener">NVIDIA GeForce forums&lt;/a>). High DPC latency is a classic source of audio crackle and stutter, so this one is worth checking if you have those symptoms.&lt;/li>
&lt;li>&lt;strong>VR.&lt;/strong> Disabling HAGS is a recommended troubleshooting step for SteamVR stutter on some configurations (&lt;a href="https://steamcommunity.com/app/250820/discussions/3/4036976796097585542/" rel="noopener">Steam community&lt;/a>). VR is latency- and pacing-sensitive in a way flat gaming is not, which is why it shows up disproportionately here.&lt;/li>
&lt;li>&lt;strong>Older or weaker GPUs, and some Unreal Engine titles.&lt;/strong> If your card barely meets the support bar, or a specific game&amp;rsquo;s engine paces worse with it on, the simpler CPU-scheduled path can feel steadier.&lt;/li>
&lt;/ul>
&lt;p>The common thread: none of these are reasons to default to off. They are reasons to &lt;em>test&lt;/em> off if you are seeing a specific problem &amp;ndash; and if you do not use frame generation, you have nothing to lose by trying it.&lt;/p>
&lt;h2 id="a-simple-decision">A simple decision&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Your situation&lt;/th>
&lt;th scope="col">Setting&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Modern GPU (RTX 30/40/50, RX 6000+), no issues&lt;/td>
&lt;td>&lt;strong>On&lt;/strong> (it is the default)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>You want DLSS / AMD frame generation&lt;/td>
&lt;td>&lt;strong>On&lt;/strong> (required)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Micro-stutter, audio crackle, or high DPC latency&lt;/td>
&lt;td>Test &lt;strong>Off&lt;/strong> &amp;ndash; keep whichever is smoother&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>VR stutter you cannot otherwise fix&lt;/td>
&lt;td>Test &lt;strong>Off&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Older / barely-supported GPU that feels hitchy&lt;/td>
&lt;td>Test &lt;strong>Off&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;h2 id="how-to-change-it-and-verify">How to change it (and verify)&lt;/h2>
&lt;p>The toggle lives at &lt;strong>Settings &amp;gt; System &amp;gt; Display &amp;gt; Graphics &amp;gt; Change default graphics settings&lt;/strong>, where you flip the &lt;strong>Hardware-accelerated GPU scheduling&lt;/strong> switch (&lt;a href="https://learn.microsoft.com/en-us/answers/questions/3857947/how-to-open-hardware-accelerated-gpu-scheduling-on" rel="noopener">Microsoft Learn&lt;/a>). If you do not see the option at all, your GPU either does not support it or your driver is older than WDDM 2.7 &amp;ndash; install the latest driver straight from NVIDIA, AMD, or Intel and check again. Restart after changing it so the display driver reloads cleanly.&lt;/p>
&lt;p>To judge whether it helped or hurt &lt;em>your&lt;/em> machine, do not trust the average FPS counter. Run a demanding, repeatable scene with a frame-time overlay and compare your &lt;strong>1% lows&lt;/strong> and frame-time consistency on and off. As with the &lt;a href="https://techfuelhq.com/gaming/dx12-vs-dx11-fps-2026/">DX12 vs DX11&lt;/a> question, smoothness lives in the lows, not the average &amp;ndash; and if a single game stutters under HAGS, rule out the boring causes first, like a &lt;a href="https://techfuelhq.com/gaming/easy-anti-cheat-fix-guide-2026/">launcher or anti-cheat fault&lt;/a>, before blaming the scheduler.&lt;/p>
&lt;h2 id="the-bottom-line">The bottom line&lt;/h2>
&lt;p>Hardware-accelerated GPU scheduling is best understood as plumbing, not a performance cheat &amp;ndash; the same way &lt;a href="https://techfuelhq.com/gaming/resizable-bar-on-or-off-2026/">Resizable BAR / Smart Access Memory&lt;/a> is a small, legitimate gain rather than the free-FPS switch it gets sold as. On a modern GPU it belongs on: it is the Windows 11 default, it moves scheduling overhead off your CPU for a neutral-to-small FPS effect, and &amp;ndash; the deciding factor &amp;ndash; it is a hard requirement for NVIDIA DLSS Frame Generation and the AMD frame-gen path most people on current cards actually want. Turn it off only when you have a concrete regression in front of you: stutter, DPC latency, or VR hitching that demonstrably clears when you disable it. Otherwise, leave the switch where Windows put it and spend your tuning time somewhere it pays off more.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>Microsoft DirectX Developer Blog &amp;ndash; Hardware Accelerated GPU Scheduling (mechanism, WDDM 2.7 requirement, opt-in): &lt;a href="https://devblogs.microsoft.com/directx/hardware-accelerated-gpu-scheduling/" rel="noopener">https://devblogs.microsoft.com/directx/hardware-accelerated-gpu-scheduling/&lt;/a>&lt;/li>
&lt;li>Microsoft Learn &amp;ndash; how to open the Hardware-accelerated GPU scheduling toggle (Settings path): &lt;a href="https://learn.microsoft.com/en-us/answers/questions/3857947/how-to-open-hardware-accelerated-gpu-scheduling-on" rel="noopener">https://learn.microsoft.com/en-us/answers/questions/3857947/how-to-open-hardware-accelerated-gpu-scheduling-on&lt;/a>&lt;/li>
&lt;li>CD PROJEKT RED Support &amp;ndash; DLSS Frame Generation requires Hardware-Accelerated GPU Scheduling: &lt;a href="https://support.cdprojektred.com/en/cyberpunk/pc/sp-technical/issue/2369/dlss-frame-generation-how-to-enable-hardware-accelerated-gpu-scheduling-1" rel="noopener">https://support.cdprojektred.com/en/cyberpunk/pc/sp-technical/issue/2369/dlss-frame-generation-how-to-enable-hardware-accelerated-gpu-scheduling-1&lt;/a>&lt;/li>
&lt;li>AMD GPUOpen &amp;ndash; FidelityFX Super Resolution 3 frame generation (shader / async-compute mechanism): &lt;a href="https://gpuopen.com/fidelityfx-super-resolution-3/" rel="noopener">https://gpuopen.com/fidelityfx-super-resolution-3/&lt;/a>&lt;/li>
&lt;li>ASUS ROG Forum &amp;ndash; HAGS micro-stutter regression report: &lt;a href="https://rog-forum.asus.com/t5/rog-strix-series/quot-if-i-enable-hags-i-get-micro-stutters/td-p/1019715" rel="noopener">https://rog-forum.asus.com/t5/rog-strix-series/quot-if-i-enable-hags-i-get-micro-stutters/td-p/1019715&lt;/a>&lt;/li>
&lt;li>NVIDIA GeForce Forums &amp;ndash; high DPC latency on Windows 11 resolved by disabling HAGS: &lt;a href="https://www.nvidia.com/en-us/geforce/forums/game-ready-drivers/13/506279/high-dpc-latency-nvidia-win-11/3341675/" rel="noopener">https://www.nvidia.com/en-us/geforce/forums/game-ready-drivers/13/506279/high-dpc-latency-nvidia-win-11/3341675/&lt;/a>&lt;/li>
&lt;li>Steam Community &amp;ndash; SteamVR stutter troubleshooting (disable HAGS): &lt;a href="https://steamcommunity.com/app/250820/discussions/3/4036976796097585542/" rel="noopener">https://steamcommunity.com/app/250820/discussions/3/4036976796097585542/&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Ryzen 5 7600X3D vs Ryzen 7 7800X3D: Value Pick (2026)</title><link>https://techfuelhq.com/articles/7600x3d-vs-7800x3d-value-2026/</link><pubDate>Wed, 24 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/7600x3d-vs-7800x3d-value-2026/</guid><description>&lt;p>For a pure gaming build, the Ryzen 5 7600X3D captures most of the X3D magic for less money: it carries the same 96MB of 3D V-Cache as the 7800X3D and trails it by only about 6% in gaming. The 7800X3D earns that 6% with two more cores and slightly higher clocks, which also buy you streaming headroom, multitasking, and a longevity buffer. The honest split: a single-task 1080p or 1440p gamer who lives near a Micro Center should look hard at the 7600X3D; everyone who streams, multitasks, or cannot get the exclusive should pay up for the 7800X3D.&lt;/p>
&lt;h2 id="why-both-chips-game-so-well-3d-v-cache">Why both chips game so well: 3D V-Cache&lt;/h2>
&lt;p>The reason these two processors punch above their core counts is the stacked cache. AMD&amp;rsquo;s 3D V-Cache stacks an extra 64MB of L3 onto the die, bringing both the &lt;a href="https://www.amd.com/en/products/processors/desktops/ryzen/7000-series/amd-ryzen-5-7600x3d.html" rel="noopener">Ryzen 5 7600X3D&lt;/a> and the &lt;a href="https://www.amd.com/en/products/processors/desktops/ryzen/7000-series/amd-ryzen-7-7800x3d.html" rel="noopener">Ryzen 7 7800X3D&lt;/a> to 96MB of total L3.&lt;/p>
&lt;p>Games make many small, scattered memory requests. A larger cache serves more of them on-chip instead of waiting on slower system RAM, which is why X3D chips beat higher-clocked, pricier CPUs in games while drawing less power. That mechanism is identical on both parts here. The 7600X3D is not a watered-down cache design; it has the full 96MB working set. This is the core of the value argument: you are not paying the 7800X3D premium to get the feature that makes X3D special in games. You already have it on the cheaper chip.&lt;/p>
&lt;h2 id="the-spec-gap-6-cores-vs-8-and-clocks">The spec gap: 6 cores vs 8, and clocks&lt;/h2>
&lt;p>The difference between these two is cores and clocks, not cache.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Spec&lt;/th>
&lt;th scope="col">Ryzen 5 7600X3D&lt;/th>
&lt;th scope="col">Ryzen 7 7800X3D&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Architecture&lt;/td>
&lt;td>Zen 4 (5nm)&lt;/td>
&lt;td>Zen 4 (5nm)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Cores / Threads&lt;/td>
&lt;td>6 / 12&lt;/td>
&lt;td>8 / 16&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Base clock&lt;/td>
&lt;td>4.1 GHz&lt;/td>
&lt;td>4.2 GHz&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Boost clock&lt;/td>
&lt;td>4.7 GHz&lt;/td>
&lt;td>5.0 GHz&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>L3 cache&lt;/td>
&lt;td>96MB&lt;/td>
&lt;td>96MB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Default TDP&lt;/td>
&lt;td>65W&lt;/td>
&lt;td>120W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Socket&lt;/td>
&lt;td>AM5&lt;/td>
&lt;td>AM5&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The 7600X3D&amp;rsquo;s official specs (6 cores, 12 threads, 4.1 GHz base, 4.7 GHz boost, 65W) come from &lt;a href="https://www.amd.com/en/products/processors/desktops/ryzen/7000-series/amd-ryzen-5-7600x3d.html" rel="noopener">AMD&amp;rsquo;s product page&lt;/a>; the 7800X3D&amp;rsquo;s 8-core, 16-thread, 5.0 GHz boost, 120W rating comes from &lt;a href="https://www.amd.com/en/products/processors/desktops/ryzen/7000-series/amd-ryzen-7-7800x3d.html" rel="noopener">AMD&amp;rsquo;s 7800X3D page&lt;/a>. Two things stand out. The 7800X3D has a 300 MHz higher boost clock, and it carries a meaningfully higher 120W TDP versus the 7600X3D&amp;rsquo;s 65W, reflecting the extra cores it has to feed. Both are Zen 4 on the same AM5 platform, so a motherboard or RAM kit that works with one works with the other.&lt;/p>
&lt;h2 id="the-gaming-gap-about-6-percent">The gaming gap: about 6 percent&lt;/h2>
&lt;p>On our relative gaming index, the 7800X3D scores 85.6 and the 7600X3D scores 80.6 (see the &lt;a href="https://techfuelhq.com/articles/cpu-hierarchy-2026/">2026 CPU gaming hierarchy&lt;/a>). That is roughly a 6% gaming lead for the 8-core chip. Our index is a relative gaming score where the fastest chip in the set anchors at 100, not an absolute frame-rate figure, so read it as tier position rather than a literal FPS delta.&lt;/p>
&lt;p>That 6% is corroborated by the most thorough public test of these two parts. &lt;a href="https://gamersnexus.net/cpus/amds-silent-launch-ryzen-5-7600x3d-cpu-review-benchmarks-vs-7800x3d-5700x3d-9800x3d" rel="noopener">Gamers Nexus&lt;/a>, reviewing the 7600X3D against the 7800X3D, measured a spread that mostly lands in the single digits:&lt;/p>
&lt;ul>
&lt;li>Stellaris: 7800X3D ahead by 5.4%&lt;/li>
&lt;li>F1 24: 7800X3D ahead by 7.2%&lt;/li>
&lt;li>Baldur&amp;rsquo;s Gate 3: about 9% (126 vs 116 FPS average)&lt;/li>
&lt;li>Final Fantasy XIV Dawntrail: roughly tied&lt;/li>
&lt;li>Rainbow Six Siege: a 1.4% lead Gamers Nexus called &amp;ldquo;basically error&amp;rdquo;&lt;/li>
&lt;/ul>
&lt;p>A handful of CPU-bound titles stretch the gap wider. Gamers Nexus saw Starfield run about 19% faster on the 7800X3D (145 vs 122 FPS) and Dragon&amp;rsquo;s Dogma 2 around 15%. Those are the exception, not the rule, and they tend to be the games where extra cores and clocks help most. Across a broad suite the picture is consistent with our 6% index figure: the 7800X3D is faster, but in most games you would struggle to feel it. To line the two up yourself, the &lt;a href="https://techfuelhq.com/tools/cpu-comparison/">CPU Comparison Tool&lt;/a> puts their index scores side by side.&lt;/p>
&lt;h2 id="when-the-6-core-7600x3d-is-enough">When the 6-core 7600X3D is enough&lt;/h2>
&lt;p>The 7600X3D is the right call when your machine does one demanding thing at a time. If you play at 1080p or 1440p chasing high refresh, and you are not also encoding a stream, transcoding video, or running a wall of background apps, six X3D cores keep modern games fed. The cache does the heavy lifting, and that cache is identical to the 7800X3D&amp;rsquo;s.&lt;/p>
&lt;p>This is also the resolution caveat that matters. The higher you push resolution, the more the graphics card sets your frame rate, which shrinks any CPU gap further. At 1440p with a mid-to-high-end GPU, the already-small 6% lead compresses toward nothing because the GPU hits its ceiling first. The &lt;a href="https://techfuelhq.com/tools/pc-bottleneck-calculator/">PC Bottleneck Calculator&lt;/a> estimates whether your CPU or GPU is the limiting part at a given resolution, which is the real question behind &amp;ldquo;do I need the 8-core chip.&amp;rdquo;&lt;/p>
&lt;h2 id="when-to-pay-up-for-the-8-core-7800x3d">When to pay up for the 8-core 7800X3D&lt;/h2>
&lt;p>Two extra cores and four extra threads stop being a rounding error the moment the game is not the only workload running.&lt;/p>
&lt;p>Pay up for the 7800X3D if you:&lt;/p>
&lt;ul>
&lt;li>Stream or record while you play. Game capture and encoding want cores the 6-core chip is also using for the game.&lt;/li>
&lt;li>Run simulation, 4X, or strategy titles with heavy background tasks, where late-game CPU load piles up.&lt;/li>
&lt;li>Do any real productivity work: video editing, compiling, local AI inference, dozens of browser tabs.&lt;/li>
&lt;li>Run a sustained all-core load like CPU mining. &lt;a href="https://techfuelhq.com/crypto/cpu-mining-guide-2026/">Monero&amp;rsquo;s RandomX&lt;/a> rewards both cores and cache, so the 8-core 7800X3D out-hashes the 6-core 7600X3D — though, as that guide&amp;rsquo;s math shows, neither one pays for itself.&lt;/li>
&lt;li>Want a longevity buffer. As games trend toward using more threads, the 8-core part has more runway before it feels tight.&lt;/li>
&lt;/ul>
&lt;p>That last point is the quiet argument for the 7800X3D even on a gaming-only build. You are buying two cores of future-proofing for the years the chip will live in your system. If you later want to know whether to jump again, the &lt;a href="https://techfuelhq.com/articles/7800x3d-vs-9800x3d-upgrade-2026/">7800X3D vs 9800X3D upgrade analysis&lt;/a> covers the next rung.&lt;/p>
&lt;h2 id="the-availability-catch-you-cannot-ignore">The availability catch you cannot ignore&lt;/h2>
&lt;p>There is a practical reason this is not a clean &amp;ldquo;buy the cheaper chip&amp;rdquo; call: the 7600X3D is a Micro Center exclusive. AMD launched it quietly in September 2024, sold only through &lt;a href="https://www.tomshardware.com/pc-components/cpus/amd-launches-ryzen-5-7600x3d-microcenter-exclusive-six-core-zen-4-cpu-with-game-boosting-3d-v-cache" rel="noopener">Micro Center&amp;rsquo;s roughly 28 U.S. stores&lt;/a> at a $299 list price, often as in-store stock or in-store pickup with &lt;a href="https://videocardz.com/newz/amd-ryzen-5-7600x3d-released-in-the-u-s-for-299-as-a-microcenter-exclusive" rel="noopener">a discounted CPU-plus-board-plus-RAM bundle&lt;/a>. It shipped with no review samples, which is why coverage was thin at launch.&lt;/p>
&lt;p>For anyone near a Micro Center, that exclusivity is a feature, because the bundle pricing makes the value gap wider than the chips alone. Gamers Nexus&amp;rsquo;s own verdict was blunt: the 7800X3D&amp;rsquo;s roughly $180 premium &amp;ldquo;doesn&amp;rsquo;t seem worth it if you have a Micro Center near you.&amp;rdquo; If you do not, the equation flips. The 7800X3D sells through every normal retailer, and chasing a store-exclusive part you cannot reliably buy is not worth losing weeks over to save a single-digit performance gap you may never notice.&lt;/p>
&lt;h2 id="the-verdict-on-price-per-frame">The verdict on price-per-frame&lt;/h2>
&lt;p>For a value gamer, the call comes down to access and use case. If you can buy the 7600X3D at Micro Center and you game one task at a time, it is the better price-per-frame chip: you surrender about 6% of gaming performance, most of it invisible at 1440p, to keep real money in your pocket. If you cannot get the exclusive, or you stream, multitask, or want the two-core longevity cushion, the 7800X3D is the safer pick and the one I would point most buyers to simply because you can actually purchase it. Both are excellent X3D gaming chips. The cheaper one just asks you to live near the right store.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Want the full picture? The &lt;a href="https://techfuelhq.com/articles/cpu-hierarchy-2026/">2026 CPU gaming hierarchy&lt;/a> ranks both chips against the rest of the X3D lineup, and the &lt;a href="https://techfuelhq.com/tools/cpu-comparison/">CPU Comparison Tool&lt;/a> lets you stack any two processors head-to-head.&lt;/em>&lt;/p></description></item><item><title>Ryzen 9 9950X3D vs 9800X3D: Which X3D for Gaming</title><link>https://techfuelhq.com/articles/9950x3d-vs-9800x3d-gaming-2026/</link><pubDate>Mon, 22 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/9950x3d-vs-9800x3d-gaming-2026/</guid><description>&lt;p>For a pure gaming PC, buy the Ryzen 7 9800X3D, not the Ryzen 9 9950X3D. The 9950X3D is the better all-rounder if you also render, compile, or stream on the CPU, but in games it lands at parity with the cheaper chip - and sometimes a hair behind it. This guide explains why a 16-core flagship ties an 8-core part in games, what the dual-CCD design actually does under the hood, and which buyer each chip is for.&lt;/p>
&lt;h2 id="the-one-line-verdict">The one-line verdict&lt;/h2>
&lt;p>In &lt;a href="https://techfuelhq.com/articles/cpu-hierarchy-2026/">our CPU gaming hierarchy, from Tom&amp;rsquo;s Hardware data&lt;/a> where the Ryzen 7 9850X3D is the 100.0 reference, the 9800X3D scores 97.0 and the 9950X3D scores 95.7. That puts the 8-core 9800X3D about 1 to 2 percent ahead of the 16-core 9950X3D in relative gaming - a small gap, but a real one, and it points the wrong way for anyone expecting the pricier chip to win.&lt;/p>
&lt;p>Independent testing agrees. In a 16-game average at 1080p High/Ultra, the 9800X3D edged the 9950X3D 195.5 FPS to 194.8 FPS, a &lt;a href="https://www.techspot.com/review/3114-amd-ryzen-9-9950x3d2/" rel="noopener">0.4% difference that is within measurement noise per TechSpot&amp;rsquo;s testing summary&lt;/a>. GamersNexus found the same pattern title by title: Final Fantasy XIV &amp;ldquo;functionally equal,&amp;rdquo; Stellaris simulation 5% faster on the 9800X3D, Dragon&amp;rsquo;s Dogma 2 a &lt;a href="https://gamersnexus.net/cpus/amd-ryzen-9-9950x3d-cpu-review-benchmarks-vs-9800x3d-285k-9950x-more" rel="noopener">&amp;ldquo;measurable but irrelevant 3.2%&amp;rdquo; lead for the 9950X3D&lt;/a>. The chips trade places depending on the game. Neither is decisively faster for play.&lt;/p>
&lt;h2 id="why-16-cores-does-not-beat-8-cores-in-games">Why 16 cores does not beat 8 cores in games&lt;/h2>
&lt;p>Two facts about PC games explain the whole result. First, games rarely scale past eight threads, so a second 8-core die mostly sits idle during play. Second, games are latency-sensitive: they fire many small, scattered memory requests, and what wins is keeping data close. That is exactly what 3D V-Cache does - AMD stacks extra L3 cache on the die so more of those requests hit cache instead of waiting on system memory.&lt;/p>
&lt;p>Here is the catch. On the 9950X3D, &lt;a href="https://www.amd.com/en/products/processors/desktops/ryzen/9000-series/amd-ryzen-9-9950x3d.html" rel="noopener">3D V-Cache sits on only one of its two core dies&lt;/a>. The chip carries 128 MB of L3 and 16 cores, but the cache-rich gaming cores are only eight of them. If a game&amp;rsquo;s threads were to spill onto the second, cache-light die, every cross-die hop would add latency and erase the V-Cache advantage. The 9800X3D never has that problem: it is a &lt;a href="https://www.newegg.com/amd-ryzen-7-9000-series-ryzen-7-9800x3d-granite-ridge-zen-5-socket-am5-desktop-cpu-processor/p/N82E16819113877" rel="noopener">single 8-core die with all 96 MB of L3 cache on the cores the game is already using&lt;/a>. One die, one cache pool, no hops. That structural simplicity is the entire reason an 8-core part can match or beat a 16-core one in gaming.&lt;/p>
&lt;h2 id="the-dual-ccd-parking-mechanism-explained">The dual-CCD parking mechanism, explained&lt;/h2>
&lt;p>AMD&amp;rsquo;s fix for the 9950X3D is software that steers games onto the cache die. When you launch a game, the &lt;a href="https://www.idc.com/resource-center/blog/review-of-the-amd-ryzen-9-9950x3d/" rel="noopener">system parks the cores on the second die that lacks 3D V-Cache, making them temporarily unavailable to the OS&lt;/a>, so the scheduler is forced to keep the game on the fast cache cores. The brain behind this is AMD&amp;rsquo;s 3D V-Cache Performance Optimizer, which &lt;a href="https://www.idc.com/resource-center/blog/review-of-the-amd-ryzen-9-9950x3d/" rel="noopener">dynamically picks the favored cores per application - prioritizing the cache-connected cores during gaming and the highest-frequency cores for non-gaming work&lt;/a>.&lt;/p>
&lt;p>How does the system know it is a game? AMD ships an Application Compatibility Database - a whitelist - that detects specific titles and adjusts the thread pool accordingly, delivered through &lt;a href="https://videocardz.com/newz/amd-confirms-chipset-driver-updates-and-new-features-for-ryzen-9-9950x3d-9900x3d" rel="noopener">chipset driver updates AMD confirmed for the 9950X3D and 9900X3D&lt;/a>. Xbox Game Bar assists with detection, but parking does not depend on it being enabled.&lt;/p>
&lt;p>When it works, it works well - GamersNexus confirmed &amp;ldquo;parking is functioning properly and the CPU is not hamstrung.&amp;rdquo; But notice what you are signing up for: a driver, a whitelist, and a scheduling layer that all have to fire correctly every session. A brand-new game the database has not learned yet can land on the wrong cores until a driver update catches up. The 9800X3D has none of this machinery to go wrong, because it has nothing to schedule around. For a gaming-only box, that is one fewer thing that can break - and the practical reason the single-die chip is the safer pick.&lt;/p>
&lt;h2 id="where-the-9950x3d-actually-wins-productivity">Where the 9950X3D actually wins: productivity&lt;/h2>
&lt;p>None of this means the 9950X3D is a bad chip. It is a superb one - for a different job. With twice the cores, it is &lt;a href="https://gamersnexus.net/cpus/amd-ryzen-9-9950x3d-cpu-review-benchmarks-vs-9800x3d-285k-9950x-more" rel="noopener">about 73% faster than the 9800X3D in multi-threaded work — a 635 vs 367 geometric-mean gap in GamersNexus testing (put the other way: the 9800X3D scores ~42% lower)&lt;/a>. That is the difference between a chip that games and a chip that games &lt;em>and&lt;/em> renders, compiles, runs VMs, or encodes a stream on the CPU while you play.&lt;/p>
&lt;p>So the dividing line is clean. If your PC only plays games, those 16 cores are dead weight you paid extra for. If your PC also earns money or finishes creative work, the 9950X3D gives you 9800X3D-class gaming with workstation-class throughput in one socket - and that is a genuinely compelling package. GamersNexus reached the same split verdict: for a build that is purely about games, &lt;a href="https://gamersnexus.net/cpus/amd-ryzen-9-9950x3d-cpu-review-benchmarks-vs-9800x3d-285k-9950x-more" rel="noopener">scale down to the 9800X3D because the difference is not big enough to justify it&lt;/a>.&lt;/p>
&lt;h2 id="price-power-and-thermals">Price, power, and thermals&lt;/h2>
&lt;p>Price is the loudest argument for the 9800X3D in a gaming build. The 9950X3D launched at a &lt;a href="https://www.techpowerup.com/333774/amd-ryzen-9-9950x3d-9900x3d-prices-confirmed-usd-699-usd-599-march-12-launch-is-official" rel="noopener">$699 MSRP&lt;/a> on March 12, 2025, while the 9800X3D carries a &lt;a href="https://www.amd.com/en/products/processors/desktops/ryzen/9000-series/amd-ryzen-7-9800x3d.html" rel="noopener">$479 MSRP&lt;/a>. That is roughly $220 you can redirect to a faster GPU - which, in a gaming PC, buys far more frames than the second CPU die ever will.&lt;/p>
&lt;p>Power follows the same logic. The 9800X3D is rated at a &lt;a href="https://www.amd.com/en/products/processors/desktops/ryzen/9000-series/amd-ryzen-7-9800x3d.html" rel="noopener">120W TDP&lt;/a>; the 9950X3D carries a 170W TDP. In games the gap narrows because only the cache die is active - GamersNexus measured the 9950X3D pulling &lt;a href="https://gamersnexus.net/cpus/amd-ryzen-9-9950x3d-cpu-review-benchmarks-vs-9800x3d-285k-9950x-more" rel="noopener">98.8W in Starfield versus 168W for the non-X3D 9950X&lt;/a>. Still, the 8-core part is the cooler, simpler chip to feed and quiet, which matters in a compact or low-noise build.&lt;/p>
&lt;h2 id="how-to-choose">How to choose&lt;/h2>
&lt;p>Match the chip to the workload, not the marketing tier:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>You only game.&lt;/strong> Buy the 9800X3D. Equal-or-better frame rates, single-die simplicity with no parking to babysit, lower power, and about $220 saved that belongs in your graphics card. The relative-tier data, the independent benchmarks, and GamersNexus all converge here.&lt;/li>
&lt;li>&lt;strong>You game and do heavy CPU work&lt;/strong> - video editing, compiling, 3D, VMs, or CPU-side streaming. Buy the 9950X3D. You give up nothing meaningful in games and gain roughly 42% in multi-core throughput.&lt;/li>
&lt;li>&lt;strong>You are unsure how CPU-bound you even are.&lt;/strong> Resolution decides how much any of this matters. At 4K the GPU dominates and both chips converge; at high-refresh 1080p and 1440p the CPU gap is most visible. Run your exact GPU and resolution through our &lt;a href="https://techfuelhq.com/tools/pc-bottleneck-calculator/">PC bottleneck calculator&lt;/a> before buying CPU headroom you cannot use, and put the two chips side by side in the &lt;a href="https://techfuelhq.com/tools/cpu-comparison/">CPU comparison tool&lt;/a>.&lt;/li>
&lt;/ul>
&lt;p>The headline rarely matches the receipt: the cheaper 8-core chip is the better gaming CPU here, and the 16-core flagship is the better &lt;em>computer&lt;/em> only if you do more than play. For more head-to-heads and the latest tested hardware, see our &lt;a href="https://techfuelhq.com/reviews/">reviews&lt;/a>.&lt;/p></description></item><item><title>How to Build a NAS From an Old PC (2026 Guide)</title><link>https://techfuelhq.com/homelab/nas-from-old-pc-2026/</link><pubDate>Fri, 19 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/homelab/nas-from-old-pc-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-06-19 · St. Louis County, MO · ~13 min read&lt;/p>
&lt;img src="https://techfuelhq.com/images/homelab/nas-from-old-pc-2026.svg" width="1200" height="760" loading="lazy" decoding="async" alt="Two-stage decision flow for turning an old PC into a NAS: a power gate where a 65W-class CPU idling under 40W means repurpose wins and a 105W-plus chip idling over 75W means buy purpose-built, then an OS pick by RAM choosing OpenMediaVault under 8GB, TrueNAS CE at 8GB-plus, or Unraid for mismatched drives." style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR · Old PC into a NAS&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>Does it qualify?&lt;/strong> 64-bit CPU, 4GB+ RAM (8GB comfortable), enough SATA ports for your drives plus a boot SSD, and bay space. Almost any desktop from the last ~10 years passes.&lt;/li>
&lt;li>&lt;strong>Pick the OS by RAM:&lt;/strong> low-RAM or genuinely old box gets &lt;strong>OpenMediaVault&lt;/strong> (Debian, runs on 2-4GB). 8GB+ and you want checksumming gets &lt;strong>TrueNAS Community Edition&lt;/strong> (ZFS). Want to mix drive sizes and will pay gets &lt;strong>Unraid&lt;/strong>.&lt;/li>
&lt;li>&lt;strong>Boot device:&lt;/strong> a small separate SSD (64-128GB). Never install the OS on a data drive.&lt;/li>
&lt;li>&lt;strong>Out of SATA ports?&lt;/strong> Add an LSI HBA flashed to IT mode, not a cheap RAID card or port multiplier.&lt;/li>
&lt;li>&lt;strong>The honest catch:&lt;/strong> no ECC on consumer boards (fine, keep backups), and an old tower can idle at 40-70W versus under 20W for a purpose-built box. If power matters, do the three-year math first.&lt;/li>
&lt;li>&lt;strong>This guide is the zero-purchase path.&lt;/strong> Buying new parts instead? See the &lt;a href="https://techfuelhq.com/homelab/best-budget-nas-builds-2025/">budget NAS build guide&lt;/a>. Want a hypervisor, not just storage? See the &lt;a href="https://techfuelhq.com/articles/repurpose-gaming-pc-proxmox-server-2026/">old gaming PC to Proxmox guide&lt;/a>.&lt;/li>
&lt;/ul>
&lt;/div>
&lt;h2 id="the-real-question-is-your-old-pc-worth-it-versus-a-200-mini-pc">The real question: is your old PC worth it versus a $200 mini PC?&lt;/h2>
&lt;p>You have a desktop in a closet. An old office Optiplex, a retired family PC, a gaming rig you upgraded out of. The pitch is obvious: it already has a case, a power supply, RAM, and probably some empty drive bays, so turning it into network storage costs nothing but a weekend. That is true, and it is the single best reason to do this.&lt;/p>
&lt;p>But &amp;ldquo;free&amp;rdquo; only counts the up-front cost. A network-attached storage box runs around the clock, so the number that actually matters over its life is idle power draw. A 2018-era tower with a 65W-class CPU and a couple of spinning drives commonly idles somewhere in the 40-70W range, while a purpose-built 4-bay mini NAS like the ones in the &lt;a href="https://techfuelhq.com/homelab/best-budget-nas-builds-2025/">budget NAS build guide&lt;/a> idles under 20W. At a typical US electricity rate, that gap is real money over three years. We track the actual draws for common homelab hardware in the &lt;a href="https://techfuelhq.com/homelab/24-7-homelab-idle-power-costs-2026/">24/7 idle power cost breakdown&lt;/a> so you can plug in your own rate.&lt;/p>
&lt;p>Here is the honest decision rule. &lt;strong>If the old PC has a 65W-class or smaller CPU and you can get it idling under ~40W, repurposing it is the clear winner&lt;/strong> — you save the entire cost of a new box and you get a far bigger RAM ceiling and more PCIe slots than any mini PC. &lt;strong>If it is a 105W+ enthusiast chip, or it idles north of ~75W even after tuning, the power bill will quietly out-cost a new mini NAS inside a year or two.&lt;/strong> In that case, sell the old platform and buy purpose-built.&lt;/p>
&lt;p>This guide is specifically the &lt;em>reuse the hardware you already own&lt;/em> path. If your goal is a virtualization host that also does storage rather than a dedicated storage appliance, you want the &lt;a href="https://techfuelhq.com/articles/repurpose-gaming-pc-proxmox-server-2026/">old gaming PC to Proxmox guide&lt;/a> instead — same hardware, different job. And if you are still deciding whether you even need a NAS versus simpler direct-attached storage, start with &lt;a href="https://techfuelhq.com/homelab/das-vs-nas-2026/">DAS vs NAS in 2026&lt;/a>.&lt;/p>
&lt;h2 id="does-my-old-pc-qualify-the-five-minute-checklist">Does my old PC qualify? The five-minute checklist&lt;/h2>
&lt;p>Before you download anything, confirm the machine clears these bars. None of this requires opening a terminal yet, just knowing your specs.&lt;/p>
&lt;h3 id="1-64-bit-cpu">1. 64-bit CPU&lt;/h3>
&lt;p>Every NAS OS worth running is 64-bit only. Any Intel Core 2-era-or-newer or AMD chip from roughly 2010 onward is 64-bit, so this rules out only genuinely ancient hardware. Practically, if the PC ran a 64-bit copy of Windows, it qualifies. Unlike a Proxmox hypervisor build, you do &lt;strong>not&lt;/strong> need VT-x/VT-d virtualization flags for a plain NAS, so even chips with virtualization disabled or absent are fine.&lt;/p>
&lt;h3 id="2-ram-4gb-floor-8gb-comfortable">2. RAM: 4GB floor, 8GB comfortable&lt;/h3>
&lt;p>This is the spec that steers your OS choice more than any other. The Google AI Overview and the r/HomeServer consensus both land on the same numbers: &lt;strong>4GB is the absolute minimum, 8GB or more is recommended for stability.&lt;/strong> OpenMediaVault will genuinely run on 2-4GB because it is just Debian with a web UI. TrueNAS wants 8GB as a practical floor because ZFS uses spare RAM as read cache. Whatever you have, there is an OS that fits it — the trick is matching them, which the next section does.&lt;/p>
&lt;h3 id="3-sata-ports-and-bay-space">3. SATA ports (and bay space)&lt;/h3>
&lt;p>Count two things: how many SATA ports the motherboard has, and how many drives the case can physically hold. You need &lt;strong>one SATA port per data drive plus one for the boot device.&lt;/strong> Most consumer boards ship 4-6 ports, which comfortably covers a 2-4 drive home NAS. Bay space is the other half: a slim office desktop might only fit one or two 3.5-inch drives even if the board has six ports, so check the chassis, not just the spec sheet. XDA&amp;rsquo;s &amp;ldquo;things to check when building a NAS with old PC parts&amp;rdquo; walks through exactly this trap.&lt;/p>
&lt;h3 id="4-the-hba-escape-hatch-when-you-run-out-of-ports">4. The HBA escape hatch (when you run out of ports)&lt;/h3>
&lt;p>If you want more drives than the board has ports, the community-standard answer is an &lt;strong>LSI HBA card flashed to &amp;ldquo;IT mode.&amp;rdquo;&lt;/strong> IT mode turns the card into a plain pass-through controller, handing each disk directly to the OS — which is exactly what ZFS and OMV want. Cards like the LSI 9211-8i (and its OEM rebadges from Dell and others) are cheap on the used market and are a homelab staple precisely for this. Avoid two tempting shortcuts: a cheap hardware RAID card (it hides the disks from ZFS) and a SATA port multiplier (flaky under load). The flashing process is well-documented across the TrueNAS forums and r/homelab; budget an evening for it the first time.&lt;/p>
&lt;h3 id="5-a-separate-boot-drive">5. A separate boot drive&lt;/h3>
&lt;p>Do not install the NAS OS onto one of your storage drives. Use a small, dedicated boot device — a cheap 64-128GB SATA or NVMe SSD is ideal. If you are genuinely out of SATA ports, a quality USB SSD works (the official TrueNAS forum advice is a real USB SSD like a Samsung T7, &lt;em>not&lt;/em> a flimsy thumb drive, which wears out fast). Keeping the OS off the data pool means the storage stays clean and portable: you can reinstall or swap the OS without ever touching your files.&lt;/p>
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;padding:28px 16px 20px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;">
&lt;div style="text-align:center;margin-bottom:20px;">
&lt;div style="font-size:18px;font-weight:600;letter-spacing:-0.3px;">Does your old PC qualify?&lt;/div>
&lt;div style="font-size:12px;color:#9a9ab5;margin-top:4px;">Five checks before you flash a USB stick&lt;/div>
&lt;/div>
&lt;div style="overflow-x:auto;">
&lt;table style="width:100%;max-width:720px;margin:0 auto;border-collapse:collapse;font-size:13px;">
&lt;thead>
&lt;tr>
&lt;th style="text-align:left;padding:12px 10px;border-bottom:2px solid rgba(255,255,255,0.1);color:#7a7a96;font-weight:500;font-size:11px;min-width:130px;">Check&lt;/th>
&lt;th style="text-align:left;padding:12px 10px;border-bottom:2px solid rgba(93,202,122,0.4);color:#5dca7a;font-weight:600;">You need&lt;/th>
&lt;th style="text-align:left;padding:12px 10px;border-bottom:2px solid rgba(237,106,90,0.4);color:#ed6a5a;font-weight:600;">Fix if short&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">
&lt;td style="padding:10px;color:#9090a8;">CPU&lt;/td>
&lt;td style="padding:10px;color:#e0e0f0;">64-bit (any ~2010+ desktop)&lt;/td>
&lt;td style="padding:10px;color:#8a8a9e;">None practical — replace the box&lt;/td>
&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">
&lt;td style="padding:10px;color:#9090a8;">RAM&lt;/td>
&lt;td style="padding:10px;color:#e0e0f0;">4GB min / 8GB comfortable&lt;/td>
&lt;td style="padding:10px;color:#8a8a9e;">Cheap DDR3/DDR4 used, or run OMV&lt;/td>
&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">
&lt;td style="padding:10px;color:#9090a8;">SATA ports&lt;/td>
&lt;td style="padding:10px;color:#e0e0f0;">1 per drive + 1 boot&lt;/td>
&lt;td style="padding:10px;color:#8a8a9e;">LSI HBA in IT mode&lt;/td>
&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">
&lt;td style="padding:10px;color:#9090a8;">Bay space&lt;/td>
&lt;td style="padding:10px;color:#e0e0f0;">Room for your 3.5in drives&lt;/td>
&lt;td style="padding:10px;color:#8a8a9e;">Bigger case, or fewer/larger drives&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="padding:10px;color:#9090a8;">Boot device&lt;/td>
&lt;td style="padding:10px;color:#e0e0f0;">Separate 64-128GB SSD&lt;/td>
&lt;td style="padding:10px;color:#8a8a9e;">USB SSD (not a thumb drive)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;div style="text-align:right;margin-top:10px;font-size:10px;color:#44445a;">techfuelhq.com · June 2026&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="choosing-the-os-openmediavault-vs-truenas-vs-unraid">Choosing the OS: OpenMediaVault vs TrueNAS vs Unraid&lt;/h2>
&lt;p>This is where people stall, and the wrong pick means a rebuild. For an &lt;em>old consumer PC&lt;/em> specifically, the decision is simpler than the general &amp;ldquo;best NAS OS&amp;rdquo; debate, because two things narrow it: your RAM, and the fact that your board almost certainly has no ECC.&lt;/p>
&lt;h3 id="openmediavault--the-default-for-old-low-ram-hardware">OpenMediaVault — the default for old, low-RAM hardware&lt;/h3>
&lt;p>OpenMediaVault (OMV) is Debian Linux with a NAS-focused web UI bolted on. That is its whole strength: it is the lightest option by a wide margin, runs comfortably on &lt;strong>2-4GB of RAM&lt;/strong>, and does not force a particular filesystem on you (ext4, XFS, or Btrfs, with ZFS available via plugin). It does SMB/CIFS shares, NFS, rsync, and basic Docker, and nothing it does not need to. For a genuinely old desktop, a low-RAM machine, or anyone who wants a pure file server without ZFS&amp;rsquo;s appetite, OMV is the right call and the one the SERP&amp;rsquo;s own AI Overview singles out as &amp;ldquo;designed specifically to run well on minimal, older hardware.&amp;rdquo;&lt;/p>
&lt;h3 id="truenas-community-edition--when-you-have-8gb-and-want-zfs">TrueNAS Community Edition — when you have 8GB+ and want ZFS&lt;/h3>
&lt;p>TrueNAS Community Edition is built around &lt;strong>ZFS&lt;/strong>, and that is both its appeal and its cost. ZFS gives you end-to-end checksumming, silent scrubs that catch bit rot, snapshots, and clean recovery from a failed drive — the most trustworthy storage layer you can run on consumer hardware. The price is RAM: TrueNAS lists &lt;strong>8GB as its practical floor&lt;/strong>, and ZFS will use whatever spare memory you give it as read cache (ARC). The widely repeated &amp;ldquo;1GB of RAM per TB&amp;rdquo; rule is a rough rule of thumb, not a requirement, and has been walked back for years. If your old PC has 8GB or more and the data matters, TrueNAS is the pick. Just go in knowing the ECC caveat below.&lt;/p>
&lt;h3 id="unraid--the-paid-pick-for-mismatched-drives">Unraid — the paid pick for mismatched drives&lt;/h3>
&lt;p>Unraid is the odd one out: it is paid (perpetual licenses from roughly $49 to $249), and instead of pooling identical disks it treats each drive as its own filesystem with parity calculated across them. The killer feature is &lt;strong>mixing drive sizes&lt;/strong> — exactly the situation you land in when you reuse an old PC and a junk-drawer pile of mismatched HDDs (a 4TB, a 6TB, an 8TB all in one array). It also has the friendliest Docker and VM interface of the three. The tradeoffs: it costs money, and its parity approach does not checksum data the way ZFS does. If you are reusing whatever drives you already own and do not want to buy a matched set, Unraid&amp;rsquo;s flexibility is worth the license. If you do go the other way and buy a matched set of NAS drives for a ZFS pool, the &lt;a href="https://techfuelhq.com/homelab/best-nas-hard-drives-2026/">best NAS hard drives guide&lt;/a> walks through the CMR picks and the recertified $/TB math — and if you&amp;rsquo;re set on Seagate, &lt;a href="https://techfuelhq.com/homelab/seagate-ironwolf-vs-ironwolf-pro-vs-exos-2026/">IronWolf vs IronWolf Pro vs Exos&lt;/a> sorts out which of the three tiers fits your pool and budget.&lt;/p>
&lt;h3 id="the-decision-rule">The decision rule&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Under 8GB RAM, or you just want a simple file server:&lt;/strong> OpenMediaVault.&lt;/li>
&lt;li>&lt;strong>8GB+ and the data is irreplaceable:&lt;/strong> TrueNAS Community Edition (ZFS), accepting no-ECC.&lt;/li>
&lt;li>&lt;strong>A pile of mismatched drives you want to use as-is, and you will pay:&lt;/strong> Unraid.&lt;/li>
&lt;/ul>
&lt;p>For a deeper look at how the ZFS, Btrfs, and parity backends actually differ on rebuilds, IOPS, and redundancy, see the full &lt;a href="https://techfuelhq.com/homelab/proxmox-truenas-unraid-storage-backend-2026/">Proxmox vs TrueNAS vs Unraid storage backend comparison&lt;/a>. And before you commit to a drive layout, run your disk count and sizes through the &lt;a href="https://techfuelhq.com/tools/nas-storage-calculator/">NAS and RAID storage calculator&lt;/a> to see usable-versus-raw capacity across RAID and RAIDZ levels.&lt;/p>
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;padding:28px 16px 20px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;">
&lt;div style="text-align:center;margin-bottom:20px;">
&lt;div style="font-size:18px;font-weight:600;letter-spacing:-0.3px;">NAS OS for an old PC, compared&lt;/div>
&lt;div style="font-size:12px;color:#9a9ab5;margin-top:4px;">Picked for reused consumer hardware, not enterprise builds&lt;/div>
&lt;/div>
&lt;div style="overflow-x:auto;">
&lt;table style="width:100%;max-width:720px;margin:0 auto;border-collapse:collapse;font-size:13px;">
&lt;thead>
&lt;tr>
&lt;th style="text-align:left;padding:12px 10px;border-bottom:2px solid rgba(255,255,255,0.1);color:#7a7a96;font-weight:500;font-size:11px;min-width:110px;">&lt;/th>
&lt;th style="text-align:center;padding:12px 10px;border-bottom:2px solid rgba(80,144,224,0.4);color:#5090e0;font-weight:600;min-width:130px;">OpenMediaVault&lt;/th>
&lt;th style="text-align:center;padding:12px 10px;border-bottom:2px solid rgba(93,202,122,0.4);color:#5dca7a;font-weight:600;min-width:130px;">TrueNAS CE&lt;/th>
&lt;th style="text-align:center;padding:12px 10px;border-bottom:2px solid rgba(224,128,64,0.4);color:#e08040;font-weight:600;min-width:130px;">Unraid&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">
&lt;td style="padding:10px;color:#9090a8;">Price&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#5090e0;font-weight:500;">Free&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#5dca7a;font-weight:500;">Free&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#e08040;font-weight:500;">$49-$249&lt;/td>
&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">
&lt;td style="padding:10px;color:#9090a8;">Min RAM&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#5090e0;font-weight:500;">2-4GB&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#e0e0f0;">8GB&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#e0e0f0;">4GB (8GB+ ideal)&lt;/td>
&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">
&lt;td style="padding:10px;color:#9090a8;">Filesystem&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#e0e0f0;">ext4 / XFS / Btrfs&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#5dca7a;font-weight:500;">ZFS&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#e0e0f0;">XFS + parity&lt;/td>
&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">
&lt;td style="padding:10px;color:#9090a8;">Bit-rot protection&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#9090a8;">Depends on FS&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#5dca7a;font-weight:500;">Yes (self-heal)&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#9090a8;">Parity only&lt;/td>
&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">
&lt;td style="padding:10px;color:#9090a8;">Mix drive sizes&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#e0e0f0;">With plugin&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#ed6a5a;">No&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#e08040;font-weight:500;">Yes (killer feature)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="padding:10px;color:#9090a8;">Best for old PC when&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#8a8a9e;font-size:12px;">Low RAM,&lt;br>simple file server&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#8a8a9e;font-size:12px;">8GB+,&lt;br>data integrity&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#8a8a9e;font-size:12px;">Mismatched&lt;br>junk-drawer drives&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;div style="text-align:right;margin-top:10px;font-size:10px;color:#44445a;">techfuelhq.com · June 2026&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="the-build-path-from-old-pc-to-working-shares">The build path: from old PC to working shares&lt;/h2>
&lt;p>Once the machine qualifies and you have picked an OS, the actual conversion is short. This is the path the TrueNAS docs, OMV docs, and every beginner walkthrough converge on.&lt;/p>
&lt;h3 id="step-1--back-up-anything-on-the-drives-first">Step 1 — Back up anything on the drives first&lt;/h3>
&lt;p>Installing a NAS OS and creating a storage pool &lt;strong>erases the drives.&lt;/strong> If the old PC or any of the disks still hold files you care about, copy them off now, to another machine or an external drive. There is no undo once you build the pool.&lt;/p>
&lt;h3 id="step-2--pick-your-os-and-download-the-installer">Step 2 — Pick your OS and download the installer&lt;/h3>
&lt;p>Grab the ISO for your choice: OpenMediaVault from the official site, TrueNAS Community Edition from truenas.com, or Unraid from unraid.net. Match it to your RAM per the decision rule above — this is the call that is hardest to reverse later.&lt;/p>
&lt;h3 id="step-3--flash-a-usb-installer">Step 3 — Flash a USB installer&lt;/h3>
&lt;p>Write the ISO to a spare USB stick with &lt;a href="https://rufus.ie/" rel="noopener">Rufus&lt;/a> (Windows), &lt;a href="https://etcher.balena.io/" rel="noopener">balenaEtcher&lt;/a> (cross-platform), or Ventoy if you want to keep several installers on one stick. This USB is the &lt;em>installer&lt;/em> and can be reused afterward — it is not where the OS will live.&lt;/p>
&lt;h3 id="step-4--boot-the-old-pc-from-usb-and-install">Step 4 — Boot the old PC from USB and install&lt;/h3>
&lt;p>Plug in the installer USB and your separate boot SSD. Power on and tap the boot-menu key (commonly F11, F12, or Delete) to boot from the USB. Run the installer and, when it asks for a target, &lt;strong>select your small boot SSD — not a data drive.&lt;/strong> A few minutes later it reboots to a console showing an IP address, for example &lt;code>192.168.1.150&lt;/code>.&lt;/p>
&lt;h3 id="step-5--open-the-web-ui-and-set-a-static-ip">Step 5 — Open the web UI and set a static IP&lt;/h3>
&lt;p>Type that IP into a browser on your main computer to reach the NAS dashboard. First housekeeping job: give the NAS a &lt;strong>static IP&lt;/strong>, either in the OS network settings or as a DHCP reservation in your router, so the address never moves out from under you.&lt;/p>
&lt;h3 id="step-6--create-the-storage-pool">Step 6 — Create the storage pool&lt;/h3>
&lt;p>In the OS dashboard, group your data drives into a pool. The redundancy choice matters: a two-drive &lt;strong>mirror&lt;/strong> (ZFS mirror or RAID 1) gives you one-drive fault tolerance and is the simplest safe default; larger arrays use RAIDZ (TrueNAS) or parity (Unraid). Sanity-check raw-versus-usable space for your layout with the &lt;a href="https://techfuelhq.com/tools/nas-storage-calculator/">NAS and RAID storage calculator&lt;/a> before you commit, since redundancy always costs capacity.&lt;/p>
&lt;h3 id="step-7--create-shares-and-connect">Step 7 — Create shares and connect&lt;/h3>
&lt;p>Enable SMB (Server Message Block) for Windows/Mac/Linux access, create a shared folder on your pool, add a user, and point your other devices at it. The share now mounts like any network drive. Add a scheduled scrub (ZFS) or parity check (Unraid) so the array verifies itself on a cadence, and you have a working NAS.&lt;/p>
&lt;h2 id="the-honest-caveats">The honest caveats&lt;/h2>
&lt;p>A repurposed old PC is a genuinely good NAS, but it is not free of tradeoffs, and pretending otherwise would not help you. Here are the four worth knowing before you commit.&lt;/p>
&lt;p>&lt;strong>Power draw.&lt;/strong> This is the big one, covered up top: an old tower idles far higher than a purpose-built mini NAS, and over years that gap can exceed the cost of just buying the new box. Measure your idle wattage with a smart plug or a Kill-A-Watt and run it against your electricity rate using the &lt;a href="https://techfuelhq.com/homelab/24-7-homelab-idle-power-costs-2026/">24/7 idle power cost breakdown&lt;/a>. If you are over ~75W and cannot bring it down, the repurpose math may not win.&lt;/p>
&lt;p>&lt;strong>No ECC RAM.&lt;/strong> Consumer desktop boards do not support error-correcting memory, and ZFS is happiest with ECC. But the long-standing scare that &amp;ldquo;ZFS without ECC will destroy your data&amp;rdquo; has been overstated for years — non-ECC ZFS is no more dangerous than any other non-ECC filesystem, and it is what the overwhelming majority of home TrueNAS users run. The real protection is not ECC; it is keeping actual backups, because a NAS (RAID or not) is never a backup by itself.&lt;/p>
&lt;p>&lt;strong>Drive and SATA limits.&lt;/strong> A consumer board and a small case cap how far you can expand. You can push past the port count with an HBA, but bay space, power-supply SATA connectors, and airflow all become real constraints as you add disks. If you find yourself buying an HBA, a bigger PSU, and a new case, you have effectively built a new machine and should price it against a purpose-built one.&lt;/p>
&lt;p>&lt;strong>Noise and footprint.&lt;/strong> A tower with case and CPU fans is louder and far larger than a silent shelf-top mini NAS. If the box lives in an office or bedroom, that matters. It is a fine reason to choose differently even when the power math says &amp;ldquo;keep it.&amp;rdquo;&lt;/p>
&lt;p>None of these are dealbreakers for the common case — a reasonably efficient desktop with a few drives, living somewhere you will not hear it. They are the signals that tell you when reusing the old PC stops making sense and buying purpose-built starts. If you land on &amp;ldquo;buy,&amp;rdquo; the &lt;a href="https://techfuelhq.com/homelab/best-budget-nas-builds-2025/">budget NAS build guide&lt;/a> covers the cheapest paths in the current drive-price climate.&lt;/p>
&lt;h2 id="bottom-line">Bottom line&lt;/h2>
&lt;p>If you already own a desktop with a 64-bit CPU, 4GB or more of RAM, and a couple of free SATA ports, you can turn it into a real NAS this weekend for the cost of a small boot SSD and a free OS. Match the OS to the RAM — OpenMediaVault for the lean, low-RAM box; TrueNAS Community Edition when you have 8GB-plus and want ZFS&amp;rsquo;s data integrity; Unraid when you are pooling mismatched drives and will pay for the convenience. Put the OS on a separate boot drive, add an LSI HBA in IT mode if you run short on ports, and keep backups regardless of redundancy.&lt;/p>
&lt;p>The one number that decides whether this is a smart move or a slow money leak is idle power. Measure it, do the three-year math, and if your old tower drinks too much, there is no shame in selling it and &lt;a href="https://techfuelhq.com/homelab/best-budget-nas-builds-2025/">building a purpose-built box&lt;/a> instead. For most people with a 65W-class machine gathering dust, though, the answer is simple: do not throw it out — give it a second life as storage.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://www.xda-developers.com/how-turn-old-pc-into-nas/" rel="noopener">XDA — How to turn an old PC into a NAS&lt;/a> and &lt;a href="https://www.xda-developers.com/things-you-must-check-when-building-a-nas-with-old-pc-parts/" rel="noopener">6 things to check when building a NAS with old PC parts&lt;/a> — hardware checklist, SATA/bay constraints, boot-drive guidance&lt;/li>
&lt;li>&lt;a href="https://www.howtogeek.com/turned-old-windows-pc-into-inexpensive-nas/" rel="noopener">How-To Geek — Don&amp;rsquo;t throw away your old PC, it makes a better NAS&lt;/a> — boot SSD, RAM, Rufus-flashed TrueNAS USB walkthrough&lt;/li>
&lt;li>&lt;a href="https://www.truenas.com/docs/" rel="noopener">TrueNAS documentation&lt;/a> and &lt;a href="https://www.truenas.com/community/" rel="noopener">community forums&lt;/a> — Community Edition system requirements, ZFS RAM guidance, USB-SSD boot advice, no-ECC reality&lt;/li>
&lt;li>&lt;a href="https://docs.openmediavault.org/" rel="noopener">OpenMediaVault documentation&lt;/a> — Debian base and minimal-hardware system requirements&lt;/li>
&lt;li>&lt;a href="https://docs.unraid.net/" rel="noopener">Unraid documentation&lt;/a> — licensing tiers and mixed-drive parity array&lt;/li>
&lt;li>&lt;a href="https://www.reddit.com/r/HomeServer/comments/wo2yah/complete_beginner_can_i_build_a_nas_with_an_old_pc/" rel="noopener">r/HomeServer — &amp;ldquo;Complete beginner: can I build a NAS with an old PC&amp;rdquo;&lt;/a> and &lt;a href="https://www.reddit.com/r/DataHoarder/comments/1e5y4z2/use_an_old_pc_or_build_a_nas/" rel="noopener">r/DataHoarder — &amp;ldquo;Use an old PC, or build a NAS?&amp;rdquo;&lt;/a> — community consensus on RAM floor, OS choice, and the HBA IT-mode staple&lt;/li>
&lt;li>&lt;a href="https://rufus.ie/" rel="noopener">Rufus&lt;/a> and &lt;a href="https://etcher.balena.io/" rel="noopener">balenaEtcher&lt;/a> — USB installer tools&lt;/li>
&lt;/ul>
&lt;p>Email corrections to &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a>.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Lowell K. Wood IV (LK Wood IV) runs TechFuel HQ from St. Louis County, Missouri — a homelab and budget-PC infrastructure site for self-hosters who refuse to pay cloud rent. Contact: &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a>&lt;/em>&lt;/p></description></item><item><title>How to Install Proxmox VE (2026): Install + Update Reference</title><link>https://techfuelhq.com/articles/how-to-install-proxmox-ve-2026/</link><pubDate>Fri, 19 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/how-to-install-proxmox-ve-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-19 · ~12 min read · St. Louis County, MO&lt;/p>
&lt;p>Installing Proxmox VE is genuinely easy. The graphical installer is a few screens, and it writes itself to disk in a couple of minutes. What trips people up is not the install itself: it is the first fifteen minutes afterward, where a default install points at a repository you cannot use without paying, and the longer-term question of how you keep the thing updated once it is running.&lt;/p>
&lt;p>This page is the generic reference for both. It is hardware-agnostic on purpose: the steps below apply to a mini PC, a used office desktop, an old gaming rig, or a rack server. If you want a hands-on, click-by-click walkthrough on a specific small box, the &lt;a href="https://techfuelhq.com/articles/proxmox-mini-pc-setup/">Proxmox mini PC setup guide&lt;/a> is the hardware-specific companion to this one. If you are still choosing hardware, start with the &lt;a href="https://techfuelhq.com/homelab/proxmox-hardware-requirements-2026/">Proxmox hardware requirements&lt;/a>. And if you already run VE 8 and want to jump to VE 9, that is a different, planned operation covered in the &lt;a href="https://techfuelhq.com/tutorials/proxmox-ve-8-to-9-upgrade-2026/">8-to-9 upgrade gotchas&lt;/a>.&lt;/p>
&lt;p>Everything below is cited to the official Proxmox documentation. The current release as of this writing is Proxmox VE 9.2-1 (released May 21, 2026), built on Debian 13 &amp;ldquo;Trixie.&amp;rdquo; If a command or file path is here, it is real and current for VE 9.&lt;/p>
&lt;img src="https://techfuelhq.com/images/articles/how-to-install-proxmox-ve-2026.svg" width="1200" height="720" loading="lazy" decoding="async" alt="The Proxmox VE 9 install flow in five steps: download and verify the ISO with SHA256, write the USB installer with dd or Etcher, boot the installer and pick ext4, reach the web UI at https://your-ip:8006, then the repository fix most guides skip (disable enterprise, enable pve-no-subscription, run apt full-upgrade), with a footer contrasting routine updates against major version upgrades." style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;h2 id="part-1-the-clean-install-any-hardware">Part 1: The clean install (any hardware)&lt;/h2>
&lt;h3 id="step-1-download-and-verify-the-iso">Step 1: Download and verify the ISO&lt;/h3>
&lt;p>Grab the latest Proxmox VE ISO from the &lt;a href="https://www.proxmox.com/en/downloads/proxmox-virtual-environment/iso" rel="noopener">official downloads page&lt;/a>. As of June 2026 that is the VE 9.2-1 installer, about 1.7 GB.&lt;/p>
&lt;p>Do not skip the checksum. The download page publishes a SHA256 value next to the ISO. After downloading, compute the hash and compare it to that published value:&lt;/p>
&lt;pre tabindex="0">&lt;code># Linux / macOS
sha256sum proxmox-ve_9.2-1.iso
# Windows (PowerShell)
Get-FileHash proxmox-ve_9.2-1.iso -Algorithm SHA256
&lt;/code>&lt;/pre>&lt;p>If the two strings do not match, the download is corrupt or tampered with. Delete it and re-download. This takes ten seconds and it is the one verification step that matters before you write installation media.&lt;/p>
&lt;h3 id="step-2-write-the-usb-installer">Step 2: Write the USB installer&lt;/h3>
&lt;p>A USB stick is the standard install medium. The tool depends on your OS, and the official guidance is specific about which ones work:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Linux:&lt;/strong> use &lt;code>dd&lt;/code>. Identify the USB device first with &lt;code>lsblk&lt;/code> (run it before and after plugging the stick in so you are certain which device is the USB), then write:
&lt;pre tabindex="0">&lt;code>dd bs=1M conv=fdatasync if=./proxmox-ve_9.2-1.iso of=/dev/XYZ
&lt;/code>&lt;/pre>Replace &lt;code>/dev/XYZ&lt;/code> with your actual USB device. Getting this wrong overwrites the wrong disk, so confirm the device name carefully.&lt;/li>
&lt;li>&lt;strong>Windows:&lt;/strong> Etcher works with no configuration. Rufus also works, but you must select &lt;strong>DD mode&lt;/strong> when it prompts, not ISO mode.&lt;/li>
&lt;li>&lt;strong>macOS:&lt;/strong> convert the ISO to a raw image, then write it (see the official media-prep page for the exact &lt;code>hdiutil&lt;/code> and &lt;code>dd&lt;/code> sequence).&lt;/li>
&lt;/ul>
&lt;p>One specific warning from the docs: do not use UNetbootin. It is incompatible with the Proxmox installer.&lt;/p>
&lt;h3 id="step-3-boot-the-installer-and-pick-your-filesystem">Step 3: Boot the installer and pick your filesystem&lt;/h3>
&lt;p>Plug the USB into the target machine, power on, and bring up the boot menu (the key varies by vendor, commonly F11, F12, or Del). Select the USB device, then choose &lt;strong>Install Proxmox VE&lt;/strong> from the boot menu.&lt;/p>
&lt;p>The installer is a graphical wizard. Most screens are self-explanatory, but two decisions matter:&lt;/p>
&lt;p>&lt;strong>Target disk and filesystem.&lt;/strong> Select the SSD or NVMe you want Proxmox installed on, and be careful not to pick the USB installer drive by accident. The filesystem choices:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Filesystem&lt;/th>
&lt;th scope="col">When to choose it&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>ext4 (default)&lt;/td>
&lt;td>Single-disk machine. Simple, fast, reliable, uses an LVM-thin pool Proxmox manages natively. The right first-install answer.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ZFS&lt;/td>
&lt;td>Two or more drives and you want a mirror or RAID-Z, plus snapshots, checksums, and self-healing. Wants meaningful RAM for its cache.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>XFS&lt;/td>
&lt;td>Offered with LVM, but far less common in Proxmox setups than ext4.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Btrfs&lt;/td>
&lt;td>A technology preview. Not recommended for a production-style install yet.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The official installer note is blunt that ZFS on top of any hardware RAID is unsupported and can cause data loss, so if you run ZFS, give it the raw disks. For a first build on one drive, choose ext4 and move on.&lt;/p>
&lt;p>&lt;strong>Network and password.&lt;/strong> Set a hostname, then set a static IP outside your DHCP range so the web UI always lives at the same address. Set a strong root password and a notification email (real if you want system alerts, a dummy if you do not). The installer builds a Linux bridge called &lt;code>vmbr0&lt;/code> on your first NIC so VMs and containers can reach the network.&lt;/p>
&lt;p>Click install. It writes to disk in a few minutes and reboots. The console then shows a URL.&lt;/p>
&lt;h3 id="step-4-reach-the-web-interface">Step 4: Reach the web interface&lt;/h3>
&lt;p>Point a browser on another machine at the IP given during install, on port 8006:&lt;/p>
&lt;pre tabindex="0">&lt;code>https://your-ip:8006
&lt;/code>&lt;/pre>&lt;p>Note the &lt;strong>https&lt;/strong> and the &lt;strong>:8006&lt;/strong> — plain http or a missing port is the single most common &amp;ldquo;it didn&amp;rsquo;t work&amp;rdquo; mistake, and the install is almost certainly fine. You will get a certificate warning because Proxmox uses a self-signed cert; accept it and log in as &lt;code>root&lt;/code> with the password you set.&lt;/p>
&lt;h2 id="part-2-the-first-fifteen-minutes-the-repository-fix">Part 2: The first fifteen minutes (the repository fix)&lt;/h2>
&lt;p>This is the part generic install guides skip, and it is the one step every Proxmox install needs. A fresh install points apt at the &lt;strong>enterprise repository&lt;/strong>, which requires a paid subscription. Without a key, every &lt;code>apt update&lt;/code> ends in &lt;code>401 Unauthorized&lt;/code> and your package lists never refresh.&lt;/p>
&lt;p>Proxmox VE 9 also changed the repository file format. It moved to the deb822 &lt;code>.sources&lt;/code> format, so the files look nothing like the one-line &lt;code>sources.list&lt;/code> entries from VE 8 and earlier. Here is the current, correct configuration.&lt;/p>
&lt;h3 id="disable-the-enterprise-repository">Disable the enterprise repository&lt;/h3>
&lt;p>Open the node shell (web UI → your node → Shell) and edit the enterprise sources file:&lt;/p>
&lt;pre tabindex="0">&lt;code>nano /etc/apt/sources.list.d/pve-enterprise.sources
&lt;/code>&lt;/pre>&lt;p>Add a single line to that entry so it reads &lt;code>Enabled: no&lt;/code>. That suppresses the enterprise repo without deleting it.&lt;/p>
&lt;h3 id="enable-the-no-subscription-repository">Enable the no-subscription repository&lt;/h3>
&lt;p>Create the no-subscription sources file with the exact deb822 contents the docs publish for VE 9:&lt;/p>
&lt;pre tabindex="0">&lt;code># /etc/apt/sources.list.d/proxmox.sources
Types: deb
URIs: http://download.proxmox.com/debian/pve
Suites: trixie
Components: pve-no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
&lt;/code>&lt;/pre>&lt;p>You can do all of this from the web UI instead, with no text editing: node → &lt;strong>Updates&lt;/strong> → &lt;strong>Repositories&lt;/strong> → &lt;strong>Add&lt;/strong>, pick &lt;code>No-Subscription&lt;/code> from the dropdown, then highlight the enterprise row and click &lt;strong>Disable&lt;/strong>. The GUI writes the same files for you.&lt;/p>
&lt;p>The no-subscription repo ships the same packages as enterprise without a key. Proxmox is explicit that these packages are &amp;ldquo;not always as heavily tested and validated,&amp;rdquo; so it is fine for a home lab or test cluster but is not their recommendation for production. For most homelabbers that is an acceptable trade, and the no-subscription repo is what the vast majority run.&lt;/p>
&lt;h3 id="run-the-first-update">Run the first update&lt;/h3>
&lt;p>Now that apt points at a repo you can actually use, pull updates:&lt;/p>
&lt;pre tabindex="0">&lt;code>apt update
apt full-upgrade
&lt;/code>&lt;/pre>&lt;p>Use &lt;code>full-upgrade&lt;/code>, not plain &lt;code>upgrade&lt;/code> — more on why in Part 3. Reboot if a new kernel was installed, and you are on the latest VE 9 point release.&lt;/p>
&lt;p>The login popup reminding you to buy a subscription is cosmetic. It does not affect anything. Click OK and move on; the only repository change that matters is the one you just made.&lt;/p>
&lt;h2 id="part-3-how-to-update-proxmox-over-time">Part 3: How to update Proxmox over time&lt;/h2>
&lt;p>Once Proxmox is running, &amp;ldquo;update&amp;rdquo; means two very different things, and conflating them is where homelabs get into trouble.&lt;/p>
&lt;h3 id="routine-updates-within-a-major-version">Routine updates (within a major version)&lt;/h3>
&lt;p>This is normal maintenance: keeping VE 9 current as point releases ship (9.1 to 9.2 and so on). Two equivalent ways:&lt;/p>
&lt;p>&lt;strong>From the shell:&lt;/strong>&lt;/p>
&lt;pre tabindex="0">&lt;code>apt update
apt full-upgrade
&lt;/code>&lt;/pre>&lt;p>&lt;strong>From the web UI:&lt;/strong> select the node, open &lt;strong>Updates&lt;/strong>, click &lt;strong>Refresh&lt;/strong> to pull the package lists, then &lt;strong>Upgrade&lt;/strong> to apply them.&lt;/p>
&lt;p>Why &lt;code>full-upgrade&lt;/code> and not &lt;code>apt upgrade&lt;/code>? Plain &lt;code>upgrade&lt;/code> refuses to install anything that requires a new dependency, and on Proxmox that means the kernel and the &lt;code>pve-manager&lt;/code> stack get held back — exactly the packages you want updated. &lt;code>full-upgrade&lt;/code> (the apt equivalent of &lt;code>dist-upgrade&lt;/code>) installs them. A reboot is only needed when a new kernel arrives. There is no rush to apply every point release the day it lands; updating on a comfortable cadence is fine.&lt;/p>
&lt;h3 id="major-upgrades-across-major-versions">Major upgrades (across major versions)&lt;/h3>
&lt;p>Moving from VE 8 to VE 9 is a different animal. It crosses to a new major version, which also moves the underlying Debian base and kernel, and it carries real breaking changes: LVM autoactivation defaults change, network interfaces can be renamed by the newer kernel, and PCI passthrough can need attention. That is a planned event with its own pre-flight checklist — back up first, run the &lt;code>pve8to9 --full&lt;/code> checker, pin your NIC names, and have console access that is not the web GUI.&lt;/p>
&lt;p>Do not run a major upgrade as part of routine maintenance. The full procedure, the gotchas, and the order of operations for clusters are in the dedicated &lt;a href="https://techfuelhq.com/tutorials/proxmox-ve-8-to-9-upgrade-2026/">Proxmox VE 8 to 9 upgrade guide&lt;/a>. Proxmox VE 8.4 continues to receive security and bug-fix updates until August 2026, so there is no pressure to rush the jump.&lt;/p>
&lt;p>The short version of the distinction: routine updates are low-risk and you do them often; major upgrades are higher-risk and you do them deliberately.&lt;/p>
&lt;h2 id="common-install-gotchas">Common install gotchas&lt;/h2>
&lt;p>A handful of issues account for most &amp;ldquo;fresh install&amp;rdquo; frustration:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;code>apt update&lt;/code> returns 401 Unauthorized.&lt;/strong> You are still on the enterprise repository. Disable it and enable &lt;code>pve-no-subscription&lt;/code> (Part 2). This is the number-one new-user issue.&lt;/li>
&lt;li>&lt;strong>The web UI will not load.&lt;/strong> You used &lt;code>http&lt;/code> instead of &lt;code>https&lt;/code>, or forgot &lt;code>:8006&lt;/code>. The correct URL is &lt;code>https://your-ip:8006&lt;/code>. The install is fine.&lt;/li>
&lt;li>&lt;strong>VMs will not start (&amp;ldquo;KVM not available&amp;rdquo;).&lt;/strong> Hardware virtualization (Intel VT-x or AMD-V) is disabled in the BIOS/UEFI. Reboot into firmware and enable it. If you also plan GPU or NIC passthrough, enable IOMMU (VT-d / AMD-Vi) while you are in there.&lt;/li>
&lt;li>&lt;strong>You picked ZFS and the host feels short on RAM.&lt;/strong> ZFS reserves RAM for its cache. Size it deliberately; the &lt;a href="https://techfuelhq.com/homelab/proxmox-hardware-requirements-2026/">hardware requirements page&lt;/a> covers the ZFS RAM rule.&lt;/li>
&lt;li>&lt;strong>You accidentally installed onto the USB stick.&lt;/strong> Always confirm the target disk in the installer is your internal SSD/NVMe, not the installer drive.&lt;/li>
&lt;/ul>
&lt;h2 id="after-the-install-what-to-build">After the install: what to build&lt;/h2>
&lt;p>With Proxmox installed, updated, and pointed at the right repository, you have a working hypervisor. The next decisions are about what to run on it:&lt;/p>
&lt;ul>
&lt;li>For a guided, screen-by-screen walkthrough on a specific small machine — including BIOS keys, the first VM, and the first container — follow the &lt;a href="https://techfuelhq.com/articles/proxmox-mini-pc-setup/">Proxmox mini PC setup guide&lt;/a>.&lt;/li>
&lt;li>For each service, decide between a container and a full VM. The &lt;a href="https://techfuelhq.com/homelab/lxc-vs-vm-proxmox-2026/">LXC vs VM in Proxmox guide&lt;/a> has the decision tree; containers are lighter and start in seconds, VMs give full isolation.&lt;/li>
&lt;li>To size your box — how many VMs and containers your RAM and cores can actually support, with ZFS overhead included — the &lt;a href="https://techfuelhq.com/tools/proxmox-capacity-planner/">Proxmox capacity planner&lt;/a> does the math.&lt;/li>
&lt;/ul>
&lt;p>The install is the easy part. The repository fix is the part that makes updates work, and knowing the difference between a routine update and a major upgrade is what keeps the box healthy for years.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://pve.proxmox.com/wiki/Package_Repositories" rel="noopener">Proxmox VE Package Repositories&lt;/a> — the deb822 &lt;code>.sources&lt;/code> format for VE 9, the exact &lt;code>proxmox.sources&lt;/code> no-subscription entry, the enterprise repo and &lt;code>Enabled: no&lt;/code> disable, the &amp;ldquo;not as heavily tested&amp;rdquo; note, and the GUI Repositories panel.&lt;/li>
&lt;li>&lt;a href="https://pve.proxmox.com/wiki/Installation" rel="noopener">Proxmox VE Installation&lt;/a> — installer filesystem options (ext4/XFS/ZFS/Btrfs preview), the ZFS-on-hardware-RAID warning, and the &lt;code>https://youripaddress:8006&lt;/code> web interface URL.&lt;/li>
&lt;li>&lt;a href="https://pve.proxmox.com/wiki/Prepare_Installation_Media" rel="noopener">Proxmox VE: Prepare Installation Media&lt;/a> — the &lt;code>dd&lt;/code> command for Linux, Etcher/Rufus-DD-mode for Windows, the macOS sequence, and the UNetbootin incompatibility warning.&lt;/li>
&lt;li>&lt;a href="https://www.proxmox.com/en/downloads/proxmox-virtual-environment/iso" rel="noopener">Proxmox VE downloads (ISO)&lt;/a> — current VE 9.2-1 ISO and the published SHA256 checksum.&lt;/li>
&lt;li>&lt;a href="https://www.proxmox.com/en/about/company-details/press-releases/proxmox-virtual-environment-9-0" rel="noopener">Proxmox VE 9.0 release announcement&lt;/a> — VE 9 on Debian 13 &amp;ldquo;Trixie,&amp;rdquo; and the VE 8.4 support window to August 2026.&lt;/li>
&lt;li>&lt;a href="https://pve.proxmox.com/wiki/Upgrade_from_8_to_9" rel="noopener">Proxmox VE Upgrade from 8 to 9&lt;/a> — the major-version upgrade process and breaking changes, distinct from routine &lt;code>full-upgrade&lt;/code> maintenance.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>&lt;em>Already have the hardware on your desk? The &lt;a href="https://techfuelhq.com/articles/proxmox-mini-pc-setup/">Proxmox mini PC setup walkthrough&lt;/a> is the hands-on companion to this reference. Still picking parts? See the &lt;a href="https://techfuelhq.com/homelab/proxmox-hardware-requirements-2026/">Proxmox hardware requirements&lt;/a>. Running VE 8 today? The &lt;a href="https://techfuelhq.com/tutorials/proxmox-ve-8-to-9-upgrade-2026/">8-to-9 upgrade guide&lt;/a> is the planned-upgrade path.&lt;/em>&lt;/p></description></item><item><title>NZXT Kraken 360 Review: Long-Term on a Ryzen 7 7800X3D (2026)</title><link>https://techfuelhq.com/reviews/nzxt-kraken-360-review-2026/</link><pubDate>Fri, 19 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/reviews/nzxt-kraken-360-review-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-19 · ~10 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/reviews/nzxt-kraken-360-review-2026.svg" alt="NZXT Kraken 360 review rating card scoring 4.0 out of 5, with a key specifications panel listing the 394x120x27mm 360mm radiator, Asetek 7th-gen pump, three F120 RGB Core fans, 2.36-inch LCD pump display, AM5/AM4/LGA1700/LGA1851 sockets, and $179/$199 pricing" width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>&lt;strong>Rating: 4.0 / 5&lt;/strong>&lt;/p>
&lt;p>I ran the NZXT Kraken 360 on a Ryzen 7 7800X3D inside a ROG STRIX B650-A build for an extended period before moving on to a different configuration. This isn&amp;rsquo;t a first-day review — it&amp;rsquo;s what happens after the novelty of the LCD display wears off and you start noticing the software.&lt;/p>
&lt;p>The short answer: the Kraken 360 is a well-built, genuinely quiet 360mm AIO with a smooth installation and good thermals. NZXT CAM is the only meaningful problem, and it&amp;rsquo;s a real one if you care about background processes.&lt;/p>
&lt;h2 id="what-nzxt-ships">What NZXT ships&lt;/h2>
&lt;p>&lt;strong>The exact unit:&lt;/strong> this review covers the classic Kraken 360 with the 2.36-inch LCD pump display (the RL-KR360-W1 generation). Worth knowing before you shop: NZXT has since relaunched the Kraken line under a &lt;strong>Core / Plus / Elite&lt;/strong> naming scheme, so a 2026 search for &amp;ldquo;Kraken 360&amp;rdquo; returns the newer SKUs rather than the exact unit reviewed here. The pump platform (Asetek 7th-gen) and radiator carry over, but confirm the current product page matches the model you&amp;rsquo;re buying — the LCD-vs-static-ring split is the thing that changes between tiers.&lt;/p>
&lt;p>&lt;strong>Hardware (per NZXT product page, accessed 2026-06):&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Radiator: 394 × 120 × 27 mm (360mm), aluminum&lt;/li>
&lt;li>Pump head: 2.36-inch color LCD display (1080×1080 resolution on the Elite model)&lt;/li>
&lt;li>Fans: 3× NZXT F120 RGB Core (120mm, 500–2400 RPM, 30.4 dBA max)&lt;/li>
&lt;li>Pump: Asetek 7th-generation, 800–2800 RPM&lt;/li>
&lt;li>TDP claim: NZXT rates the Kraken 360 for &amp;ldquo;up to 500W+TDP&amp;rdquo; (internal testing methodology — treat as relative, not absolute)&lt;/li>
&lt;li>Included socket brackets: AM5, AM4, LGA1700, LGA1851&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Price (at time of purchase):&lt;/strong> $179 USD for the base Kraken 360 / $199 USD for the Kraken Elite 360.&lt;/p>
&lt;h2 id="installation-on-am5">Installation on AM5&lt;/h2>
&lt;p>Straightforward, but the stock AMD bracket must come out first — that&amp;rsquo;s the only extra step over an older platform install.&lt;/p>
&lt;ol>
&lt;li>Remove the stock AMD cooler bracket: four screws, retained from behind by a plastic backplate&lt;/li>
&lt;li>Install the NZXT backplate from the rear of the motherboard&lt;/li>
&lt;li>Thread in the four AM5 standoffs finger-tight, then snug with a small wrench&lt;/li>
&lt;li>Apply thermal paste (I use a pea-sized dot of MX-6; NZXT includes their own TIM which is adequate)&lt;/li>
&lt;li>Press the Kraken head onto the CPU, align the spring-loaded screws with the standoffs, and tighten cross-pattern&lt;/li>
&lt;/ol>
&lt;p>Radiator orientation: front intake (pulling cool air from outside the case through the radiator and pushing warm air into the case) or top exhaust (radiator exhausts hot air out the top of the case). For a build with a strong GPU producing heat inside the case, top exhaust is the better choice — it removes the heat without recirculating it past the radiator. The ROG STRIX B650-A&amp;rsquo;s layout (standard ATX) accommodates top-mount 360mm without clearance issues.&lt;/p>
&lt;p>Total time: 10 minutes with the motherboard out of the case. If you&amp;rsquo;re doing a full build, it&amp;rsquo;s the first cooler part to install (backplate goes on before the board goes into the case).&lt;/p>
&lt;h2 id="thermals-on-a-7800x3d">Thermals on a 7800X3D&lt;/h2>
&lt;p>The Ryzen 7 7800X3D is a different thermal challenge than a high-TDP chip like the Ryzen 9 7950X or Intel i9-14900KS. Its 3D V-Cache stacks SRAM on top of the CPU die, which creates a thermal constraint: AMD&amp;rsquo;s own thermal throttle limit is 89°C on the 3D V-Cache tier. Above that, the chip reduces clock speeds to protect the cache.&lt;/p>
&lt;p>The practical consequence: the 7800X3D benefits from a cooler that keeps it below 89°C under gaming load, but it doesn&amp;rsquo;t produce the kind of sustained 250–300W loads that stress-test premium AIOs. At its rated 162W PPT (max socket power), a 240mm AIO can keep it under the throttle threshold. A 360mm AIO gives more temperature headroom.&lt;/p>
&lt;p>In my build — ROG STRIX B650-A, B650 chipset power delivery, Fractal case with airflow configuration — the 7800X3D stayed under 80°C during sustained gaming sessions with the fans at a curve that maxed at 1700 RPM. Under Cinebench R23 multi-core sustained for 10 minutes, it peaked at 84°C and maintained stable clocks. I did not observe thermal throttling during normal gaming workloads.&lt;/p>
&lt;p>For independent sustained thermal measurements on the Kraken 360 across multiple CPU platforms, GamersNexus publishes AIO cooler reviews with controlled methodology — their data on Asetek 7th-gen performance is the benchmark I compare against.&lt;/p>
&lt;h2 id="nzxt-cam-the-weak-link">NZXT CAM: the weak link&lt;/h2>
&lt;p>CAM is NZXT&amp;rsquo;s proprietary software for controlling the pump, fans, and LCD. The functionality is solid — you can create custom fan curves, set up display pages showing CPU/GPU temp and usage, customize the ARGB ring, and monitor system stats.&lt;/p>
&lt;p>The problem: CAM needs to run in the background for any of the display and RGB functionality to work. It&amp;rsquo;s an Electron-based application, which means on startup it uses more RAM and CPU than feels appropriate for a peripheral-control utility.&lt;/p>
&lt;p>&lt;strong>What CAM requires:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Background process (~150 MB RAM, periodic CPU spikes on startup)&lt;/li>
&lt;li>Login to an NZXT account for full feature access (offline mode limits some display options)&lt;/li>
&lt;li>Windows only with full functionality; Linux has no native support&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>What works without CAM:&lt;/strong> basic pump and fan operation at defaults. The LCD shows the NZXT logo or a built-in temperature readout based on the pump head&amp;rsquo;s internal thermistor. Fans run at a built-in speed curve.&lt;/p>
&lt;p>For a Windows gaming machine where CAM runs at startup and stays resident, this is a non-issue — you set it up once and forget it. For a build dual-booting Linux, or for someone who doesn&amp;rsquo;t want background software, the CAM dependency is a genuine negative.&lt;/p>
&lt;p>ASUS Armory Crate and Corsair iCUE have the same pattern. NZXT CAM is not worse than the competition in this category — it&amp;rsquo;s just that all of them have this problem.&lt;/p>
&lt;h2 id="pump-and-fan-noise">Pump and fan noise&lt;/h2>
&lt;p>The pump: inaudible with the side panel on at any point during normal operation. I could not isolate it from case fan noise. This matches the behavior of Asetek 7th-gen units generally — the pump is not the noise concern with this cooler.&lt;/p>
&lt;p>The fans: at default NZXT curves, the F120 RGB Core fans are quiet at light loads (under 1200 RPM) and audible under load when they spin up toward 2000+ RPM. The 30.4 dBA spec at max RPM is accurate in a controlled environment — in a room with normal ambient noise, the fans become noticeable above about 1800 RPM.&lt;/p>
&lt;p>Custom curve I settled on: 800 RPM at 40°C, 1200 RPM at 60°C, 1600 RPM at 70°C, 1800 RPM max. At these speeds the fans are inaudible from 1 meter away with the case side on, and thermal performance on the 7800X3D was unchanged — a 360mm radiator at 1800 RPM is more than adequate for 162W.&lt;/p>
&lt;h2 id="build-quality">Build quality&lt;/h2>
&lt;p>Physical build quality is high. The radiator finish, pump head housing, and fan blade consistency are noticeably better than budget AIOs. The braided tubing has a solid feel and didn&amp;rsquo;t kink or stiffen over time. The LCD display glass is flush and scratch-resistant. The F120 fans have a consistent spin-up behavior and no blade wobble or grinding.&lt;/p>
&lt;p>The only quality concern: the thermal paste pad that ships pre-applied on the Asetek head. I remove it and apply my own paste. The included pad performs adequately but unevenly — depending on how the head seats, coverage can be inconsistent. This is an Asetek packaging issue, not specific to NZXT.&lt;/p>
&lt;h2 id="price-and-alternatives">Price and alternatives&lt;/h2>
&lt;p>At $179 for the base Kraken 360, the value proposition is reasonable for the build quality and thermals. Comparable options:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Cooler&lt;/th>
&lt;th scope="col">Size&lt;/th>
&lt;th scope="col">Key differentiator&lt;/th>
&lt;th scope="col">Street price&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>NZXT Kraken 360&lt;/td>
&lt;td>360mm&lt;/td>
&lt;td>LCD display, premium finish&lt;/td>
&lt;td>~$179&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Corsair iCUE H150i Elite LCD XT&lt;/td>
&lt;td>360mm&lt;/td>
&lt;td>Infinity mirror LCD&lt;/td>
&lt;td>~$200&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>DeepCool LT720&lt;/td>
&lt;td>360mm&lt;/td>
&lt;td>No LCD, lower price&lt;/td>
&lt;td>~$110&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>be quiet! Pure Loop 360&lt;/td>
&lt;td>360mm&lt;/td>
&lt;td>Near-silent fans, no RGB&lt;/td>
&lt;td>~$130&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Thermalright Frozen Prism 360&lt;/td>
&lt;td>360mm&lt;/td>
&lt;td>Best price-to-thermal&lt;/td>
&lt;td>~$65&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The Thermalright Frozen Prism 360 (no LCD, basic ARGB ring) competes on thermals at less than half the Kraken&amp;rsquo;s price. If the LCD display is not important to you, the Thermalright is a harder value to ignore. GamersNexus measured the Frozen Prism 360 as a top-tier thermal performer for its price class.&lt;/p>
&lt;p>The Kraken 360 is worth the premium over the Thermalright if:&lt;/p>
&lt;ul>
&lt;li>You want the display for at-a-glance CPU/GPU monitoring without opening software&lt;/li>
&lt;li>Build aesthetics matter and the NZXT industrial design fits the case&lt;/li>
&lt;li>CAM running in the background is not a concern&lt;/li>
&lt;/ul>
&lt;h2 id="verdict">Verdict&lt;/h2>
&lt;p>The Kraken 360 does what an AIO cooler is supposed to do: it keeps a demanding CPU cool, does it quietly, and doesn&amp;rsquo;t require setup beyond the initial configuration. On the 7800X3D, it&amp;rsquo;s more cooler than needed — the chip doesn&amp;rsquo;t push the AIO anywhere near its limits — which means there&amp;rsquo;s headroom for future platform upgrades if you build around it.&lt;/p>
&lt;p>The LCD display is genuinely useful, not a gimmick. Having CPU temp and GPU temp visible on the pump head without opening a monitoring app is the kind of ambient information that actually gets used. The display implementation is good; the CAM software that drives it is adequate.&lt;/p>
&lt;p>If you&amp;rsquo;re pricing AIOs for a 7800X3D specifically: a 240mm AIO is sufficient for that chip at any normal fan curve. The 360mm gives more headroom and flexibility. If you&amp;rsquo;re building around a higher-TDP chip like the Ryzen 9 7950X or Intel i9 series, the 360mm starts being necessary rather than optional.&lt;/p>
&lt;p>&lt;strong>Rating: 4.0/5&lt;/strong> — Excellent hardware, middling software. The LCD earns the premium if you want it. The base Kraken 360 at its price is solid but has stiff competition from non-LCD alternatives at half the cost.&lt;/p>
&lt;hr>
&lt;p>&lt;em>For the full build this cooler shipped in, the &lt;a href="https://techfuelhq.com/reviews/rog-strix-b650a-review-2026/">ROG STRIX B650-A review&lt;/a> covers the motherboard. The &lt;a href="https://techfuelhq.com/tools/pc-builder/">PC Builder tool&lt;/a> checks socket and clearance compatibility for coolers against any AM5/LGA1700 board in the database.&lt;/em>&lt;/p></description></item><item><title>Proxmox Hardware Requirements (2026): Real Homelab Specs</title><link>https://techfuelhq.com/homelab/proxmox-hardware-requirements-2026/</link><pubDate>Fri, 19 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/homelab/proxmox-hardware-requirements-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-06-19 · Updated 2026-07-03 · ~11 min read · St. Louis County, MO&lt;/p>
&lt;p>There are really two Proxmox hardware conversations, and they give wildly different answers. The spec-sheet one is settled in a single sentence — the official minimum is trivial, and the table below is the whole story. The conversation that actually matters is the second one: how those requirements scale the moment you start stacking real services onto the box. That is where people either underbuy and regret it a month later, or overbuy a 128 GB server to run a Pi-hole. So that is where this page spends its time.&lt;/p>
&lt;p>Everything here is cited to Proxmox&amp;rsquo;s own documentation or, where I give workload numbers, to the community sources I trust. If a spec isn&amp;rsquo;t sourced, it isn&amp;rsquo;t here.&lt;/p>
&lt;img src="https://techfuelhq.com/images/homelab/proxmox-hardware-requirements-2026.svg" width="1200" height="720" loading="lazy" decoding="async" alt="Four Proxmox homelab workload tiers and the hardware each needs: a light file server or NAS on an Intel N100/N150 with 8 to 16 GB RAM; a handful of VMs and containers on a 4-core mini PC with a 16 GB floor and 32 GB for breathing room; Plex or Jellyfin with Intel Quick Sync transcoding on an N100 iGPU handling about 3 to 4 simultaneous 4K-to-1080p transcodes; and a ZFS NAS plus VMs on one box wanting 32 to 64 GB." style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;h2 id="the-official-minimum-vs-recommended-requirements">The official minimum vs recommended requirements&lt;/h2>
&lt;p>Proxmox publishes two tiers on its &lt;a href="https://www.proxmox.com/en/products/proxmox-virtual-environment/requirements" rel="noopener">hardware requirements page&lt;/a>: a bare minimum for evaluation and testing, and a recommended set for production. Here is exactly what they list, plus the ZFS guidance from the Proxmox wiki:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Component&lt;/th>
&lt;th scope="col">Official minimum (eval/test)&lt;/th>
&lt;th scope="col">Recommended (production)&lt;/th>
&lt;th scope="col">Practical homelab target&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>CPU&lt;/td>
&lt;td>64-bit Intel 64 / AMD64 with Intel VT-x / AMD-V&lt;/td>
&lt;td>Intel 64 / AMD64 with VT-x / AMD-V flag&lt;/td>
&lt;td>Any modern x86; N100/N150 mini-PC chip is fine&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>RAM&lt;/td>
&lt;td>Minimum 1 GB&lt;/td>
&lt;td>2 GB for OS + services, plus RAM for each guest&lt;/td>
&lt;td>16-32 GB to start&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ZFS / Ceph RAM&lt;/td>
&lt;td>n/a&lt;/td>
&lt;td>Approx. 1 GB extra per TB of used storage&lt;/td>
&lt;td>+1 GB per TB on top of guest RAM&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>System disk&lt;/td>
&lt;td>A hard drive&lt;/td>
&lt;td>Fast, redundant storage; SSDs preferred&lt;/td>
&lt;td>SSD/NVMe for OS + VM storage&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Network&lt;/td>
&lt;td>One NIC&lt;/td>
&lt;td>Redundant Gbit NICs; 10 GbE+ supported&lt;/td>
&lt;td>1x Gbit is fine for most homelabs&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Passthrough&lt;/td>
&lt;td>n/a&lt;/td>
&lt;td>CPU with VT-d / AMD-Vi (IOMMU) flag&lt;/td>
&lt;td>Needed only for GPU/NIC passthrough&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Source: &lt;a href="https://www.proxmox.com/en/products/proxmox-virtual-environment/requirements" rel="noopener">Proxmox VE Hardware Requirements&lt;/a> and the &lt;a href="https://pve.proxmox.com/wiki/ZFS_on_Linux" rel="noopener">Proxmox ZFS on Linux wiki&lt;/a>.&lt;/p>
&lt;p>The key takeaway from the official page: there are no exotic requirements. As one long-standing Proxmox forum answer puts it, &amp;ldquo;Proxmox doesn&amp;rsquo;t have any major hardware requirements — the cpu and bios should support Intel VT or AMD-V but that&amp;rsquo;s pretty standard these days.&amp;rdquo; The minimum column is real but misleading — 1 GB boots the host and leaves nothing for guests. The recommended column is where you should start planning.&lt;/p>
&lt;h3 id="cpu-what-vt-x--amd-v-actually-means">CPU: what &amp;ldquo;VT-x / AMD-V&amp;rdquo; actually means&lt;/h3>
&lt;p>Proxmox needs a 64-bit x86 processor with hardware-assisted virtualization. On Intel that flag is VT-x; on AMD it is AMD-V. This is standard on every desktop, server, and mini-PC CPU made in roughly the last ten years — including the budget Intel N100 and N150 chips that dominate cheap homelab mini PCs. The one thing to check is that virtualization is enabled in the BIOS/UEFI, because some vendors ship it off.&lt;/p>
&lt;p>If you intend to pass a whole GPU or NIC into a VM, you need a second flag: IOMMU, which Intel calls VT-d and AMD calls AMD-Vi. This is a board-and-CPU feature, not just a CPU one, so verify both support it before buying for a passthrough build.&lt;/p>
&lt;h3 id="ram-the-formula-that-actually-matters">RAM: the formula that actually matters&lt;/h3>
&lt;p>Proxmox&amp;rsquo;s own rule is simple: about 2 GB for the OS and services, then add the memory you assign to each VM and container on top. The host overhead is small; your guests dominate the total.&lt;/p>
&lt;p>The exception is ZFS, which is covered below — it wants meaningful RAM of its own. If you are not using ZFS, you can size RAM as &amp;ldquo;2 GB for Proxmox + the sum of your guest allocations + a small buffer.&amp;rdquo;&lt;/p>
&lt;h3 id="storage-ssd-over-capacity-every-time">Storage: SSD over capacity, every time&lt;/h3>
&lt;p>The official minimum is one hard drive. The recommendation is fast and redundant storage, with SSDs explicitly called out for best results. For data integrity Proxmox recommends either hardware RAID with a battery-backed write cache (BBU) or non-RAID disks managed by ZFS.&lt;/p>
&lt;p>For a homelab, the pattern that works: a small SSD or NVMe for the Proxmox OS, and a separate SSD/NVMe drive or ZFS pool for your VM and container disks. If that pool is ZFS, size endurance as well as capacity — copy-on-write write amplification consumes a drive&amp;rsquo;s rated TBW faster than the host write numbers suggest, which the &lt;a href="https://techfuelhq.com/tools/ssd-endurance-calculator/">SSD endurance calculator&lt;/a> lets you model. Spinning hard drives are fine for bulk media storage on a NAS, but running VM root disks off a single HDD makes every guest feel sluggish.&lt;/p>
&lt;h2 id="the-zfs-ram-rule-verified">The ZFS RAM rule, verified&lt;/h2>
&lt;p>ZFS is where homelab RAM folklore goes wrong, so here is the real current guidance from the &lt;a href="https://pve.proxmox.com/wiki/ZFS_on_Linux" rel="noopener">Proxmox ZFS on Linux wiki&lt;/a>:&lt;/p>
&lt;ul>
&lt;li>ZFS &amp;ldquo;depends heavily on memory, so you need at least 8 GB to start.&amp;rdquo;&lt;/li>
&lt;li>The sizing rule is &lt;strong>2 GiB base + 1 GiB per TiB of storage&lt;/strong>. So an 8 TiB pool wants about 10 GiB reserved for the ARC.&lt;/li>
&lt;li>Since Proxmox VE 8.1, the ZFS ARC default is &lt;strong>10% of host RAM, capped at 16 GiB&lt;/strong> — much lower than the old &amp;ldquo;use half your RAM&amp;rdquo; behavior, which is why ZFS feels less RAM-hungry on recent installs than its reputation suggests.&lt;/li>
&lt;li>You can hard-cap the ARC by setting &lt;code>zfs_arc_max&lt;/code> in &lt;code>/etc/modprobe.d/zfs.conf&lt;/code> (for example &lt;code>options zfs zfs_arc_max=8589934592&lt;/code> for an 8 GiB cap), then rebooting.&lt;/li>
&lt;/ul>
&lt;p>The old &amp;ldquo;1 GB per TB&amp;rdquo; number you see everywhere is a reasonable rule of thumb and matches the headline figure Proxmox uses for ZFS/Ceph on its requirements page. The wiki&amp;rsquo;s &amp;ldquo;2 GiB base + 1 GiB/TiB&amp;rdquo; is the more precise version. Either way: ZFS RAM is on top of your guest RAM, not shared with it. If you are deciding between ZFS, TrueNAS, and Unraid as your storage backend, the &lt;a href="https://techfuelhq.com/homelab/proxmox-truenas-unraid-storage-backend-2026/">storage backend comparison&lt;/a> walks through the tradeoffs.&lt;/p>
&lt;p>The practical rule homelabbers repeat on the Proxmox and r/homelab forums follows straight from that math: &lt;strong>if a box has less than 8 GB of RAM, skip ZFS&lt;/strong> and use ext4 or LVM-thin for the system disk instead. ZFS on a memory-starved host spends RAM you needed for guests and still cannot cache the pool well, so you get the complexity without the speed. Reserve ZFS for boxes with 16 GB or more, and always size the ARC on top of your guest allocations, never carved out of them.&lt;/p>
&lt;p>ECC RAM is recommended for ZFS but not strictly required — for a learning homelab, non-ECC is fine; for anything holding data you care about, ECC is the safer call.&lt;/p>
&lt;h2 id="what-you-actually-need-by-workload">What you actually need, by workload&lt;/h2>
&lt;p>Specs in a vacuum don&amp;rsquo;t help. Here is how the requirements scale with what you are actually running. These are homelab-oriented targets, not enterprise sizing.&lt;/p>
&lt;p>The RAM math is where the &amp;ldquo;scales with workload&amp;rdquo; idea stops being abstract. Both builds below start with the same ~2 GB Proxmox base at the bottom of the tank. What separates a box that is happy on 32 GB from one that wants 64 GB is almost entirely one segment — the ZFS ARC cache — plus a couple of heavier VMs stacked on top.&lt;/p>
&lt;div class="visual-block">
&lt;div style="background:#0c1424;padding:24px 20px 22px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8eaf2;">
&lt;div style="font-size:18px;font-weight:700;letter-spacing:-0.3px;">The RAM budget, stacked&lt;/div>
&lt;div style="font-size:12px;color:#93a0bd;margin-top:5px;line-height:1.55;max-width:560px;">Two real homelab builds, filled from the bottom up on the same scale (5&amp;nbsp;px = 1&amp;nbsp;GB). Same &lt;span style="color:#8b97b8;font-weight:600;">Proxmox base&lt;/span> in both. The thing that doubles the box is the &lt;span style="color:#f0a020;font-weight:600;">ZFS&amp;nbsp;ARC&lt;/span> cache plus heavier &lt;span style="color:#4a9eff;font-weight:600;">VMs&lt;/span> &amp;mdash; not the hypervisor.&lt;/div>
&lt;div style="display:flex;align-items:flex-end;gap:22px;margin-top:22px;padding-left:4px;">
&lt;div style="flex:1 1 0;min-width:0;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;">
&lt;div style="font-size:12.5px;font-weight:700;color:#eef1f8;text-align:center;">Typical first homelab&lt;/div>
&lt;div style="font-size:11px;color:#93a0bd;margin:2px 0 10px;text-align:center;">uses ~12 of 32&amp;nbsp;GB&lt;/div>
&lt;div style="position:relative;width:100%;max-width:150px;height:160px;border:1px solid rgba(255,255,255,0.14);border-top:1px dashed rgba(255,255,255,0.28);border-radius:0 0 7px 7px;background:repeating-linear-gradient(135deg,rgba(255,255,255,0.015) 0 6px,transparent 6px 12px);display:flex;flex-direction:column-reverse;overflow:hidden;">
&lt;div style="height:10px;background:#5b6b8c;border-top:1px solid rgba(0,0,0,0.25);border-radius:0 0 6px 6px;">&lt;/div>
&lt;div style="height:5px;background:#76b900;border-top:1px solid rgba(0,0,0,0.25);">&lt;/div>
&lt;div style="height:10px;background:#4a9eff;border-top:1px solid rgba(0,0,0,0.25);">&lt;/div>
&lt;div style="height:15px;background:#8fd400;border-top:1px solid rgba(0,0,0,0.25);display:flex;align-items:center;justify-content:center;font-size:8px;font-weight:700;color:#0f1a05;">3&lt;/div>
&lt;div style="height:20px;background:#4a9eff;border-top:1px solid rgba(0,0,0,0.25);display:flex;align-items:center;justify-content:center;font-size:8.5px;font-weight:700;color:#04122a;">VM 4&lt;/div>
&lt;div style="align-self:center;margin-bottom:2px;font-size:10px;font-weight:700;color:#0c1424;background:#c8ff00;padding:1px 7px;border-radius:20px;">12 GB&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="flex:1 1 0;min-width:0;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;">
&lt;div style="font-size:12.5px;font-weight:700;color:#eef1f8;text-align:center;">ZFS NAS + a stack of VMs&lt;/div>
&lt;div style="font-size:11px;color:#93a0bd;margin:2px 0 10px;text-align:center;">uses ~30 of 64&amp;nbsp;GB&lt;/div>
&lt;div style="position:relative;width:100%;max-width:150px;height:320px;border:1px solid rgba(255,255,255,0.14);border-top:1px dashed rgba(255,255,255,0.28);border-radius:0 0 7px 7px;background:repeating-linear-gradient(135deg,rgba(255,255,255,0.015) 0 6px,transparent 6px 12px);display:flex;flex-direction:column-reverse;overflow:hidden;">
&lt;div style="height:10px;background:#5b6b8c;border-top:1px solid rgba(0,0,0,0.25);border-radius:0 0 6px 6px;">&lt;/div>
&lt;div style="height:50px;background:#f0a020;border-top:1px solid rgba(0,0,0,0.25);box-shadow:inset 0 0 0 1px rgba(255,220,150,0.5);display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:800;color:#231400;text-align:center;line-height:1.15;">ZFS ARC&lt;br>10&lt;/div>
&lt;div style="height:15px;background:#2bb3a3;border-top:1px solid rgba(0,0,0,0.25);display:flex;align-items:center;justify-content:center;font-size:8px;font-weight:700;color:#04201c;">3&lt;/div>
&lt;div style="height:45px;background:#4a9eff;border-top:1px solid rgba(0,0,0,0.25);display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:700;color:#04122a;">3 app VMs&amp;nbsp;&amp;middot;&amp;nbsp;9&lt;/div>
&lt;div style="height:30px;background:#3d7fc4;border-top:1px solid rgba(0,0,0,0.25);display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:700;color:#04122a;">Win/NVR VM&amp;nbsp;6&lt;/div>
&lt;div style="align-self:center;margin-bottom:2px;font-size:10px;font-weight:700;color:#0c1424;background:#c8ff00;padding:1px 7px;border-radius:20px;">30 GB&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:18px;font-size:10.5px;color:#c3cbe0;">
&lt;span style="display:inline-flex;align-items:center;gap:5px;">&lt;span style="width:11px;height:11px;border-radius:3px;background:#5b6b8c;display:inline-block;">&lt;/span>Proxmox host (~2&amp;nbsp;GB base)&lt;/span>
&lt;span style="display:inline-flex;align-items:center;gap:5px;">&lt;span style="width:11px;height:11px;border-radius:3px;background:#8fd400;display:inline-block;">&lt;/span>LXC containers (light)&lt;/span>
&lt;span style="display:inline-flex;align-items:center;gap:5px;">&lt;span style="width:11px;height:11px;border-radius:3px;background:#4a9eff;display:inline-block;">&lt;/span>Virtual machines&lt;/span>
&lt;span style="display:inline-flex;align-items:center;gap:5px;">&lt;span style="width:11px;height:11px;border-radius:3px;background:#2bb3a3;display:inline-block;">&lt;/span>Media / NAS services&lt;/span>
&lt;span style="display:inline-flex;align-items:center;gap:5px;">&lt;span style="width:11px;height:11px;border-radius:3px;background:#f0a020;display:inline-block;">&lt;/span>ZFS ARC &amp;mdash; the swing factor&lt;/span>
&lt;/div>
&lt;div style="margin-top:14px;padding-top:12px;border-top:1px solid rgba(255,255,255,0.07);font-size:11px;color:#93a0bd;line-height:1.6;">Drop ZFS and the second build loses ~10&amp;nbsp;GB instantly and fits a 32&amp;nbsp;GB box. Keep ZFS on a big pool and the ARC alone can outweigh every container you run. That is why "how much RAM for Proxmox?" has no single answer &amp;mdash; the base is fixed, your guests and your storage engine decide the rest.&lt;/div>
&lt;div style="text-align:right;margin-top:8px;font-size:10px;color:#465073;">techfuelhq.com &amp;middot; illustrative allocations; ZFS ARC sized by the 2&amp;nbsp;GiB&amp;nbsp;+&amp;nbsp;1&amp;nbsp;GiB/TiB rule for an 8&amp;nbsp;TB pool&lt;/div>
&lt;/div>
&lt;/div>
&lt;h3 id="a-file-server--nas-a-few-shares-light-use">A file server / NAS (a few shares, light use)&lt;/h3>
&lt;p>A single mini PC with an Intel N100/N150, 8-16 GB RAM, and one or two drives handles a basic file server easily. If you run that NAS on ZFS, push RAM toward 16 GB and follow the ZFS rule above for the pool size. CPU load for plain file serving is trivial; RAM for ZFS ARC is the thing to size, not cores.&lt;/p>
&lt;h3 id="a-handful-of-vms-and-containers-the-typical-first-homelab">A handful of VMs and containers (the typical first homelab)&lt;/h3>
&lt;p>This is where most people land: Pi-hole or AdGuard, a reverse proxy, Home Assistant, a few Docker stacks, maybe one or two small VMs. 16 GB of RAM is a comfortable floor and 32 GB gives real breathing room. A 4-core mini PC is plenty because most of these services idle. Lean on LXC containers rather than full VMs wherever you can — a bare Debian container uses roughly 30-60 MB of RAM versus 200-400 MB for the equivalent VM, so an LXC-heavy lab fits far more services into the same box. The &lt;a href="https://techfuelhq.com/homelab/lxc-vs-vm-proxmox-2026/">LXC vs VM decision guide&lt;/a> covers exactly when to use each. To size this precisely for your specific RAM and core count, the &lt;a href="https://techfuelhq.com/tools/proxmox-capacity-planner/">Proxmox capacity planner&lt;/a> does the math for you.&lt;/p>
&lt;h3 id="plex--jellyfin-with-hardware-transcoding">Plex / Jellyfin with hardware transcoding&lt;/h3>
&lt;p>Media transcoding is the one workload where the GPU question matters, and the answer is an Intel integrated GPU, not a discrete card. Jellyfin&amp;rsquo;s &lt;a href="https://jellyfin.org/docs/general/post-install/transcoding/hardware-acceleration/intel/" rel="noopener">official Intel hardware-acceleration docs&lt;/a> state that Intel Quick Sync Video (QSV) is the preferred method on mainstream Intel GPUs for better performance, supported on Broadwell (5th-gen Core) and newer.&lt;/p>
&lt;p>In practice, the Intel N100 iGPU with Quick Sync handles roughly 3-4 simultaneous 4K-to-1080p transcodes, or about 8 streams at 1080p, which is more than enough for a household and even a few remote users. That is why the N100/N150 mini PC has become the default budget media-server platform — you get hardware transcoding without buying or passing through a GPU. RAM-wise, the transcode itself is light; size RAM for everything else you run alongside it.&lt;/p>
&lt;h3 id="a-zfs-nas-plus-vms-on-one-box">A ZFS NAS plus VMs on one box&lt;/h3>
&lt;p>Combining a ZFS storage pool with a stack of VMs is the most RAM-hungry homelab pattern, because you pay for both. Add up: ~2 GB for Proxmox, your ZFS ARC (2 GiB + 1 GiB per TiB of pool), and the RAM for every guest. A 4 TB ZFS pool running half a dozen VMs realistically wants 32 GB and is happier at 64 GB. This is the build where stepping up to a used enterprise box or a higher-RAM mini PC pays off.&lt;/p>
&lt;h2 id="do-you-need-a-gpu-almost-never">Do you need a GPU? (Almost never)&lt;/h2>
&lt;p>For Proxmox itself: no. The hypervisor is headless and managed through a web UI from your laptop, so the host needs no graphics card and is happy with integrated graphics or no display output at all. Adding a discrete GPU to a Proxmox host does nothing for the host.&lt;/p>
&lt;p>You add a GPU only for a guest:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Hardware transcoding&lt;/strong> for Plex/Jellyfin — and even then, an Intel iGPU with Quick Sync is the right tool, not a discrete card.&lt;/li>
&lt;li>&lt;strong>GPU passthrough&lt;/strong> to a VM for gaming, video editing, or local AI inference — this needs the IOMMU (VT-d/AMD-Vi) flag and a VM, not a container.&lt;/li>
&lt;/ul>
&lt;p>If neither of those is on your roadmap, skip the GPU entirely and spend the money on RAM and SSD instead.&lt;/p>
&lt;h2 id="what-proxmox-ve-9-changes-and-what-it-doesnt">What Proxmox VE 9 changes (and what it doesn&amp;rsquo;t)&lt;/h2>
&lt;p>Proxmox VE 9.0 was &lt;a href="https://www.proxmox.com/en/about/company-details/press-releases/proxmox-virtual-environment-9-0" rel="noopener">released on August 5, 2025&lt;/a> on Debian 13 &amp;ldquo;Trixie&amp;rdquo; with the Linux 6.14 kernel. The current stable release is &lt;strong>VE 9.2&lt;/strong> (May 21, 2026), which moves to the Linux 7.0 kernel on Debian 13.5 — VE 9.1 (November 2025, kernel 6.17) sat in between. VE 8.4 was the final 8.x release, and its maintenance window closes around August 2026. If you are building fresh in 2026, there is no reason to start on 8.x — install 9.2 directly.&lt;/p>
&lt;p>The hardware requirements themselves did not change — VE 9 still wants a 64-bit VT-x/AMD-V CPU, the same RAM and disk minimums, and a NIC. What changed is underneath: a newer kernel for better hardware support, plus a handful of breaking changes (LVM autoactivation defaults, possible network-interface renames, PCI-passthrough quirks on the new kernel). If you are upgrading an existing box rather than installing fresh, read the &lt;a href="https://techfuelhq.com/tutorials/proxmox-ve-8-to-9-upgrade-2026/">Proxmox VE 8 to 9 upgrade gotchas&lt;/a> first — the &amp;ldquo;requirement&amp;rdquo; for a clean VE 9 upgrade is doing the pre-flight checks, not new hardware.&lt;/p>
&lt;h2 id="putting-it-together-a-sane-2026-homelab-baseline">Putting it together: a sane 2026 homelab baseline&lt;/h2>
&lt;p>If you want a single recommendation that covers most first homelabs without overbuying:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>CPU:&lt;/strong> an Intel N100/N150 mini PC (VT-x, Quick Sync for transcoding) or a used small-form-factor desktop.&lt;/li>
&lt;li>&lt;strong>RAM:&lt;/strong> 16 GB minimum, 32 GB if you can — and more if you run ZFS or many VMs.&lt;/li>
&lt;li>&lt;strong>Storage:&lt;/strong> an SSD or NVMe for the OS and VM disks; add bulk drives only for media/NAS storage.&lt;/li>
&lt;li>&lt;strong>Network:&lt;/strong> one Gigabit NIC is fine; 10 GbE only matters if you are moving large files between machines constantly.&lt;/li>
&lt;li>&lt;strong>GPU:&lt;/strong> none, unless you are passing one through or want discrete transcoding muscle.&lt;/li>
&lt;/ul>
&lt;p>For the full hands-on walkthrough from USB installer to first VM on exactly this kind of box, see the &lt;a href="https://techfuelhq.com/articles/proxmox-mini-pc-setup/">Proxmox mini PC setup guide&lt;/a>, and for picking the actual hardware, the &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">best mini PCs for a homelab in 2026&lt;/a> breaks down the current options. If you would rather hit these specs cheaply with used enterprise gear, the &lt;a href="https://techfuelhq.com/homelab/800-dollar-proxmox-server-used-parts-2026/">$800 Proxmox server from refurbished parts&lt;/a> walks three builds that meet the recommended targets above.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://www.proxmox.com/en/products/proxmox-virtual-environment/requirements" rel="noopener">Proxmox VE Hardware Requirements&lt;/a> — official minimum and recommended CPU, RAM, storage, network, and the ZFS/Ceph &amp;ldquo;1 GB per TB&amp;rdquo; note.&lt;/li>
&lt;li>&lt;a href="https://pve.proxmox.com/wiki/System_Requirements" rel="noopener">Proxmox VE System Requirements wiki&lt;/a> — the wiki mirror of the same requirements.&lt;/li>
&lt;li>&lt;a href="https://pve.proxmox.com/wiki/ZFS_on_Linux" rel="noopener">Proxmox ZFS on Linux wiki&lt;/a> — ZFS &amp;ldquo;at least 8 GB&amp;rdquo; guidance, the &amp;ldquo;2 GiB base + 1 GiB/TiB&amp;rdquo; rule, the 10%-capped-at-16-GiB ARC default since VE 8.1, and &lt;code>zfs_arc_max&lt;/code>.&lt;/li>
&lt;li>&lt;a href="https://www.proxmox.com/en/about/company-details/press-releases/proxmox-virtual-environment-9-0" rel="noopener">Proxmox Virtual Environment 9.0 release (Aug 5, 2025)&lt;/a> — VE 9 on Debian 13 Trixie, kernel 6.14, and the VE 8.4 support window to August 2026.&lt;/li>
&lt;li>&lt;a href="https://jellyfin.org/docs/general/post-install/transcoding/hardware-acceleration/intel/" rel="noopener">Jellyfin Intel hardware acceleration docs&lt;/a> — Intel Quick Sync (QSV) as the preferred transcoding path, Broadwell and newer.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>&lt;em>Sizing a specific box? The &lt;a href="https://techfuelhq.com/tools/proxmox-capacity-planner/">Proxmox capacity planner&lt;/a> tells you how many VMs and containers your RAM, cores, and ZFS ARC allocation can actually support. Deciding between containers and full VMs for each service? The &lt;a href="https://techfuelhq.com/homelab/lxc-vs-vm-proxmox-2026/">LXC vs VM guide&lt;/a> has the decision tree. Ready to build? Start with the &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">best mini PCs for a homelab&lt;/a> and the &lt;a href="https://techfuelhq.com/articles/proxmox-mini-pc-setup/">Proxmox mini PC setup walkthrough&lt;/a>.&lt;/em>&lt;/p></description></item><item><title>ROG STRIX B650-A Gaming WiFi Review: AM5 ATX for the Homelab</title><link>https://techfuelhq.com/reviews/rog-strix-b650a-review-2026/</link><pubDate>Fri, 19 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/reviews/rog-strix-b650a-review-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-19 · ~11 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/reviews/rog-strix-b650a-review-2026.svg" alt="ASUS ROG STRIX B650-A Gaming WiFi review card rated 4.2 out of 5, showing build context with a Ryzen 7 7800X3D and key specs: AM5 socket, AMD B650 chipset, ATX form factor, 12+2 teamed power stages, 4 DDR5 slots up to 192GB, PCIe 5.0 x16 plus 4.0 x4 slots, four M.2 slots, 2.5GbE LAN and WiFi 6E" width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>&lt;strong>Rating: 4.2 / 5&lt;/strong>&lt;/p>
&lt;p>The ROG STRIX B650-A was the board I ran under a Ryzen 7 7800X3D in my primary build for an extended period. It&amp;rsquo;s an ATX AM5 board at a price point ($279–319 at time of purchase) that competes against X670 non-E boards rather than budget B650M options. This review reflects real-world use rather than a synthetic first-look.&lt;/p>
&lt;h2 id="specs-from-asus-product-page">Specs from ASUS product page&lt;/h2>
&lt;p>&lt;em>(Per ASUS ROG STRIX B650-A product page, accessed 2026-06.)&lt;/em>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Socket:&lt;/strong> AM5 (LGA1718)&lt;/li>
&lt;li>&lt;strong>Chipset:&lt;/strong> AMD B650&lt;/li>
&lt;li>&lt;strong>Form factor:&lt;/strong> ATX (305 × 244 mm)&lt;/li>
&lt;li>&lt;strong>Memory:&lt;/strong> 4× DDR5 DIMM, dual-channel, up to 192GB (unofficial Samsung B-die boards go higher), up to DDR5-8000+ OC&lt;/li>
&lt;li>&lt;strong>Power delivery:&lt;/strong> 12+2 teamed power stages&lt;/li>
&lt;li>&lt;strong>PCIe slots:&lt;/strong> PCIE_x16_1 (PCIe 5.0 x16), PCIE_x16_2 (PCIe 4.0 x4, keyed as x16), PCIE_x1_1 (PCIe 4.0 x1)&lt;/li>
&lt;li>&lt;strong>M.2 slots:&lt;/strong> 4× (1× PCIe 5.0 x4, 2× PCIe 4.0 x4, 1× PCIe 4.0 x2/SATA)&lt;/li>
&lt;li>&lt;strong>USB (rear I/O):&lt;/strong> 2× USB 3.2 Gen 2x2 (20 Gbps), 2× USB 3.2 Gen 2 (10 Gbps), 2× USB 3.2 Gen 1 (5 Gbps), 2× USB 2.0; 1× USB 3.2 Gen 2 Type-C&lt;/li>
&lt;li>&lt;strong>LAN:&lt;/strong> Intel I226-V (2.5 GbE)&lt;/li>
&lt;li>&lt;strong>WiFi:&lt;/strong> Intel AX210 (WiFi 6E, Bluetooth 5.3)&lt;/li>
&lt;li>&lt;strong>Audio:&lt;/strong> SupremeFX ALC4082, SABRE9018Q2C DAC&lt;/li>
&lt;li>&lt;strong>Display output:&lt;/strong> HDMI 2.1, DisplayPort 1.4 (for integrated graphics / APU use)&lt;/li>
&lt;/ul>
&lt;h2 id="power-delivery-for-the-7800x3d">Power delivery for the 7800X3D&lt;/h2>
&lt;p>The B650-A&amp;rsquo;s 12+2 teamed power delivery is more than the 7800X3D requires. The chip&amp;rsquo;s max socket power (PPT) is 162W — AMD rates the TDP at 120W — with typical gaming loads running closer to 100–130W. The 12+2 configuration means the 7800X3D&amp;rsquo;s power draw is split across enough phases that no single phase runs hot.&lt;/p>
&lt;p>Under sustained Cinebench R23 multi-core loads (which push the 7800X3D to its sustained limits), the VRM heatsink on the B650-A stayed below the concerning threshold. Under normal gaming loads — which is what the 7800X3D is built for — the power delivery was a non-event. For an X3D chip, B650 power delivery is sufficient by a wide margin.&lt;/p>
&lt;p>If you&amp;rsquo;re considering this board for a 7950X or 7900X (AMD&amp;rsquo;s higher-TDP flagship chips), the 12+2 teamed stages are adequate but the thermal situation gets tighter under sustained AVX workloads. The B650-A is not the wrong choice for those chips, but the premium X670E boards have more headroom.&lt;/p>
&lt;h2 id="ddr5-tuning-with-expo">DDR5 tuning with EXPO&lt;/h2>
&lt;p>EXPO (AMD&amp;rsquo;s equivalent to Intel&amp;rsquo;s XMP for DDR5) posted first-time with my own DDR5-6000 kit, and the board&amp;rsquo;s QVL covers the common DDR5-6000/6400 CL30–32 families from Corsair, G.Skill, and Kingston. Enable EXPO in BIOS → Ai Tweaker → Ai Overclock Tuner.&lt;/p>
&lt;p>ASUS&amp;rsquo;s Ai Tweaker UI is the best RAM timing interface on any AM5 board. Subtimings are individually accessible with descriptions, the memory training log is readable, and the BIOS saves manual overrides reliably across reboots. X670E Extreme boards have more advanced Curve Optimizer tools, but for DDR5 tuning at the EXPO profile level, the B650-A is equivalent.&lt;/p>
&lt;p>One note: DDR5-6000 is the sweet spot for Ryzen 7000/9000 series. AMD&amp;rsquo;s memory controller in AM5 chips runs best with EXPO profiles at DDR5-6000 (1:1 fabric ratio). DDR5-6400 and above often requires loosening subtimings to maintain stability, and the bandwidth gain over 6000 is minimal. The B650-A&amp;rsquo;s memory training handles 6000 EXPO kits first-boot; 6400+ EXPO kits sometimes need a training cycle.&lt;/p>
&lt;h2 id="pcie-layout-for-homelab-and-multi-device-builds">PCIe layout for homelab and multi-device builds&lt;/h2>
&lt;p>The slot layout matters more than it sounds. Most ATX AM5 boards have:&lt;/p>
&lt;ul>
&lt;li>Slot 1: PCIe 5.0 x16 (GPU)&lt;/li>
&lt;li>Slot 2: PCIe 4.0 x4 (second card, labeled as x16)&lt;/li>
&lt;li>Slot 3: PCIe 4.0 x1&lt;/li>
&lt;/ul>
&lt;p>For a build pairing a primary GPU with a 10GbE NIC (Mellanox ConnectX-3, Intel X550, etc.), the B650-A&amp;rsquo;s PCIE_x16_2 at PCIe 4.0 x4 is sufficient — a 10GbE NIC saturates at under 10 Gbps bidirectional, which is well within the ~32 Gbps ceiling of PCIe 4.0 x4. No bandwidth limitation exists in practice.&lt;/p>
&lt;p>For a build running a GPU plus a PCIe 4.0 x4 NVMe expansion card (adding SSD slots for a NAS-style build), same logic applies.&lt;/p>
&lt;p>One limitation: PCIE_x16_2 shares bandwidth with M.2 slot 3. When a card is installed in PCIE_x16_2, M.2 slot 3 may disable depending on the configuration. Check the ASUS manual for the sharing rules before planning a build that uses both simultaneously.&lt;/p>
&lt;h2 id="bios-quality">BIOS quality&lt;/h2>
&lt;p>BIOS quality is where ASUS earns its premium over competing B650 boards. The ROG STRIX B650-A shipped with BIOS 1404 and received updates through the 2400-series by 2026. Key positives:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>EXPO implementation:&lt;/strong> reliable first-boot memory training, no repeated failed boots&lt;/li>
&lt;li>&lt;strong>Fan control:&lt;/strong> per-header curves, temperature source selectable per header (CPU package, CPU socket, VRM, etc.)&lt;/li>
&lt;li>&lt;strong>POST time:&lt;/strong> about 25–30 seconds cold boot with DDR5-6000 EXPO kit — slightly longer than B550 era but normal for DDR5 training&lt;/li>
&lt;li>&lt;strong>Secure Boot:&lt;/strong> fully compatible with Windows 11 and easy to configure for Linux dual-boot&lt;/li>
&lt;/ul>
&lt;p>Negatives:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>AI Overclocking (AiO, ASUS&amp;rsquo;s automated OC):&lt;/strong> marketing feature. The AI overclock profiles apply preset PBO values that you can configure manually in 10 minutes. It&amp;rsquo;s not generating novel configurations; it&amp;rsquo;s selecting from a table.&lt;/li>
&lt;li>&lt;strong>BIOS interface at 4K:&lt;/strong> the ASUS BIOS does not scale to 4K monitors cleanly when connected during POST. It renders at a fixed resolution that looks blurry on large displays. This is an industry-wide problem, not B650-A-specific, but it&amp;rsquo;s annoying on a 4K setup.&lt;/li>
&lt;/ul>
&lt;h2 id="build-quality-and-io">Build quality and I/O&lt;/h2>
&lt;p>The rear I/O shield is integrated into the board — no separate I/O plate to install, which is now standard on premium boards. The included 2× USB 3.2 Gen 2×2 (20 Gbps) ports are useful for fast external SSDs; not something every B650 board includes.&lt;/p>
&lt;p>The M.2 Shield (thermal covers for all four M.2 slots) are well-designed — tool-less removal for slots 2 and 3, single-screw removal for slot 1. Drive installation is easier than any previous AM4 board I&amp;rsquo;ve used with non-standard M.2 retention mechanisms.&lt;/p>
&lt;p>Audio (SupremeFX ALC4082 + ESS SABRE DAC): noticeably better than the typical Realtek implementation. Negligible noise floor for the headphone amplifier out of the rear audio jack. If you&amp;rsquo;re running a DAC externally (USB or optical), this doesn&amp;rsquo;t matter — but for a build where you occasionally plug headphones directly into the PC, the B650-A&amp;rsquo;s onboard audio is better than you&amp;rsquo;d expect from a gaming board.&lt;/p>
&lt;h2 id="what-asus-got-wrong">What ASUS got wrong&lt;/h2>
&lt;p>&lt;strong>Aura Sync RGB:&lt;/strong> the addressable RGB headers (2× ARGB) and standard RGB header work fine, but Aura Sync — ASUS&amp;rsquo;s software for coordinating RGB across components — is another background-process-heavy utility like NZXT CAM. If you&amp;rsquo;re not invested in RGB coordination across an ASUS ecosystem, the Aura Sync software is usable only at startup and then killed.&lt;/p>
&lt;p>&lt;strong>Fan header placement:&lt;/strong> the CPU fan header and CPU OPT header are both at the top of the board near the CPU socket. Three of the chassis fan headers are at the bottom of the board. Routing cables from bottom case fans to bottom-board headers is fine, but routing the AIO pump (which goes to CPU OPT) down from a top-mounted radiator means cable management gets complicated in some cases.&lt;/p>
&lt;p>&lt;strong>Quantity of bundled connectors:&lt;/strong> the B650-A ships with ARGB splitter cables and fan extension cables but no M.2 drive screws. Screw count is 4 per slot, 16 total — barely enough if you populate all four M.2 slots with 2280 drives.&lt;/p>
&lt;h2 id="versus-the-competition">Versus the competition&lt;/h2>
&lt;p>At the B650 ATX tier ($200–320):&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Board&lt;/th>
&lt;th scope="col">Key differentiator&lt;/th>
&lt;th scope="col">Street&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>ASUS ROG STRIX B650-A&lt;/td>
&lt;td>12+2 teamed VRM, best BIOS UI, WiFi 6E&lt;/td>
&lt;td>~$280&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>MSI MAG B650 TOMAHAWK&lt;/td>
&lt;td>16+2+1 VRM, more fan headers, no WiFi&lt;/td>
&lt;td>~$210&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Gigabyte B650 AORUS Elite AX&lt;/td>
&lt;td>Solid VRM, onboard WiFi, slightly lower build quality&lt;/td>
&lt;td>~$220&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ASRock B650E Taichi&lt;/td>
&lt;td>Premium build, 24+2+1 VRM, Thunderbolt 4&lt;/td>
&lt;td>~$340&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The MSI TOMAHAWK is the strongest value competition — its 16+2+1 VRM has higher total thermal capacity than the B650-A&amp;rsquo;s 12+2 teamed configuration (though both handle the 7800X3D without strain), and its fan header count is higher. The TOMAHAWK trades the B650-A&amp;rsquo;s BIOS quality and WiFi inclusion for lower cost.&lt;/p>
&lt;p>For a homelab builder where BIOS stability and RAM tuning reliability matter, the B650-A justifies its premium over the TOMAHAWK. For a dedicated gaming build where BIOS tinkering is minimal, the TOMAHAWK at $60 less is harder to argue against.&lt;/p>
&lt;h2 id="verdict">Verdict&lt;/h2>
&lt;p>The ROG STRIX B650-A is the right board if you&amp;rsquo;re building an AM5 ATX system with a Ryzen 7 7800X3D and want reliable EXPO memory training, good power delivery, and ASUS&amp;rsquo;s BIOS — which remains the best DDR5 tuning interface on any AM5 platform. The WiFi 6E inclusion and premium I/O (20 Gbps USB) add value without requiring you to buy a more expensive X670 board.&lt;/p>
&lt;p>It&amp;rsquo;s not perfect — Aura Sync is unavoidable if you use ARGB headers, the fan header placement requires cable routing decisions, and the AI overclocking marketing overstates what the feature actually does. But the fundamentals are strong, and a board you can trust to boot reliably with a loaded DDR5 kit is worth something.&lt;/p>
&lt;p>&lt;strong>Rating: 4.2/5.&lt;/strong> Recommended for AM5 ATX builds pairing a 7000/9000-series CPU with a 360mm AIO and DDR5-6000 memory. The BIOS alone is worth the premium over budget B650 boards.&lt;/p>
&lt;hr>
&lt;p>&lt;em>The &lt;a href="https://techfuelhq.com/reviews/nzxt-kraken-360-review-2026/">NZXT Kraken 360 review&lt;/a> covers the cooler this board ran under. For a full system build around the 7800X3D platform, the &lt;a href="https://techfuelhq.com/tools/pc-builder/">PC Builder tool&lt;/a> checks socket, RAM slot, and PCIe slot compatibility. For repurposing this class of hardware as a Proxmox server when upgrading, the &lt;a href="https://techfuelhq.com/articles/repurpose-gaming-pc-proxmox-server-2026/">repurpose gaming PC guide&lt;/a> covers the full Proxmox setup from an existing desktop.&lt;/em>&lt;/p></description></item><item><title>Self-Hosted AI in 2026: The Stack and How to Start</title><link>https://techfuelhq.com/articles/self-hosted-ai-stack-2026/</link><pubDate>Fri, 19 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/self-hosted-ai-stack-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-19 · ~13 min read · St. Louis County, MO&lt;/p>
&lt;p>Self-hosted AI is the simple idea that you run the model on your own box instead of renting someone else&amp;rsquo;s. The prompt you type and the answer you get back never touch a third-party server. There is no API key, no monthly token bill, no rate limit, and the thing keeps working when your internet is down. In 2026 that is no longer a research project — it is a weekend install on hardware you may already own.&lt;/p>
&lt;p>This page is the map, not the deep dive. Local AI now spans four practical categories — chat and text (local LLMs), image generation, speech (transcription and synthesis), and coding assistants — plus the one question that decides everything: how much GPU you need. I&amp;rsquo;ll lay out the real, current tools in each lane, who each is for, and where to start. Where there&amp;rsquo;s a number to get exactly right — which model fits which card, tokens per second, the cost math — I link down to the deep dives on this site rather than re-deriving it here.&lt;/p>
&lt;p>A note on honesty up front, because the field is loud with hype: self-hosted models are not as good as the best hosted models for the hardest tasks, and pretending otherwise wastes your weekend. The trade you are actually making is covered next.&lt;/p>
&lt;img src="https://techfuelhq.com/images/articles/self-hosted-ai-stack-2026.svg" width="1200" height="780" loading="lazy" decoding="async" alt="The four self-hosted AI categories in 2026: local LLMs (Ollama, LM Studio, llama.cpp, vLLM with the Open WebUI front end; start with Ollama plus Open WebUI), image generation (ComfyUI and AUTOMATIC1111 running Flux or SDXL), speech (Whisper for transcription, Piper and Kokoro for synthesis), and coding assistants (Tabby, Continue, Aider) with Codestral and DeepSeek Coder models. All four lanes are gated by the same GPU VRAM tiers: 8GB, 16GB, and the 24GB sweet spot." style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;h2 id="why-self-host-ai--and-the-honest-tradeoffs">Why self-host AI — and the honest tradeoffs&lt;/h2>
&lt;p>Three real reasons people self-host, and three real costs.&lt;/p>
&lt;p>&lt;strong>The reasons:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Privacy.&lt;/strong> Financial questions, draft emails about coworkers, proprietary code, half-formed business ideas — none of that has to sit in a third-party log file. For sensitive workloads, local isn&amp;rsquo;t just cheaper past a break-even point, it&amp;rsquo;s the only option that keeps data off external servers.&lt;/li>
&lt;li>&lt;strong>Cost and no rate limits.&lt;/strong> Once the hardware is paid for, inference is free at the margin. Heavy users running summarization pipelines, coding assistants, or batch jobs stop watching a token meter.&lt;/li>
&lt;li>&lt;strong>Control.&lt;/strong> You pick the model, the quantization, the system prompt, and the version. Nothing gets deprecated out from under you, and the model runs offline.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>The tradeoffs:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Capability ceiling.&lt;/strong> As the r/LocalLLaMA and r/selfhosted crowd will tell you plainly, a single consumer GPU won&amp;rsquo;t match a frontier hosted model on the hardest reasoning and agentic tasks. An 8B–32B open-weight model is excellent for everyday work and noticeably weaker at the top end.&lt;/li>
&lt;li>&lt;strong>Upfront hardware.&lt;/strong> The privacy and cost wins are real, but they sit behind a GPU purchase. The break-even math depends entirely on how much you actually use it.&lt;/li>
&lt;li>&lt;strong>You are the ops team.&lt;/strong> Drivers, model downloads, container updates, and the occasional out-of-memory error are now your problem. That is a feature if you enjoy a homelab and a cost if you don&amp;rsquo;t.&lt;/li>
&lt;/ul>
&lt;p>The pattern most people settle into: local for volume and anything sensitive, cloud for the occasional genuinely hard problem. With that framing set, here are the four categories.&lt;/p>
&lt;h2 id="category-1--local-llms-chat-text-rag">Category 1 — Local LLMs (chat, text, RAG)&lt;/h2>
&lt;p>This is the heart of self-hosted AI and where almost everyone starts. You run an open-weight large language model through a &lt;strong>runner&lt;/strong>, and optionally point a chat UI at it.&lt;/p>
&lt;p>The runners, by friction tolerance — all built on, or alongside, the same &lt;code>llama.cpp&lt;/code> foundation:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Ollama&lt;/strong> — a daemon wrapping llama.cpp with a clean CLI and model registry. &lt;code>ollama pull qwen3&lt;/code> and you&amp;rsquo;re chatting in under a minute. It exposes an OpenAI-compatible API on port &lt;code>11434&lt;/code>, so existing tools point at it without code changes. This is the default starting point for one-developer use on any OS. (&lt;a href="https://daily.dev/blog/running-llms-locally-ollama-llama-cpp-self-hosted-ai-developers/" rel="noopener">daily.dev&lt;/a>)&lt;/li>
&lt;li>&lt;strong>LM Studio&lt;/strong> — a desktop GUI over llama.cpp (and MLX on Mac), with one-click model downloads and a built-in OpenAI-compatible server. Best for a GUI-first experience on Windows or Mac. (&lt;a href="https://codersera.com/blog/ollama-vs-lm-studio-vs-vllm-vs-llama-cpp-vs-mlx-2026/" rel="noopener">codersera&lt;/a>)&lt;/li>
&lt;li>&lt;strong>llama.cpp&lt;/strong> — Gerganov&amp;rsquo;s original C/C++ inference engine. The most control over quantization, batch size, and GPU layers; the most setup. Drop down to it for embedded or unusual-hardware deployments. (&lt;a href="https://codersera.com/blog/ollama-vs-lm-studio-vs-vllm-vs-llama-cpp-vs-mlx-2026/" rel="noopener">codersera&lt;/a>)&lt;/li>
&lt;li>&lt;strong>vLLM&lt;/strong> — a high-throughput serving system using PagedAttention and continuous batching. In benchmark testing it reached roughly 16–20x Ollama&amp;rsquo;s concurrent throughput, but it&amp;rsquo;s API-only and aimed at multi-user production on NVIDIA or AMD GPUs — overkill for a single-user box. (&lt;a href="https://insiderllm.com/guides/llamacpp-vs-ollama-vs-vllm/" rel="noopener">InsiderLLM&lt;/a>)&lt;/li>
&lt;li>&lt;strong>Open WebUI&lt;/strong> — not a runner but the front end most people pair with Ollama: a self-hosted, ChatGPT-style browser interface. The Ollama + Open WebUI combination is the single most popular local AI stack in 2026. (&lt;a href="https://www.youtube.com/watch?v=y5-6qww8uKk" rel="noopener">Google AI Overview / VirtualizationHowto&lt;/a>)&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Who it&amp;rsquo;s for:&lt;/strong> anyone who wants a private chat assistant, RAG over personal documents, or an OpenAI-API drop-in for their own scripts. Start with Ollama plus Open WebUI; reach for vLLM only when you&amp;rsquo;re serving several people at once.&lt;/p>
&lt;p>On models: the dependable open-weight families in 2026 are Alibaba&amp;rsquo;s &lt;strong>Qwen3 / Qwen3.5&lt;/strong> (Apache 2.0), OpenAI&amp;rsquo;s &lt;strong>GPT-OSS&lt;/strong> (20B designed for 16GB cards; 120B for data-center GPUs), Meta&amp;rsquo;s &lt;strong>Llama&lt;/strong>, &lt;strong>DeepSeek&lt;/strong>, &lt;strong>Mistral Small&lt;/strong>, and Google&amp;rsquo;s &lt;strong>Gemma 3&lt;/strong>. (&lt;a href="https://huggingface.co/blog/daya-shankar/open-source-llm-models-to-run-locally" rel="noopener">Hugging Face&lt;/a>) The roster of &amp;ldquo;newest and best&amp;rdquo; shifts month to month, so the durable advice is to match the model family to your VRAM rather than chase releases — which is exactly the question the next section answers, and which our &lt;a href="https://techfuelhq.com/articles/local-llm-by-gpu-vram-2026/">local-LLM-by-GPU-VRAM guide&lt;/a> maps out tier by tier with real GGUF file sizes.&lt;/p>
&lt;h2 id="category-2--image-generation">Category 2 — Image generation&lt;/h2>
&lt;p>The self-hosted image stack has consolidated around the &lt;strong>Stable Diffusion family&lt;/strong> and &lt;strong>Flux&lt;/strong>, driven through one of two interfaces:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>ComfyUI&lt;/strong> — a node-based interface that exposes the full generation pipeline. The pick when you need complex workflows, custom nodes, or to serve generation in a repeatable way. Steeper to learn, far more powerful. (&lt;a href="https://singularitybyte.com/tutorials/ai-image-generator-stable-diffusion-vs-flux-vs-comfyui-2026.html" rel="noopener">SingularityByte&lt;/a>)&lt;/li>
&lt;li>&lt;strong>AUTOMATIC1111 (and the Forge fork)&lt;/strong> — a Gradio-based web UI. Install it, load a model, start generating in minutes. The beginner-friendly path. (&lt;a href="https://offlinecreator.com/blog/best-local-stable-diffusion-setup-2026" rel="noopener">offlinecreator&lt;/a>)&lt;/li>
&lt;/ul>
&lt;p>On models, the community split in 2026 is roughly: &lt;strong>Flux&lt;/strong> (from Black Forest Labs) for the best current photorealism if your card has 12GB+ of VRAM, and &lt;strong>SDXL&lt;/strong> or &lt;strong>Stable Diffusion 3.5&lt;/strong> checkpoints — often fine-tuned versions pulled from Civitai — for stylized, illustrated, or anime output with the broadest community support. (&lt;a href="https://www.bentoml.com/blog/a-guide-to-open-source-image-generation-models" rel="noopener">BentoML&lt;/a>, &lt;a href="https://awesomeagents.ai/guides/best-local-image-generation-models-2026/" rel="noopener">Awesome Agents&lt;/a>)&lt;/p>
&lt;p>&lt;strong>Who it&amp;rsquo;s for:&lt;/strong> anyone generating images who wants no per-image cost, no content filter they didn&amp;rsquo;t choose, and full control over models and LoRAs. Image generation is VRAM-hungry — the better Flux models want 12–16GB+ — so it leans on the same hardware question as LLMs.&lt;/p>
&lt;h2 id="category-3--speech-transcription-and-synthesis">Category 3 — Speech (transcription and synthesis)&lt;/h2>
&lt;p>Two halves: speech-to-text (STT) and text-to-speech (TTS).&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Whisper&lt;/strong> (OpenAI&amp;rsquo;s open-source model, released 2022) remains the best general-purpose self-hosted transcription system three-plus years on. You run it through the original Python package, &lt;strong>whisper.cpp&lt;/strong> (a C/C++ port from the team behind llama.cpp), or &lt;strong>faster-whisper&lt;/strong>, which delivers transcription several times faster than the reference implementation. (&lt;a href="https://northflank.com/blog/best-open-source-speech-to-text-stt-model-in-2026-benchmarks" rel="noopener">Northflank&lt;/a>)&lt;/li>
&lt;li>&lt;strong>TTS&lt;/strong> — for synthesis, &lt;strong>Piper&lt;/strong> and &lt;strong>Kokoro&lt;/strong> are the common lightweight open-source choices, covering 20+ languages. Integrated servers like &lt;strong>Speaches&lt;/strong> bundle faster-whisper for STT and Piper/Kokoro for TTS behind an OpenAI-compatible API — &amp;ldquo;like Ollama, but for audio.&amp;rdquo; (&lt;a href="https://northflank.com/blog/best-open-source-speech-to-text-stt-model-in-2026-benchmarks" rel="noopener">Northflank&lt;/a>)&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Who it&amp;rsquo;s for:&lt;/strong> anyone transcribing meetings, podcasts, or voice notes who doesn&amp;rsquo;t want audio leaving the machine, plus voice-assistant and dictation builders. Whisper&amp;rsquo;s smaller models run fine on CPU; the large model benefits from a GPU.&lt;/p>
&lt;h2 id="category-4--coding-assistants">Category 4 — Coding assistants&lt;/h2>
&lt;p>A self-hosted coding assistant gives you Copilot-style completion and chat with the model running on your own hardware:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Tabby&lt;/strong> — an open-source, self-hosted assistant explicitly built as a Copilot alternative. It ships an admin dashboard and SSO, runs models locally by default (it can use Ollama as a backend), and plugs into VS Code and JetBrains. The clearest pick for a team that needs an air-gapped or fully self-hosted setup. (&lt;a href="https://github.com/TabbyML/tabby" rel="noopener">TabbyML on GitHub&lt;/a>)&lt;/li>
&lt;li>&lt;strong>Continue&lt;/strong> — a VS Code and JetBrains extension that points at your local Ollama model from a single shared config. The best-supported individual-developer option. (&lt;a href="https://www.secondtalent.com/resources/open-source-ai-coding-assistants/" rel="noopener">Second Talent&lt;/a>)&lt;/li>
&lt;li>&lt;strong>Aider / Cline&lt;/strong> — terminal-and-editor agentic tools that also run against a local Ollama endpoint.&lt;/li>
&lt;/ul>
&lt;p>On models, &lt;strong>Codestral&lt;/strong> (Mistral) and &lt;strong>DeepSeek Coder&lt;/strong> lineages are the strongest local coding picks, and Qwen3-Coder is a capable agentic option. (&lt;a href="https://www.secondtalent.com/resources/open-source-ai-coding-assistants/" rel="noopener">Second Talent&lt;/a>) Be realistic: as that same comparison notes, self-hosted coding tools in 2026 are genuinely usable but still trail the best cloud assistants on the hardest tasks. They shine when you can&amp;rsquo;t send code to the cloud, or when per-seat pricing gets expensive.&lt;/p>
&lt;p>&lt;strong>Who it&amp;rsquo;s for:&lt;/strong> privacy-bound or air-gapped teams (Tabby), and individual developers who want free, local completion (Continue + Ollama).&lt;/p>
&lt;h2 id="the-hardware-question-what-gpu-and-vram-you-need">The hardware question: what GPU and VRAM you need&lt;/h2>
&lt;p>Every category above is gated by the same thing: &lt;strong>GPU VRAM&lt;/strong>, because the model has to fit in the card&amp;rsquo;s memory for full-speed inference. I&amp;rsquo;m not going to re-derive the numbers here — this site already has the authoritative breakdowns, and duplicating them would just risk drift. The short version:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>8GB&lt;/strong> (RTX 3060, 4060) — comfortable for 7–8B chat and coding models. The entry tier.&lt;/li>
&lt;li>&lt;strong>16GB&lt;/strong> (RTX 4060 Ti 16GB, 5060 Ti, 5080) — 14B models plus a 20B mixture-of-experts like GPT-OSS-20B, and enough for the better Flux image models.&lt;/li>
&lt;li>&lt;strong>24GB&lt;/strong> (RTX 3090, 4090) — the single-card sweet spot, running ~32B models with room for context.&lt;/li>
&lt;/ul>
&lt;p>For the full tier-by-tier map with real GGUF file sizes and the math behind them, see &lt;a href="https://techfuelhq.com/articles/local-llm-by-gpu-vram-2026/">which local LLM fits your GPU by VRAM&lt;/a>, and to check a specific model-and-card combination before you download anything, run it through the &lt;a href="https://techfuelhq.com/tools/llm-vram-calculator/">LLM VRAM calculator&lt;/a>. If you&amp;rsquo;re picking hardware, the &lt;a href="https://techfuelhq.com/articles/1000-local-ai-workstation-rtx-5080-2026/">$1,000 local AI workstation build&lt;/a> lays out a real parts list and the cloud-vs-local cost math at the 16GB tier. CPU and system RAM matter far less than the GPU — any modern 6-core CPU with 32GB of RAM is plenty for a pure inference box.&lt;/p>
&lt;h2 id="how-to-start-in-an-afternoon">How to start in an afternoon&lt;/h2>
&lt;p>You don&amp;rsquo;t need the workstation to begin. The fastest honest path, on a homelab box or spare PC with an NVIDIA GPU:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Install Ollama.&lt;/strong> On Linux: &lt;code>curl -fsSL https://ollama.com/install.sh | sh&lt;/code>. It registers a service listening on &lt;code>localhost:11434&lt;/code>. (On Windows, the LM Studio one-installer path is friendlier — the &lt;a href="https://techfuelhq.com/tutorials/self-host-local-llm-rtx-5060-2026/">single-RTX-5060 walkthrough&lt;/a> covers both end to end, including the Blackwell-driver gotcha that silently drops you to CPU.)&lt;/li>
&lt;li>&lt;strong>Pull a model that fits your card.&lt;/strong> &lt;code>ollama pull qwen3&lt;/code> for a general 8B, or a smaller model if you&amp;rsquo;re on 8GB. Check fit first with the &lt;a href="https://techfuelhq.com/tools/llm-vram-calculator/">VRAM calculator&lt;/a>.&lt;/li>
&lt;li>&lt;strong>Test it.&lt;/strong> &lt;code>ollama run qwen3 &amp;quot;Summarize the tradeoffs of self-hosting an LLM.&amp;quot;&lt;/code> First token in about a second on a modern GPU.&lt;/li>
&lt;li>&lt;strong>Add a UI.&lt;/strong> Run Open WebUI in Docker and point it at Ollama for a ChatGPT-style interface on your LAN. The official &lt;code>n8n&lt;/code> self-hosted AI starter kit bundles Ollama, Open WebUI, and a workflow engine in one Docker Compose file if you&amp;rsquo;d rather start from a template. (&lt;a href="https://github.com/n8n-io/self-hosted-ai-starter-kit" rel="noopener">n8n on GitHub&lt;/a>)&lt;/li>
&lt;/ol>
&lt;p>That&amp;rsquo;s a working private chat assistant in an afternoon. From there, the natural progression is to run it as a proper always-on service. A small hypervisor host is the clean way to do that — our &lt;a href="https://techfuelhq.com/articles/proxmox-mini-pc-setup/">Proxmox-on-a-mini-PC setup guide&lt;/a> gets you from a USB installer to a first VM in under an hour, and once you&amp;rsquo;re comfortable hosting one service you&amp;rsquo;ll want the rest of the self-hosted toolbox: the &lt;a href="https://techfuelhq.com/articles/self-hosted-apps-replace-saas-2026/">self-hosted apps that replace SaaS&lt;/a> covers the photo, notes, and password managers that pair naturally with a local AI box.&lt;/p>
&lt;h2 id="where-to-go-next">Where to go next&lt;/h2>
&lt;ul>
&lt;li>New to all of this and unsure what fits your card? Start with &lt;a href="https://techfuelhq.com/articles/local-llm-by-gpu-vram-2026/">which local LLM fits your GPU by VRAM&lt;/a>.&lt;/li>
&lt;li>Ready to actually install on a specific GPU? The &lt;a href="https://techfuelhq.com/tutorials/self-host-local-llm-rtx-5060-2026/">self-host a local LLM on an RTX 5060&lt;/a> tutorial is the hands-on path.&lt;/li>
&lt;li>Picking hardware? The &lt;a href="https://techfuelhq.com/articles/1000-local-ai-workstation-rtx-5080-2026/">$1,000 local AI workstation&lt;/a> build guide has the parts list and the break-even math.&lt;/li>
&lt;li>Want the host to run it on? &lt;a href="https://techfuelhq.com/articles/proxmox-mini-pc-setup/">Set up Proxmox on a mini PC&lt;/a>, then fill it with &lt;a href="https://techfuelhq.com/articles/self-hosted-apps-replace-saas-2026/">self-hosted apps that replace SaaS&lt;/a>.&lt;/li>
&lt;/ul>
&lt;p>Self-hosted AI in 2026 isn&amp;rsquo;t one tool — it&amp;rsquo;s a small stack of mature, mostly free, mostly open-weight pieces, gated by how much GPU you&amp;rsquo;re willing to buy. Pick the category you actually need, match the model to your VRAM, and start with Ollama on a box you already own.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Working out of St. Louis County. Running a different self-hosted AI stack — a model, runner, or hardware combo worth comparing notes on? Send your config to &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a>.&lt;/em>&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>Google AI Overview for &amp;ldquo;self-hosted AI&amp;rdquo; (Ollama + Open WebUI as the easiest stack; VRAM guidance; n8n): cited inline.&lt;/li>
&lt;li>daily.dev, &amp;ldquo;Running LLMs Locally in 2026: Ollama, llama.cpp, and Self-Hosted AI for Developers&amp;rdquo;: &lt;a href="https://daily.dev/blog/running-llms-locally-ollama-llama-cpp-self-hosted-ai-developers/" rel="noopener">https://daily.dev/blog/running-llms-locally-ollama-llama-cpp-self-hosted-ai-developers/&lt;/a>&lt;/li>
&lt;li>Codersera, &amp;ldquo;Ollama vs LM Studio vs vLLM vs llama.cpp vs MLX 2026&amp;rdquo;: &lt;a href="https://codersera.com/blog/ollama-vs-lm-studio-vs-vllm-vs-llama-cpp-vs-mlx-2026/" rel="noopener">https://codersera.com/blog/ollama-vs-lm-studio-vs-vllm-vs-llama-cpp-vs-mlx-2026/&lt;/a>&lt;/li>
&lt;li>InsiderLLM, &amp;ldquo;llama.cpp vs Ollama vs vLLM: One User vs Many (2026)&amp;rdquo;: &lt;a href="https://insiderllm.com/guides/llamacpp-vs-ollama-vs-vllm/" rel="noopener">https://insiderllm.com/guides/llamacpp-vs-ollama-vs-vllm/&lt;/a>&lt;/li>
&lt;li>Hugging Face, &amp;ldquo;The Best Open Source and Open-Weight LLM Models to Run Locally in 2026&amp;rdquo;: &lt;a href="https://huggingface.co/blog/daya-shankar/open-source-llm-models-to-run-locally" rel="noopener">https://huggingface.co/blog/daya-shankar/open-source-llm-models-to-run-locally&lt;/a>&lt;/li>
&lt;li>SingularityByte, &amp;ldquo;AI Image Generator Showdown 2026: Stable Diffusion, Flux, and ComfyUI&amp;rdquo;: &lt;a href="https://singularitybyte.com/tutorials/ai-image-generator-stable-diffusion-vs-flux-vs-comfyui-2026.html" rel="noopener">https://singularitybyte.com/tutorials/ai-image-generator-stable-diffusion-vs-flux-vs-comfyui-2026.html&lt;/a>&lt;/li>
&lt;li>BentoML, &amp;ldquo;The Best Open-Source Image Generation Models in 2026&amp;rdquo;: &lt;a href="https://www.bentoml.com/blog/a-guide-to-open-source-image-generation-models" rel="noopener">https://www.bentoml.com/blog/a-guide-to-open-source-image-generation-models&lt;/a>&lt;/li>
&lt;li>Northflank, &amp;ldquo;Best open source speech-to-text (STT) model in 2026 (with benchmarks)&amp;rdquo;: &lt;a href="https://northflank.com/blog/best-open-source-speech-to-text-stt-model-in-2026-benchmarks" rel="noopener">https://northflank.com/blog/best-open-source-speech-to-text-stt-model-in-2026-benchmarks&lt;/a>&lt;/li>
&lt;li>TabbyML, &amp;ldquo;Self-hosted AI coding assistant&amp;rdquo; (GitHub): &lt;a href="https://github.com/TabbyML/tabby" rel="noopener">https://github.com/TabbyML/tabby&lt;/a>&lt;/li>
&lt;li>Second Talent, &amp;ldquo;Top 7 Open-Source AI Coding Assistants in 2026&amp;rdquo;: &lt;a href="https://www.secondtalent.com/resources/open-source-ai-coding-assistants/" rel="noopener">https://www.secondtalent.com/resources/open-source-ai-coding-assistants/&lt;/a>&lt;/li>
&lt;li>n8n, &amp;ldquo;Self-hosted AI Starter Kit&amp;rdquo; (GitHub): &lt;a href="https://github.com/n8n-io/self-hosted-ai-starter-kit" rel="noopener">https://github.com/n8n-io/self-hosted-ai-starter-kit&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Servers for a Homelab (2026): Which One to Buy</title><link>https://techfuelhq.com/homelab/servers-for-homelab-2026/</link><pubDate>Fri, 19 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/homelab/servers-for-homelab-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-19 · ~12 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/homelab/servers-for-homelab-2026.svg" alt="Decision overview of five homelab server classes for 2026 — new mini PC, used small-form-factor desktop, used enterprise tower or rack, DIY Mini-ITX or NAS build, and off-the-shelf NAS — with the typical buyer, rough price band, and idle power for each, routing to the right detailed guide." width="1200" height="760" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>Search &amp;ldquo;homelab server&amp;rdquo; and you fall straight into a Reddit thread, a &amp;ldquo;what is a homelab&amp;rdquo; explainer, or one person&amp;rsquo;s build log. None of them answer the question you actually have: out of all the things people call a homelab server, which one should &lt;em>you&lt;/em> buy? This page is the routing map. It frames the five real classes of server, tells you in a paragraph who each one is for, gives you a decision rule you can apply in two minutes, and then points you down to the detailed guide for whichever class fits.&lt;/p>
&lt;p>This is a chooser, not a spec sheet. Where a class deserves a full breakdown, the deep-dive lives on its own page and is linked inline.&lt;/p>
&lt;h2 id="start-here-what-kind-of-server-do-you-actually-need">Start here: what kind of server do you actually need?&lt;/h2>
&lt;p>A &amp;ldquo;homelab server&amp;rdquo; is just a computer you run at home to host services and to learn on. The hardware can take five broadly different shapes, and the right one is decided almost entirely by three questions:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Where does it live?&lt;/strong> A living room, office, or bedroom rules out anything loud. A basement, closet, or garage with a door opens up the noisy options.&lt;/li>
&lt;li>&lt;strong>What does it run?&lt;/strong> A handful of containers and a couple of VMs needs very little. Many VMs, big storage, or local AI changes the answer.&lt;/li>
&lt;li>&lt;strong>What do you care about — quiet and cheap-to-run, or capacity and expandability?&lt;/strong> You usually cannot max out both at once.&lt;/li>
&lt;/ol>
&lt;p>Hold those three answers in your head as you read the classes below. If you are not sure how much hardware your workload actually needs, the &lt;a href="https://techfuelhq.com/homelab/proxmox-hardware-requirements-2026/">Proxmox hardware requirements guide&lt;/a> translates &amp;ldquo;I want to run X&amp;rdquo; into real CPU, RAM, and storage numbers — read that first if you are starting from zero.&lt;/p>
&lt;h2 id="the-five-classes-of-homelab-server">The five classes of homelab server&lt;/h2>
&lt;h3 id="1-new-mini-pc--the-default-first-server-for-most-people">1. New mini PC — the default first server for most people&lt;/h3>
&lt;p>A modern mini PC (an Intel N150 box, a Beelink, an ASUS NUC, or a Minisforum MS-01) is a full x86 computer the size of a paperback. It runs Proxmox, idles in the single-to-low-double-digit watts, and is effectively silent. You buy it, add RAM and an NVMe drive, and you are done — no parts list, no assembly.&lt;/p>
&lt;p>&lt;strong>Who it&amp;rsquo;s for:&lt;/strong> Anyone whose server lives in a living space, anyone who wants a clean &amp;ldquo;it just works&amp;rdquo; box, and anyone running a normal homelab of a dozen-or-so containers and a few VMs. The MS-01 in particular adds dual 10GbE for people who want real network virtualization. The main ceiling is RAM (typically 64–96 GB) and a single small chassis.&lt;/p>
&lt;p>For specific models, idle-power figures, and which tier to buy, see &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">Best Mini PC for a Homelab 2026&lt;/a>.&lt;/p>
&lt;h3 id="2-used-small-form-factor-sff-desktop--the-cheapest-legitimate-way-in">2. Used small-form-factor (SFF) desktop — the cheapest legitimate way in&lt;/h3>
&lt;p>A used Dell OptiPlex Micro, HP EliteDesk Mini, or Lenovo ThinkCentre Tiny is the value entry point. These are ex-corporate machines with 8th-gen-or-newer Intel chips, built to run reliably on an office desk for years, and they sell for well under $200 on eBay. Add a stick of RAM and an SSD and you have a real Proxmox host for the price of a video game console.&lt;/p>
&lt;p>&lt;strong>Who it&amp;rsquo;s for:&lt;/strong> Budget-first builders, anyone who wants to learn what Proxmox feels like before spending real money, and cluster-curious people who want three nodes for high-availability practice without a $1,500 bill. The trade-offs are older platforms, usually a single gigabit NIC, and a lower RAM ceiling (often 32 GB) — fine for a single node, limiting once you cluster.&lt;/p>
&lt;p>These used SFF picks are covered alongside the new mini PCs in the &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">mini PC homelab guide&lt;/a> (the value tier), since they compete in the same quiet, low-power category.&lt;/p>
&lt;h3 id="3-used-enterprise-tower-or-rack-server--capacity-at-a-cost">3. Used enterprise tower or rack server — capacity, at a cost&lt;/h3>
&lt;p>This is the romanticized option: a 2013-era Dell PowerEdge or HP ProLiant with 128 GB of RAM and eight drive bays for a couple hundred dollars. It is genuinely unbeatable on RAM-per-dollar, drive density, and out-of-band management (iDRAC / iLO lets you manage the box remotely as if you were standing at it). What the sticker price hides is the running reality: a rack server idles far louder and far hungrier than a mini PC, and that gap compounds every hour of every day it runs.&lt;/p>
&lt;p>&lt;strong>Who it&amp;rsquo;s for:&lt;/strong> People who genuinely need a high RAM ceiling cheaply (many simultaneous VMs, large databases, lab environments), 8+ drive bays in one chassis, or remote management — &lt;em>and&lt;/em> who have a basement, closet, or dedicated room where noise does not matter. A tower server (HP ML-series, Dell T-series) is the quieter, more home-friendly subset of this class; a 1U/2U rack is the loudest.&lt;/p>
&lt;p>Before you buy on the cheap-RAM pitch alone, read the honest head-to-head: &lt;a href="https://techfuelhq.com/homelab/used-enterprise-vs-mini-pc-homelab-2026/">Used Enterprise Server vs Mini PC for Homelab&lt;/a>. It runs the full noise, power, RAM, and three-year ownership math so you can see exactly when the enterprise box wins and when it does not.&lt;/p>
&lt;h3 id="4-diy-build--mini-itx-or-a-used-parts-server">4. DIY build — Mini-ITX or a used-parts server&lt;/h3>
&lt;p>If no off-the-shelf box fits, you build one. There are two flavors. A &lt;strong>Mini-ITX build&lt;/strong> gives you a full desktop CPU, a real PCIe x16 slot for a GPU (AI inference, hardware transcode, a gaming VM), standard DIMMs, and more storage slots than a mini PC — in a shelf-sized case. A &lt;strong>used-parts build&lt;/strong> chases maximum capability per dollar by mixing second-hand enterprise or consumer components into a tower.&lt;/p>
&lt;p>&lt;strong>Who it&amp;rsquo;s for:&lt;/strong> Builders who want a discrete GPU, more than ~64 GB of RAM, or expansion cards, and who are comfortable picking parts and assembling. The cost is money (ITX motherboards and cases carry a premium) and effort (you are the integrator and the warranty). It is the next step up from a mini PC, not the starting point.&lt;/p>
&lt;p>Two routes, two guides: the &lt;a href="https://techfuelhq.com/homelab/mini-itx-homelab-build-2026/">Mini-ITX homelab build guide&lt;/a> for a small, quiet, GPU-capable box, and the &lt;a href="https://techfuelhq.com/homelab/800-dollar-proxmox-server-used-parts-2026/">$800 used-parts Proxmox server&lt;/a> for the maximum-capability-per-dollar path.&lt;/p>
&lt;h3 id="5-off-the-shelf-or-diy-nas--when-storage-is-the-point">5. Off-the-shelf or DIY NAS — when storage is the point&lt;/h3>
&lt;p>Sometimes the &amp;ldquo;server&amp;rdquo; you want is really a storage appliance: a place to keep files, media, and backups with drive redundancy, running quietly and independently of whatever else you tinker with. That is a NAS. You can buy a turnkey unit (Synology, QNAP, UGREEN) for the least-fuss path, or build one running TrueNAS, Unraid, or OpenMediaVault for more capacity and control per dollar.&lt;/p>
&lt;p>&lt;strong>Who it&amp;rsquo;s for:&lt;/strong> Anyone whose primary need is bulk storage with redundancy rather than compute, anyone who wants their storage layer to stay up even while they break and rebuild their compute node, and households centralizing photos, media, and backups. Many mature homelabs run &lt;em>both&lt;/em> — a quiet compute node plus a separate NAS.&lt;/p>
&lt;p>For the build side of this class, including the 2026 hard-drive-shortage angle, see &lt;a href="https://techfuelhq.com/homelab/best-budget-nas-builds-2025/">Best Budget NAS Build 2026&lt;/a>.&lt;/p>
&lt;h2 id="the-honesty-section-why-a-used-rack-server-is-usually-the-wrong-first-homelab">The honesty section: why a used rack server is usually the wrong first homelab&lt;/h2>
&lt;p>The internet loves the cheap-rack-server flex, so it is worth being blunt about why it bites most newcomers.&lt;/p>
&lt;p>&lt;strong>Noise.&lt;/strong> A used Dell R720-class rack server at idle measures roughly 50–55 dBA at one meter — about the volume of a conversation happening next to you, constantly. Under load it climbs to 70–80 dBA. A mini PC at idle is effectively silent. Unless your server lives behind a closed door away from where you live, the rack server is unlivable, and &amp;ldquo;I&amp;rsquo;ll just put it in the closet&amp;rdquo; underestimates how far that whine carries.&lt;/p>
&lt;p>&lt;strong>Power.&lt;/strong> A rack server commonly idles at 80–120 W; a mini PC idles at 10–18 W. On a machine that runs 24/7 that is not a rounding error — it is the difference between a few dollars a month and a noticeable line on your power bill, and it persists for the entire life of the server. The full region-by-region math, including what each class costs annually, is in &lt;a href="https://techfuelhq.com/homelab/24-7-homelab-idle-power-costs-2026/">24/7 Homelab Idle Power Costs&lt;/a>.&lt;/p>
&lt;p>&lt;strong>Space and heat.&lt;/strong> Rack gear is deep, heavy, and dumps real heat into the room. It assumes a rack, rails, and airflow most homes do not have.&lt;/p>
&lt;p>The community consensus that shows up over and over in r/homelab &amp;ldquo;if I started over&amp;rdquo; threads is consistent: begin with a quiet, low-power box — a mini PC or a used SFF desktop — learn the software, and only move to enterprise gear once you have hit a real wall (RAM, drive bays, or remote management) that the small box genuinely cannot clear. The cheap rack server is a great &lt;em>second&lt;/em> or &lt;em>specialized&lt;/em> server, not a great first one.&lt;/p>
&lt;h2 id="the-decision-rule">The decision rule&lt;/h2>
&lt;p>Walk it top to bottom and stop at the first match:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>If your server lives in a room you sit in&lt;/strong> → quiet class only. Start with a &lt;strong>new mini PC&lt;/strong> (cleanest) or a &lt;strong>used SFF desktop&lt;/strong> (cheapest). Do not buy a rack server.&lt;/li>
&lt;li>&lt;strong>If your main goal is bulk storage with redundancy&lt;/strong> → a &lt;strong>NAS&lt;/strong> (buy off-the-shelf for least fuss, build it for capacity per dollar).&lt;/li>
&lt;li>&lt;strong>If you want the cheapest possible way to learn Proxmox&lt;/strong> → a &lt;strong>used SFF desktop&lt;/strong> under $200, and add a second one later to learn clustering.&lt;/li>
&lt;li>&lt;strong>If you need a GPU, big DIMMs, or expansion cards&lt;/strong> and you can live in a room with the box, or you want it shelf-sized → a &lt;strong>DIY Mini-ITX build&lt;/strong>.&lt;/li>
&lt;li>&lt;strong>If you genuinely need 128 GB+ RAM cheap, 8+ drive bays, or iDRAC/iLO, AND you have a basement/closet/dedicated room&lt;/strong> → a &lt;strong>used enterprise server&lt;/strong> (a tower if you want it quieter, a rack if noise truly does not matter).&lt;/li>
&lt;li>&lt;strong>If you are not sure how much hardware you need&lt;/strong> → settle that first with the &lt;a href="https://techfuelhq.com/homelab/proxmox-hardware-requirements-2026/">Proxmox hardware requirements guide&lt;/a>, then come back and re-run this rule.&lt;/li>
&lt;/ul>
&lt;p>A large share of homelabs that have been running for a year or two converge on the same shape: one quiet, low-power compute node (mini PC or SFF) doing the day-to-day work, plus a separate NAS for storage, with enterprise gear added only for a specific job it is uniquely good at. If you build toward that from the start, you rarely buy the wrong thing twice.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>Search volume, keyword difficulty, and search intent for &amp;ldquo;homelab server&amp;rdquo; / &amp;ldquo;servers for homelab&amp;rdquo; / &amp;ldquo;home lab server&amp;rdquo;: DataForSEO Labs and Google Ads keyword data, accessed 2026-06-19 (head term ~1,600/mo, KD 12, navigational + commercial intent).&lt;/li>
&lt;li>Live SERP and People Also Ask for &amp;ldquo;homelab server&amp;rdquo;: DataForSEO Google organic results, accessed 2026-06-19 (Reddit r/homelab, joekarlsson.com &amp;ldquo;How to get started building a Homelab server in 2026&amp;rdquo;, stormagic.com, dev.to build logs).&lt;/li>
&lt;li>Noise, idle power, RAM, and three-year ownership figures by server class: TechFuel HQ first-party analysis in &lt;a href="https://techfuelhq.com/homelab/used-enterprise-vs-mini-pc-homelab-2026/">Used Enterprise Server vs Mini PC for Homelab&lt;/a> and &lt;a href="https://techfuelhq.com/homelab/24-7-homelab-idle-power-costs-2026/">24/7 Homelab Idle Power Costs&lt;/a>, with mini PC idle figures measured at the wall in &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">Best Mini PC for a Homelab 2026&lt;/a>.&lt;/li>
&lt;li>&amp;ldquo;Start with a mini PC or used SFF, not a loud rack&amp;rdquo; newcomer consensus: r/homelab &amp;ldquo;if you could start your homelab over&amp;rdquo; discussion threads (top of the live SERP for the head term), accessed 2026-06-19.&lt;/li>
&lt;/ul></description></item><item><title>The $2,500 RTX 5080 + 7800X3D 4K Build for 2026</title><link>https://techfuelhq.com/pc-builds/2500-dollar-7800x3d-rtx-5080-4k-build-2026/</link><pubDate>Fri, 19 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/pc-builds/2500-dollar-7800x3d-rtx-5080-4k-build-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-19 · ~15 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence which products get recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;picture style="display:block;">
&lt;source type="image/webp" srcset="https://techfuelhq.com/images/pc-builds/2500-7800x3d-rtx-5080-4k-build-2026.webp" />
&lt;img src="https://techfuelhq.com/images/pc-builds/2500-7800x3d-rtx-5080-4k-build-2026.jpg" alt="The $2,500-class 4K gaming PC: AMD Ryzen 7 7800X3D, ASUS ROG Astral RTX 5080 OC 16GB, B650 motherboard, DDR5-6000, 850W ATX 3.1 power supply and a 2TB Gen4 NVMe, built for 4K high-to-ultra gaming." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;/picture>
&lt;p>This is the rig I actually run, priced as a build you can put together today. A Ryzen 7 7800X3D paired with an RTX 5080, on AM5, with the memory, storage, cooling, and power supply that make a 4K card behave like one. The headline parts (CPU and GPU) come to about $1,570 in June 2026; the full build lands in the $2,500 to $2,900 range depending on the RTX 5080 model you choose and where the 2026 memory and storage shortage has prices parked the week you buy.&lt;/p>
&lt;p>I am writing this one differently from a spec-sheet build. The GPU benchmarks below are not lifted off a launch slide or paraphrased from a YouTube video. They are first-party numbers I measured on my own ASUS ROG Astral RTX 5080 OC, on this exact 7800X3D platform, and published in full in the &lt;a href="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/">open bench dataset&lt;/a>. Where I lean on someone else&amp;rsquo;s testing for broader context, I name the source. That is the whole point of this site.&lt;/p>
&lt;p>If you want the framework behind every choice here rather than the receipt, the &lt;a href="https://techfuelhq.com/pc-builds/how-to-choose-pc-build-2026/">how to choose a PC build guide&lt;/a> walks the decision in order. This article is the high-end worked example.&lt;/p>
&lt;h2 id="who-this-build-is-for-and-who-it-isnt">Who this build is for (and who it isn&amp;rsquo;t)&lt;/h2>
&lt;p>This is a 4K build. If you game on a 1440p monitor, you are overpaying for a card you cannot fully use, and the &lt;a href="https://techfuelhq.com/pc-builds/1500-dollar-rtx-5060-ti-1440p-build-2026/">$1,500 RTX 5060 Ti 1440p build&lt;/a> is the better receipt for you. The 5080 earns its price on a 4K panel — a 4K 144Hz monitor or &lt;a href="https://techfuelhq.com/articles/aorus-fo48u-review/">a 4K OLED&lt;/a> — where its raw output and DLSS 4 Multi-Frame Generation have somewhere to go.&lt;/p>
&lt;p>It is also a build for people who want one machine that does more than game. The 16GB of GDDR7 and 32-64GB of system RAM mean this same box runs &lt;a href="https://techfuelhq.com/articles/1000-local-ai-workstation-rtx-5080-2026/">local AI models&lt;/a>, handles 4K video work, and doubles as a serious workstation. If pure gaming is the only goal and budget is tight, you do not need to be here — the 5080 is a want, not a need, above 1440p.&lt;/p>
&lt;p>&lt;strong>The one-line verdict:&lt;/strong> for 4K high-to-ultra gaming with real headroom for ray tracing and AI work, a 7800X3D + RTX 5080 is the build that makes sense in 2026 — provided you buy the 7800X3D and not the pricier 9800X3D, because at 4K you will not feel the difference.&lt;/p>
&lt;h2 id="the-parts-list-with-june-2026-prices">The parts list with June 2026 prices&lt;/h2>
&lt;p>Every price below is a real US price I confirmed in June 2026, with a source. Two line items — RAM and storage — are caught in a genuine 2026 price spike driven by AI demand draining the DRAM and NAND supply, so I have given those as ranges and told you where to check live pricing. Tax is not included. The &amp;ldquo;as tested&amp;rdquo; column is the exact part on my bench; the recommended column is the sensible buy if you are building fresh.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Part&lt;/th>
&lt;th scope="col">Recommended (build fresh)&lt;/th>
&lt;th scope="col">As tested (my rig)&lt;/th>
&lt;th scope="col">Price (June 2026)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>CPU&lt;/td>
&lt;td>AMD Ryzen 7 7800X3D (8C/16T, AM5)&lt;/td>
&lt;td>Ryzen 7 7800X3D&lt;/td>
&lt;td>~$320&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GPU&lt;/td>
&lt;td>RTX 5080 16GB (standard AIB)&lt;/td>
&lt;td>ASUS ROG Astral RTX 5080 OC&lt;/td>
&lt;td>$1,250+&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Motherboard&lt;/td>
&lt;td>B650E ATX (PCIe 5.0, Wi-Fi)&lt;/td>
&lt;td>ASUS ROG STRIX B650-A Gaming WiFi&lt;/td>
&lt;td>~$180-200&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>RAM&lt;/td>
&lt;td>32GB DDR5-6000 CL30 (2×16GB)&lt;/td>
&lt;td>64GB DDR5-6000 (2×32GB)&lt;/td>
&lt;td>$120-400&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Storage&lt;/td>
&lt;td>2TB PCIe Gen4 NVMe&lt;/td>
&lt;td>Samsung 970 EVO Plus 1TB (PCIe 3.0, owned)&lt;/td>
&lt;td>$200-285&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Cooler&lt;/td>
&lt;td>360mm AIO, or a good air tower&lt;/td>
&lt;td>NZXT Kraken 360&lt;/td>
&lt;td>$110-200&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>PSU&lt;/td>
&lt;td>850W ATX 3.1, 80+ Gold&lt;/td>
&lt;td>EVGA SuperNOVA 1000 GT (1000W)&lt;/td>
&lt;td>$110-130&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Case&lt;/td>
&lt;td>Dual-chamber or mesh mid-tower&lt;/td>
&lt;td>HYTE Y60&lt;/td>
&lt;td>$150&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>OS&lt;/td>
&lt;td>Windows 11 Home&lt;/td>
&lt;td>Windows 11 Home&lt;/td>
&lt;td>~$40&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Total (recommended)&lt;/strong>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;strong>~$2,500-2,900&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>A few notes on the line items that matter.&lt;/p>
&lt;p>&lt;strong>CPU — Ryzen 7 7800X3D (~$320).&lt;/strong> This is the value gaming chip, and the reason this build does not waste money (&lt;a href="https://www.amazon.com/dp/B0BTZB7F88?tag=techfuelhq-20" rel="nofollow sponsored">Ryzen 7 7800X3D on Amazon&lt;/a>). Tom&amp;rsquo;s Hardware tracked it dropping to &lt;a href="https://www.tomshardware.com/pc-components/one-of-amds-best-gaming-cpus-hits-an-all-time-low-price-ryzen-7-7800x3d-on-sale-for-less-than-usd320" rel="noopener">$319, an all-time low and $20 below its previous low&lt;/a>, and &lt;a href="https://videocardz.com/newz/amd-ryzen-7-7800x3d-drops-to-324-99-ryzen-7-9850x3d-now-25-cheaper" rel="noopener">VideoCardz logged it at $324.99&lt;/a> around the same time. Call it $320-340 depending on the day. The longer case for it over the 9800X3D is in the &lt;a href="https://techfuelhq.com/articles/7800x3d-vs-9800x3d-upgrade-2026/">7800X3D vs 9800X3D upgrade guide&lt;/a> and the &lt;a href="https://techfuelhq.com/reviews/ryzen-7-7800x3d-review-2026/">7800X3D long-term review&lt;/a>; the short version is in the benchmark section below.&lt;/p>
&lt;p>&lt;strong>GPU — RTX 5080 16GB ($1,250 and up).&lt;/strong> MSRP is $999 for the Founders Edition, but in June 2026 the cheapest in-stock new card on &lt;a href="https://bestvaluegpu.com/history/new-and-used-rtx-5080-price-history-and-specs/" rel="noopener">Best Value GPU&amp;rsquo;s tracker was $1,249&lt;/a>, with standard models clustering in the $1,300-$1,450 band and premium variants like my ASUS ROG Astral OC running up toward $1,900. Buy a standard dual- or triple-fan card in the $1,250-$1,350 range; the premium models buy you a quieter cooler and a small factory overclock, not a different tier of performance. My own &lt;a href="https://techfuelhq.com/gpu-reviews/rog-astral-rtx-5080-oc-review-2026/">ROG Astral RTX 5080 review&lt;/a> measures exactly how much that factory OC is worth (about 2-3% for free), and the answer is: not enough to pay a $500 premium for.&lt;/p>
&lt;p>&lt;strong>Motherboard — B650E, ~$180-200.&lt;/strong> My bench runs an ASUS ROG STRIX B650-A. For a fresh build I would spec a B650E board for the PCIe 5.0 x16 slot, which lets a future GPU run at full Gen5 bandwidth. Current ASUS B650E listings sit around &lt;a href="https://www.bestbuy.com/product/asus-tuf-gaming-b650e-plus-wifi-socket-am5-amd-b650-atx-ddr5-wi-fi-7-motherboard-black/JJGGLHLTKG" rel="noopener">$180-190 on Best Buy and Micro Center&lt;/a>. B650E is the no-regret choice: it takes the 7800X3D today and any AM5 chip through Zen 6 with a BIOS update.&lt;/p>
&lt;p>&lt;strong>RAM — 32GB DDR5-6000 CL30, $120-400.&lt;/strong> This is the line that hurts in 2026. A memory shortage tied to AI infrastructure demand has sent DDR5 prices up several-fold (&lt;a href="https://techfuelhq.com/articles/ram-ssd-price-crisis-2026/">the full breakdown of why&lt;/a>): Tom&amp;rsquo;s Hardware&amp;rsquo;s &lt;a href="https://www.tomshardware.com/pc-components/ram/ram-price-index-2026-lowest-price-on-ddr5-and-ddr4-memory-of-all-capacities" rel="noopener">RAM price tracker&lt;/a> and TweakTown&amp;rsquo;s reporting that &lt;a href="https://www.tweaktown.com/news/109033/its-official-64gb-of-ddr5-6000-ram-now-costs-way-more-than-a-playstation-5-console/index.html" rel="noopener">64GB of DDR5-6000 now costs more than a PlayStation 5&lt;/a> tell the story. A solid value 32GB kit can still be found near $120-150; name-brand CL30 kits run $300-540. Buy 32GB (2×16GB) at DDR5-6000 CL30 for the AM5 sweet spot — I run 64GB only because I keep VMs and local models resident, which is the one case where &lt;a href="https://techfuelhq.com/articles/how-much-ram-do-you-need-2026/">more RAM actually earns its price&lt;/a>. Check &lt;a href="https://pcpartpicker.com/products/memory/" rel="noopener">PCPartPicker&lt;/a> for the live number the week you buy; this is the single most volatile part in the build.&lt;/p>
&lt;p>&lt;strong>Storage — 2TB PCIe Gen4 NVMe, $200-285.&lt;/strong> Same crisis, different chips. NAND prices are climbing for the same AI-demand reason, and Tom&amp;rsquo;s Hardware&amp;rsquo;s &lt;a href="https://www.tomshardware.com/pc-components/ssds/ssd-price-tracking-2026-lowest-price-on-every-m-2-ssd" rel="noopener">SSD price tracker&lt;/a> shows drives that were $150 now sitting near $285. Get a 2TB Gen4 drive with DRAM and a five-year warranty — Gen5 runs hotter and costs more for gains you will not feel in games. My bench drive is an older 1TB; on a 4K rig where modern installs run 150GB each, 2TB is the floor.&lt;/p>
&lt;p>&lt;strong>Cooler — 360mm AIO or a good air tower, $110-200.&lt;/strong> The 7800X3D is a cool 65W-class gaming chip — a quality dual-tower air cooler handles it silently and is the cheaper, no-pump-to-fail choice. I run an NZXT Kraken 360 because the LCD looks right behind glass and I had it on the bench; the &lt;a href="https://nzxt.com/products/c850-gold-atx" rel="noopener">NZXT Kraken Core 360 sits near $110-130&lt;/a>. Match the cooler to the chip, not to the GPU — the 5080 cools itself.&lt;/p>
&lt;p>&lt;strong>PSU — 850W ATX 3.1, $110-130.&lt;/strong> Fully modular, ATX 3.1, with the native 12V-2x6 connector so the 5080 plugs in without an adapter daisy-chain. The &lt;a href="https://www.newegg.com/insider/best-80-plus-gold-power-supplies-for-high-end-pc-builds-in-2026/" rel="noopener">NZXT C850 Gold and Cooler Master MWE Gold 850 V3 both land near $90-120&lt;/a>. I run a 1000W EVGA SuperNOVA because I have had a supply die mid-game and now overbuy, but the measured draw (below) says 850W is correct.&lt;/p>
&lt;p>&lt;strong>Case — dual-chamber or mesh mid-tower, ~$150.&lt;/strong> I run a &lt;a href="https://hyte.com/store/y60" rel="noopener">HYTE Y60 at $149.99&lt;/a>. It is a beautiful case with one real warning: the panoramic glass design makes GPU clearance tight, and a thick triple-fan 5080 needs checking against the spec before you buy. A simpler high-airflow mesh tower is the safer pick if you do not want to fuss with clearance.&lt;/p>
&lt;h2 id="4k-gaming-benchmarks-first-party-numbers-on-this-exact-rig">4K gaming benchmarks: first-party numbers on this exact rig&lt;/h2>
&lt;p>Here is where this build article earns its keep. The numbers in this table were measured by me, on my own ASUS ROG Astral RTX 5080 OC running on this 7800X3D platform, captured with HWiNFO64 logging and published in full — with 1% lows, methodology, and the raw dataset files — in the &lt;a href="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/">open bench dataset&lt;/a>. These are demanding, ray-tracing-forward titles, run at native 4K, because that is where a 5080 either holds up or doesn&amp;rsquo;t.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Game (4K)&lt;/th>
&lt;th scope="col">Avg FPS&lt;/th>
&lt;th scope="col">1% Low&lt;/th>
&lt;th scope="col">Settings&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Cyberpunk 2077&lt;/td>
&lt;td>58&lt;/td>
&lt;td>49&lt;/td>
&lt;td>Ultra, raster, no upscaling&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Cyberpunk 2077&lt;/td>
&lt;td>50&lt;/td>
&lt;td>41&lt;/td>
&lt;td>RT-Ultra + DLSS 4 Quality&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Cyberpunk 2077&lt;/td>
&lt;td>19&lt;/td>
&lt;td>15&lt;/td>
&lt;td>Path Tracing, native, no DLSS&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Alan Wake 2&lt;/td>
&lt;td>49&lt;/td>
&lt;td>38&lt;/td>
&lt;td>RT + DLSS 4 Quality&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Black Myth: Wukong&lt;/td>
&lt;td>34&lt;/td>
&lt;td>27&lt;/td>
&lt;td>Cinematic preset&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The 1% lows run about 80-85% of the average across the rasterized and DLSS-Quality passes, which is a healthy frame-time consistency profile — no stutter, just a steady floor. The exception is native path tracing (19/15), where the card is bottlenecked so hard that the average frame and the slowest frame are basically the same. That is what 4K path tracing without upscaling looks like on any card short of a 5090, and it is exactly the problem DLSS 4 exists to solve.&lt;/p>
&lt;img src="https://techfuelhq.com/images/gpu-reviews/rog-astral-rtx-5080/chart-06-4k-gaming.svg" alt="4K average FPS on my Astral RTX 5080 OC: Cyberpunk Ultra raster 58, RT-Ultra + DLSS Quality 50, Alan Wake 2 RT + DLSS Quality 49, Black Myth Wukong Cinematic 34, Cyberpunk native path tracing 19 (TechFuelHQ first-party)." width="1200" height="700" loading="lazy" decoding="async" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;h3 id="dlss-4-multi-frame-generation-what-makes-4k-path-tracing-playable">DLSS 4 Multi-Frame Generation: what makes 4K path tracing playable&lt;/h3>
&lt;p>The single most important chart for a Blackwell card is what happens to that unplayable 19 FPS path-traced run when you turn on DLSS 4. These are my measured numbers on Cyberpunk 2077 at 4K with RT Overdrive (path tracing), including the PC latency at each step, because frame generation is worthless if it adds the input lag back:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Mode&lt;/th>
&lt;th scope="col">FPS&lt;/th>
&lt;th scope="col">PC Latency&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Native path tracing (no DLSS, no FG)&lt;/td>
&lt;td>19&lt;/td>
&lt;td>95 ms&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>DLSS 4 Quality (no frame gen)&lt;/td>
&lt;td>40&lt;/td>
&lt;td>45 ms&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>+ Multi-Frame Gen 2×&lt;/td>
&lt;td>90&lt;/td>
&lt;td>55 ms&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>+ Multi-Frame Gen 4×&lt;/td>
&lt;td>135&lt;/td>
&lt;td>62 ms&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The story holds up under measurement. DLSS Quality alone more than doubles the frame rate &lt;em>and halves the latency&lt;/em>, because Reflex is scheduling a smaller render workload. Stacking MFG 2× doubles the frame rate again for a 10ms latency cost, and MFG 4× lands at a smooth 135 FPS while latency stays well below the native baseline. Across the full ladder, frame rate climbs about 7× and the input lag never gets worse than where it started. That is the actual experience of path-traced 4K on a 5080: native is a slideshow, DLSS 4 turns it into a smooth, responsive game.&lt;/p>
&lt;h3 id="how-the-5080-sits-in-the-broader-4k-picture">How the 5080 sits in the broader 4K picture&lt;/h3>
&lt;p>My dataset is deliberately RT-heavy. For breadth across a wider raster suite, published testing fills in the rest. KitGuru&amp;rsquo;s review found that &lt;a href="https://www.kitguru.net/components/graphic-cards/dominic-moass/nvidia-rtx-5080-review-efficiency-gains-but-a-performance-letdown/all/1/" rel="noopener">&amp;ldquo;at 4K the gains over the 4080 Super do get slightly wider, with the 5080 now 13% faster on average,&amp;rdquo;&lt;/a> while it &amp;ldquo;still lags behind the RTX 4090 by 15%.&amp;rdquo; That third-party +13%-over-the-4080-Super figure is a near-exact match for my own first-party generational index, which put the 5080 Founders Edition at 114 against a 4080 Super baseline of 100 (+14%) — two independent measurements landing in the same place. The takeaway: the 5080 is comfortably a 4K card in raster, mid-100s FPS in most mainstream titles, a notch behind the much pricier 4090, and the DLSS 4 ladder above is what extends that to the heaviest ray-traced games.&lt;/p>
&lt;img src="https://techfuelhq.com/images/gpu-reviews/rog-astral-rtx-5080/chart-01-generational-positioning.svg" alt="4K raster generational index normalized to RTX 4080 Super = 100: RTX 4080 at 96, RTX 5080 FE at 114, Astral 5080 OC at 123 (TechFuelHQ first-party)." width="1200" height="660" loading="lazy" decoding="async" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;h2 id="do-you-actually-need-the-9800x3d-the-question-the-serp-skips">Do you actually need the 9800X3D? (The question the SERP skips)&lt;/h2>
&lt;p>Search &amp;ldquo;RTX 5080 build&amp;rdquo; and most results pair it with a Ryzen 7 9800X3D. That is the default, and for a 4K build it is the wrong default for most people.&lt;/p>
&lt;p>At 4K, the GPU is the bottleneck in nearly every game. The CPU sets up frames and then waits on the 5080 to draw them. Published reviews from Digital Foundry, Gamers Nexus, and Hardware Unboxed consistently place the 9800X3D about 10-20% ahead of the 7800X3D in CPU-limited 1080p testing — but as I cover in the &lt;a href="https://techfuelhq.com/articles/7800x3d-vs-9800x3d-upgrade-2026/">full 7800X3D vs 9800X3D breakdown&lt;/a>, that gap shrinks to roughly 2-5% at 4K, because both chips spend their time GPU-bound. You are paying a $150-180 premium for the 9800X3D to recover a few frames you will not see on a 4K panel.&lt;/p>
&lt;p>The 9800X3D is the right call in two cases: you also game at 1080p competitively at very high refresh, or you run heavy production workloads (the Zen 5 chip is meaningfully faster in Blender and compilation). If production is the larger half of that job, the comparison to read is &lt;a href="https://techfuelhq.com/articles/9950x3d-vs-9800x3d-gaming-2026/">9950X3D vs 9800X3D&lt;/a>, where the 16-core chip buys a large multi-core lead without costing meaningful gaming performance. For a build whose entire reason to exist is 4K gaming, the 7800X3D is the chip, and the money saved goes further as a 2TB-to-4TB storage bump or a better monitor.&lt;/p>
&lt;h2 id="power-what-this-build-actually-pulls">Power: what this build actually pulls&lt;/h2>
&lt;p>This is the part people guess at. Here is what I measured, not what a box claims. On my own card, board power ran &lt;a href="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/">266-340W in games and topped out near 360W under a sustained stress load&lt;/a>, with brief transient spikes into the 500-600W range — the spikes are why a quality ATX 3.1 supply matters more than a big wattage number. The 7800X3D adds well under 100W under a gaming load. That puts real sustained system draw around 450-500W.&lt;/p>
&lt;p>An 850W ATX 3.1 unit covers that with clean headroom for the transient spikes and a future GPU upgrade, which is why it is the recommended part even though I personally run 1000W. Do not eyeball it — run your exact components through the &lt;a href="https://techfuelhq.com/tools/psu-wattage-calculator/">PSU wattage calculator&lt;/a> for a sized recommendation, and if you want to know what the rig costs to run, the &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">power cost calculator&lt;/a> turns that wattage into a monthly electric bill. For the record, the 5080 is also strikingly efficient for its performance: KitGuru measured it averaging about &lt;a href="https://www.kitguru.net/components/graphic-cards/dominic-moass/nvidia-rtx-5080-review-efficiency-gains-but-a-performance-letdown/all/1/" rel="noopener">306W at 4K, just 6W above the 4080 Super&lt;/a> it comfortably outruns.&lt;/p>
&lt;h2 id="build-notes-from-my-own-bench">Build notes from my own bench&lt;/h2>
&lt;p>A few specifics from running this platform that the spec sheet will not tell you.&lt;/p>
&lt;p>&lt;strong>Memory speed on AM5.&lt;/strong> My kit is rated DDR5-6000 but I run it at 5800. Getting DDR5 fully stable at its rated speed on AM5 can be a fight, and after a weekend of BIOS tuning I dropped to 5800 and stopped. In actual gaming the difference is 1-2 FPS. Set EXPO, confirm it boots stable, and do not lose a weekend chasing the last 200 MHz.&lt;/p>
&lt;p>&lt;strong>GPU clearance in a glass case.&lt;/strong> The HYTE Y60&amp;rsquo;s panoramic glass makes for a gorgeous build and a tight fit. When I had a thick RTX 4080 in here previously, the front glass panel would not seat. Measure your specific 5080 model&amp;rsquo;s length and thickness against the case spec before you order — a triple-fan OC card is a real clearance risk in dual-chamber cases. The &lt;a href="https://techfuelhq.com/tools/pc-builder/">PC builder tool&lt;/a> checks case-clearance and PSU compatibility as you pick parts.&lt;/p>
&lt;p>&lt;strong>The 12V-2x6 connector.&lt;/strong> Seat the power cable into the 5080 fully before you slot the card, and confirm the click. The connector is short and stiff, and given the 500-600W transient spikes this card produces, a partially-seated connector is the one failure you do not want. Use the native ATX 3.1 cable, not a third-party adapter.&lt;/p>
&lt;p>&lt;strong>Undervolt the GPU.&lt;/strong> The 5080 responds well to a light undervolt — you can shave board power and temperature with no measurable FPS loss. I cover the exact curve in the &lt;a href="https://techfuelhq.com/articles/rtx-5080-undervolt-guide-2026/">RTX 5080 undervolt guide&lt;/a>; it is the single best 20 minutes you can spend after the build is done.&lt;/p>
&lt;h2 id="cheaper-and-pricier-alternatives">Cheaper and pricier alternatives&lt;/h2>
&lt;p>This build is one point on a line, not the only answer.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Step down to 1440p (~$1,500):&lt;/strong> if you are not on a 4K panel, the &lt;a href="https://techfuelhq.com/pc-builds/1500-dollar-rtx-5060-ti-1440p-build-2026/">$1,500 RTX 5060 Ti 1440p build&lt;/a> is the honest recommendation — same no-regret philosophy, a card sized correctly for 1440p, and a much smaller bill.&lt;/li>
&lt;li>&lt;strong>The same platform, a smaller GPU:&lt;/strong> the 7800X3D + B650 + DDR5-6000 base here is the right foundation at several price points. Drop to an RTX 5070 Ti and you have a strong entry-4K build for a few hundred less; the GPU is the only part that changes.&lt;/li>
&lt;li>&lt;strong>Build it yourself, priced live:&lt;/strong> the &lt;a href="https://techfuelhq.com/tools/budget-builder/">budget builder&lt;/a> sorts parts by what you can actually spend, and the &lt;a href="https://techfuelhq.com/tools/pc-builder/">PC builder&lt;/a> checks compatibility as you swap. Component pricing in 2026 moves weekly — use the tools rather than trusting any static total, including this one.&lt;/li>
&lt;/ul>
&lt;h2 id="verdict">Verdict&lt;/h2>
&lt;p>For 4K gaming in 2026, a 7800X3D + RTX 5080 is the build that makes sense — fast enough to drive a 4K panel at high-to-ultra, efficient enough to live in a quiet case, and flexible enough to run local AI and creative work as a second job. The two decisions that keep it honest are buying the 7800X3D instead of the 9800X3D (you will not feel the difference at 4K) and buying a standard RTX 5080 instead of a $1,900 premium variant (you are paying for a cooler, not a tier).&lt;/p>
&lt;p>The only thing working against it in 2026 is the memory and storage shortage, which has turned RAM and NVMe into the line items most likely to move your total. Everything else is stable, the GPU is a genuine 4K card, and the numbers above are real — measured on the rig in front of me, with the &lt;a href="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/">full dataset&lt;/a> published so you can check my work.&lt;/p>
&lt;h2 id="related-on-techfuel-hq">Related on TechFuel HQ&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://techfuelhq.com/pc-builds/how-to-choose-pc-build-2026/">How to Choose Your PC Build: CPU, GPU, PSU, RAM (2026)&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/pc-builds/1500-dollar-rtx-5060-ti-1440p-build-2026/">The $1,500 RTX 5060 Ti 1440p Build&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/articles/7800x3d-vs-9800x3d-upgrade-2026/">Ryzen 7 7800X3D vs 9800X3D: Should You Upgrade?&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/gpu-reviews/rog-astral-rtx-5080-oc-review-2026/">ASUS ROG Astral RTX 5080 OC Review&lt;/a> · &lt;a href="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/">First-Party Bench Dataset&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/articles/1000-local-ai-workstation-rtx-5080-2026/">The $1,000 Local AI Workstation on an RTX 5080&lt;/a>&lt;/li>
&lt;li>A rig like this runs the most demanding games, but they need their anti-cheat happy: &lt;a href="https://techfuelhq.com/gaming/easy-anti-cheat-fix-guide-2026/">Easy Anti-Cheat fix guide&lt;/a> and &lt;a href="https://techfuelhq.com/gaming/star-citizen/">Star Citizen performance &amp;amp; troubleshooting&lt;/a>.&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tools/pc-builder/">PC Builder&lt;/a> · &lt;a href="https://techfuelhq.com/tools/psu-wattage-calculator/">PSU Wattage Calculator&lt;/a> · &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">Power Cost Calculator&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>TechFuelHQ first-party bench dataset — ASUS ROG Astral RTX 5080 OC (4K benchmarks, 1% lows, power, DLSS 4 MFG) — &lt;a href="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/" rel="noopener">https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/&lt;/a>&lt;/li>
&lt;li>Tom&amp;rsquo;s Hardware Ryzen 7 7800X3D all-time-low price — &lt;a href="https://www.tomshardware.com/pc-components/one-of-amds-best-gaming-cpus-hits-an-all-time-low-price-ryzen-7-7800x3d-on-sale-for-less-than-usd320" rel="noopener">https://www.tomshardware.com/pc-components/one-of-amds-best-gaming-cpus-hits-an-all-time-low-price-ryzen-7-7800x3d-on-sale-for-less-than-usd320&lt;/a>&lt;/li>
&lt;li>VideoCardz Ryzen 7 7800X3D price — &lt;a href="https://videocardz.com/newz/amd-ryzen-7-7800x3d-drops-to-324-99-ryzen-7-9850x3d-now-25-cheaper" rel="noopener">https://videocardz.com/newz/amd-ryzen-7-7800x3d-drops-to-324-99-ryzen-7-9850x3d-now-25-cheaper&lt;/a>&lt;/li>
&lt;li>Best Value GPU RTX 5080 price tracker — &lt;a href="https://bestvaluegpu.com/history/new-and-used-rtx-5080-price-history-and-specs/" rel="noopener">https://bestvaluegpu.com/history/new-and-used-rtx-5080-price-history-and-specs/&lt;/a>&lt;/li>
&lt;li>KitGuru RTX 5080 review (4K performance + power) — &lt;a href="https://www.kitguru.net/components/graphic-cards/dominic-moass/nvidia-rtx-5080-review-efficiency-gains-but-a-performance-letdown/all/1/" rel="noopener">https://www.kitguru.net/components/graphic-cards/dominic-moass/nvidia-rtx-5080-review-efficiency-gains-but-a-performance-letdown/all/1/&lt;/a>&lt;/li>
&lt;li>Tom&amp;rsquo;s Hardware RAM price tracker 2026 — &lt;a href="https://www.tomshardware.com/pc-components/ram/ram-price-index-2026-lowest-price-on-ddr5-and-ddr4-memory-of-all-capacities" rel="noopener">https://www.tomshardware.com/pc-components/ram/ram-price-index-2026-lowest-price-on-ddr5-and-ddr4-memory-of-all-capacities&lt;/a>&lt;/li>
&lt;li>Tom&amp;rsquo;s Hardware SSD price tracker 2026 — &lt;a href="https://www.tomshardware.com/pc-components/ssds/ssd-price-tracking-2026-lowest-price-on-every-m-2-ssd" rel="noopener">https://www.tomshardware.com/pc-components/ssds/ssd-price-tracking-2026-lowest-price-on-every-m-2-ssd&lt;/a>&lt;/li>
&lt;li>TweakTown 64GB DDR5 price reporting — &lt;a href="https://www.tweaktown.com/news/109033/its-official-64gb-of-ddr5-6000-ram-now-costs-way-more-than-a-playstation-5-console/index.html" rel="noopener">https://www.tweaktown.com/news/109033/its-official-64gb-of-ddr5-6000-ram-now-costs-way-more-than-a-playstation-5-console/index.html&lt;/a>&lt;/li>
&lt;li>Newegg 80+ Gold PSU roundup 2026 — &lt;a href="https://www.newegg.com/insider/best-80-plus-gold-power-supplies-for-high-end-pc-builds-in-2026/" rel="noopener">https://www.newegg.com/insider/best-80-plus-gold-power-supplies-for-high-end-pc-builds-in-2026/&lt;/a>&lt;/li>
&lt;li>HYTE Y60 store listing — &lt;a href="https://hyte.com/store/y60" rel="noopener">https://hyte.com/store/y60&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>The Cheapest AM5 1080p Gaming PC You Can Build (2026)</title><link>https://techfuelhq.com/pc-builds/budget-am5-1080p-gaming-pc-2026/</link><pubDate>Fri, 19 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/pc-builds/budget-am5-1080p-gaming-pc-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-19 · ~11 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence which products get recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;picture style="display:block;">
&lt;source type="image/webp" srcset="https://techfuelhq.com/images/pc-builds/budget-am5-1080p-gaming-pc-2026.webp" />
&lt;img src="https://techfuelhq.com/images/pc-builds/budget-am5-1080p-gaming-pc-2026.jpg" alt="A budget AM5 1080p gaming PC: AMD Ryzen 5 7600, Radeon RX 9060 XT, a micro-ATX B650 board, 16GB DDR5-6000, a 1TB Gen4 NVMe and a 650W ATX 3.1 power supply in a mesh airflow case." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;/picture>
&lt;p>Here is the honest headline first: the $800 gaming PC does not exist in mid-2026. It did in 2025. A 2026 memory and storage shortage erased it, and the real entry price for a sensible new AM5 1080p build is now around $1,150 to $1,250 — up to roughly $1,350 if every part lands at the top of its price range. This article is that build — the cheapest machine I would actually tell someone to buy in mid-2026, the parts that make it, the prices with sources, and a clear explanation of where the extra money went so you are not blindsided at checkout.&lt;/p>
&lt;p>If you came here expecting $800, I am not going to pad a parts list with prices from last year to hit a number that no longer holds. The framework behind every choice below is in the &lt;a href="https://techfuelhq.com/pc-builds/how-to-choose-pc-build-2026/">how to choose a PC build guide&lt;/a>; this is the budget worked example, priced for the month you are reading it.&lt;/p>
&lt;h2 id="why-800-isnt-enough-anymore">Why $800 isn&amp;rsquo;t enough anymore&lt;/h2>
&lt;p>The budget build did not get worse. Two of its parts got expensive.&lt;/p>
&lt;p>Through 2026, an AI-infrastructure buildout drained the supply of DRAM and NAND flash, and the prices of RAM and SSDs climbed hard as a result. Tom&amp;rsquo;s Hardware&amp;rsquo;s &lt;a href="https://www.tomshardware.com/pc-components/ram/ram-price-index-2026-lowest-price-on-ddr5-and-ddr4-memory-of-all-capacities" rel="noopener">RAM price tracker&lt;/a> documents DDR5 kits that sold for $80-100 in late 2025 now starting in the hundreds, and a &lt;a href="https://www.tomshardware.com/pc-components/dram/the-ram-pricing-crisis-has-only-just-started-team-group-gm-warns-says-problem-will-get-worse-in-2026-as-dram-and-nand-prices-double-in-one-month" rel="noopener">Team Group executive warned&lt;/a> that DRAM and NAND contract prices rose 80-100% month-on-month and would keep climbing. SSDs followed: Tom&amp;rsquo;s Hardware&amp;rsquo;s &lt;a href="https://www.tomshardware.com/pc-components/ssds/ssd-price-tracking-2026-lowest-price-on-every-m-2-ssd" rel="noopener">SSD tracker&lt;/a> shows 1TB drives that were sub-$100 now sitting around $150-250, with popular models routinely out of stock.&lt;/p>
&lt;p>What that does to a budget build is specific. A 16GB DDR5-6000 kit that was a $90 afterthought now runs around $240, and a 1TB Gen4 SSD that was $70 is now around $150. That is roughly $250-300 of new cost dropped onto two parts that used to be cheap — and it lands hardest on a budget build, where every dollar already counted. The CPU, motherboard, power supply, cooler, and case are all about what they were. RAM and storage are the whole story. The deeper cause — AI and HBM demand pulling memory wafers off the consumer market — and when prices might ease are covered in &lt;a href="https://techfuelhq.com/articles/ram-ssd-price-crisis-2026/">why RAM and SSD prices tripled in 2026&lt;/a>.&lt;/p>
&lt;h2 id="the-parts-list-with-mid-2026-prices">The parts list with mid-2026 prices&lt;/h2>
&lt;p>Every price below is a real US price with a source — CPU, RAM, and SSD as of June 2026, and the GPU re-checked live on July 10, 2026. RAM, SSD, and the GPU are the volatile ones — they move daily right now and sell out fast, so treat them as a snapshot and check live pricing before you buy. Tax is not included.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Part&lt;/th>
&lt;th scope="col">Pick&lt;/th>
&lt;th scope="col">Price (mid-2026)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>CPU&lt;/td>
&lt;td>AMD Ryzen 5 7600 (6C/12T, AM5, includes Wraith Stealth cooler)&lt;/td>
&lt;td>~$160-210&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GPU&lt;/td>
&lt;td>AMD Radeon RX 9060 XT 8GB&lt;/td>
&lt;td>~$380-420&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Motherboard&lt;/td>
&lt;td>B650M micro-ATX (Gigabyte B650M Gaming Plus / ASRock B650M Pro RS)&lt;/td>
&lt;td>~$110&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>RAM&lt;/td>
&lt;td>16GB DDR5-6000 (2×8GB)&lt;/td>
&lt;td>~$240&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Storage&lt;/td>
&lt;td>1TB PCIe Gen4 NVMe (Silicon Power UD90, or a name-brand drive)&lt;/td>
&lt;td>~$150-200&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>PSU&lt;/td>
&lt;td>650W ATX 3.1, 80+ Bronze (Montech Beta 2 / MSI MAG A650BN)&lt;/td>
&lt;td>~$50-60&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Cooler&lt;/td>
&lt;td>Included with the 7600 (Wraith Stealth)&lt;/td>
&lt;td>$0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Case&lt;/td>
&lt;td>Budget mesh-front (Fractal Core 1000 / Phanteks G370A)&lt;/td>
&lt;td>~$50-70&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>OS&lt;/td>
&lt;td>Windows 11 Home&lt;/td>
&lt;td>~$0-40&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Total&lt;/strong>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;strong>~$1,140-1,350&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Notes on the line items that matter:&lt;/p>
&lt;p>&lt;strong>CPU — Ryzen 5 7600 (~$160-210).&lt;/strong> The cheapest sensible AM5 gaming chip, and it ships with a Wraith Stealth cooler, which saves you a cooler purchase on a budget build (&lt;a href="https://www.amazon.com/dp/B0BMQJWBDM?tag=techfuelhq-20" rel="nofollow sponsored">Ryzen 5 7600 on Amazon&lt;/a>). &lt;a href="https://www.microcenter.com/product/674517/amd-ryzen-5-7600-raphael-am5-38ghz-6-core-boxed-processor-wraith-stealth-cooler-included" rel="noopener">Micro Center had it at $159.99 in-store&lt;/a> (pickup only, includes the cooler); online it runs closer to $210. If a Micro Center is already in reach, its exclusive Ryzen 5 7600X3D is the 3D V-Cache version of this same six-core class — the &lt;a href="https://techfuelhq.com/articles/7600x3d-vs-7800x3d-value-2026/">7600X3D vs 7800X3D value comparison&lt;/a> covers what the stacked cache costs and what it returns. The Ryzen 5 7500F is about $30-40 cheaper if you can find it (it is an OEM chip sold mostly by marketplace sellers) and gaming performance is within ~2% — &lt;a href="https://tech4gamers.com/ryzen-5-7500f-vs-ryzen-5-7600/" rel="noopener">Tech4Gamers measured the 7600 just 2.3% ahead&lt;/a> — but the 7500F has no included cooler, which erases most of the savings on a budget build.&lt;/p>
&lt;p>&lt;strong>GPU — Radeon RX 9060 XT 8GB (~$380-420).&lt;/strong> The raster value leader at 1080p (&lt;a href="https://www.amazon.com/dp/B0F91K2KBX?tag=techfuelhq-20" rel="nofollow sponsored">RX 9060 XT 8GB on Amazon&lt;/a>). &lt;a href="https://bestvaluegpu.com/history/new-and-used-rx-9060-xt-price-history-and-specs/" rel="noopener">Best Value GPU&amp;rsquo;s tracker&lt;/a> listed it at $359 new on June 18, 2026, but by July 10, 2026 live Amazon listings had climbed to roughly $380 at the floor and $415-420 for a typical in-stock 8GB model, with 16GB versions starting around $450 — the memory shortage has spread to graphics-card GDDR, so budget another $20-60 over the June figure. Launch MSRP was $299; everything in this class sells well above MSRP right now. Published testing from &lt;a href="https://www.xda-developers.com/nvidia-rtx-5060-vs-amd-rx-9060-xt/" rel="noopener">XDA put it about 6% ahead of the RTX 5060 at 1080p&lt;/a>, with a 5-10% lead depending on the game, at the same MSRP. More on the GPU choice below.&lt;/p>
&lt;p>&lt;strong>RAM — 16GB DDR5-6000 (~$240).&lt;/strong> This is the part that hurts, and there is no way around it in 2026. 16GB (2×8GB) at DDR5-6000 is the right amount and speed for an AM5 budget build, and a real dual-channel kit runs around $240 right now per the &lt;a href="https://www.tomshardware.com/pc-components/ram/ram-price-index-2026-lowest-price-on-ddr5-and-ddr4-memory-of-all-capacities" rel="noopener">Tom&amp;rsquo;s Hardware tracker&lt;/a>. Watch for a trap: several &amp;ldquo;16GB DDR5-6000&amp;rdquo; listings near $195 are single 16GB sticks, not 2×8GB kits — single-channel memory measurably hurts gaming on Ryzen, so buy a matched two-stick kit. The &lt;a href="https://techfuelhq.com/articles/ddr5-ram-buying-guide-2025/">DDR5 buying guide&lt;/a> covers speed and timings.&lt;/p>
&lt;p>&lt;strong>Storage — 1TB Gen4 NVMe (~$150-200).&lt;/strong> The other crisis line. A 1TB Gen4 drive runs from about $150 for a value model (Silicon Power UD90) up to around $200 for a name-brand drive per the &lt;a href="https://www.tomshardware.com/pc-components/ssds/ssd-price-tracking-2026-lowest-price-on-every-m-2-ssd" rel="noopener">SSD tracker&lt;/a>; popular WD and Samsung models are frequently out of stock. 1TB is a tight but workable floor for a budget machine — add a second drive later when prices ease rather than overbuying capacity at peak.&lt;/p>
&lt;p>&lt;strong>Motherboard — B650M (~$110).&lt;/strong> A micro-ATX B650 board (Gigabyte B650M Gaming Plus WiFi, ASRock B650M Pro RS) gives you AM5, DDR5, PCIe, and a clean upgrade path to a future Ryzen chip with a BIOS update. No need for B650E or X670 on a budget 1080p build.&lt;/p>
&lt;p>&lt;strong>PSU — 650W ATX 3.1 (~$50-60).&lt;/strong> A quality 650W 80+ Bronze ATX 3.1 unit (Montech Beta 2, MSI MAG A650BN) is plenty for a sub-200W system and leaves headroom. Do not cheap out below a known brand here — run your exact parts through the &lt;a href="https://techfuelhq.com/tools/psu-wattage-calculator/">PSU wattage calculator&lt;/a> to confirm.&lt;/p>
&lt;p>&lt;strong>Case — budget mesh (~$50-70).&lt;/strong> Prioritize front-mesh airflow over looks at this price. The Fractal Core 1000, Phanteks G370A, and similar mesh towers land around $50-60 and keep the parts cool, which matters more than RGB.&lt;/p>
&lt;h2 id="the-gpu-choice-rx-9060-xt-rtx-5060-rx-7600-or-arc-b580">The GPU choice: RX 9060 XT, RTX 5060, RX 7600, or Arc B580&lt;/h2>
&lt;p>At roughly $290-420 there are four real options, and the build above picks the RX 9060 XT 8GB for a reason — but the right answer depends on what you value.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>RX 9060 XT 8GB (~$380-420) — the raster value pick.&lt;/strong> Fastest of the group at 1080p raster, with &lt;a href="https://www.xda-developers.com/nvidia-rtx-5060-vs-amd-rx-9060-xt/" rel="noopener">XDA measuring a 5-10% lead over the RTX 5060&lt;/a>. This is the default for pure 1080p gaming, though the shortage has pushed it up enough that the cheaper cards below are worth a hard look if the budget is tight.&lt;/li>
&lt;li>&lt;strong>RTX 5060 8GB (~$339) — the ray tracing / DLSS pick.&lt;/strong> Slightly slower in raster but stronger in ray tracing and with DLSS 4 Multi-Frame Generation. Worth it if RT and upscaling features matter to you.&lt;/li>
&lt;li>&lt;strong>RX 7600 8GB (~$279) — the cheapest entry.&lt;/strong> Last-gen but the lowest price in, and a fine 1080p card if the budget is truly tight.&lt;/li>
&lt;li>&lt;strong>Intel Arc B580 12GB (~$303) — the VRAM value pick.&lt;/strong> More VRAM than any of the 8GB cards for less money, which buys headroom; drivers have matured but are worth checking against the titles you play.&lt;/li>
&lt;/ul>
&lt;p>For the full head-to-head with benchmarks, the &lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5060-vs-rx-9060-xt/">RTX 5060 vs RX 9060 XT review&lt;/a> is the detailed comparison; this build defaults to the 9060 XT and treats the others as informed swaps.&lt;/p>
&lt;h2 id="is-8gb-of-vram-enough-at-1080p-in-2026">Is 8GB of VRAM enough at 1080p in 2026?&lt;/h2>
&lt;p>Short answer: yes at 1080p, with a ray-tracing caveat. Reviewer consensus is that 8GB still handles 1080p gaming in 2026 — &lt;a href="https://www.pcgamer.com/hardware/graphics-cards/my-real-world-testing-shows-8-gb-gpus-are-still-enough-for-gaming-in-2026-but-im-surprised-at-just-how-much-faster-the-16-gb-versions-are/" rel="noopener">PC Gamer&amp;rsquo;s real-world testing concluded 8GB GPUs are still enough for gaming&lt;/a> at that resolution, and &lt;a href="https://www.xda-developers.com/gamers-were-wrong-8-gb-of-vram-is-still-good-enough-in-2026/" rel="noopener">XDA&amp;rsquo;s testing&lt;/a> found 1080p users face far fewer VRAM compromises than 1440p or 4K players do.&lt;/p>
&lt;p>The honest caveat: the heaviest ray-traced titles and the highest texture presets can push past 8GB even at 1080p, and that is where you turn a setting down. If you want to avoid that entirely, the 16GB RX 9060 XT (&lt;del>$450) or the 12GB Arc B580 (&lt;/del>$300) buys the margin. For most people playing at 1080p high, 8GB is fine in 2026 — just not generous.&lt;/p>
&lt;h2 id="what-to-expect-from-this-build">What to expect from this build&lt;/h2>
&lt;p>This is a 1080p high-to-ultra machine, not a 1440p or 4K one. The RX 9060 XT comfortably drives modern AAA titles at 1080p with high settings and runs lighter and esports titles far above any monitor&amp;rsquo;s refresh you are likely to own at this budget. Pair it with a good 1080p 144Hz+ panel and the GPU has somewhere to put the frames. If you want 1440p instead, that is a different build — the &lt;a href="https://techfuelhq.com/pc-builds/1500-dollar-rtx-5060-ti-1440p-build-2026/">$1,500 RTX 5060 Ti 1440p build&lt;/a> is the next tier up, and the &lt;a href="https://techfuelhq.com/pc-builds/2500-dollar-7800x3d-rtx-5080-4k-build-2026/">$2,500 RTX 5080 4K build&lt;/a> is the 4K flagship.&lt;/p>
&lt;h2 id="where-to-cut-and-where-not-to">Where to cut, and where not to&lt;/h2>
&lt;p>If ~$1,150 is still over budget, the honest places to trim:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>GPU down to the RX 7600 (~$279)&lt;/strong> saves ~$80 and is still a capable 1080p card.&lt;/li>
&lt;li>&lt;strong>Skip the Windows license cost&lt;/strong> — you can install Windows 11 unactivated and add a key later, which is legal to run with minor cosmetic limits.&lt;/li>
&lt;li>&lt;strong>Reuse parts&lt;/strong> — a case, drive, or PSU from an old build is the cleanest saving, and the &lt;a href="https://techfuelhq.com/tools/budget-builder/">budget builder&lt;/a> helps you price a partial build.&lt;/li>
&lt;/ul>
&lt;p>Where not to cut: do not buy a single-stick 16GB module to save $40 (single-channel memory hurts Ryzen gaming), do not buy a no-name PSU, and do not drop below 16GB of RAM in 2026. Those are the false economies that make a budget build feel cheap instead of just affordable. Use the &lt;a href="https://techfuelhq.com/tools/pc-builder/">PC builder&lt;/a> to check compatibility as you swap parts.&lt;/p>
&lt;h2 id="verdict">Verdict&lt;/h2>
&lt;p>The cheapest gaming PC worth building in mid-2026 is an AM5 1080p machine around $1,150-1,250 as specced — up to roughly $1,350 at the top of every price range — a Ryzen 5 7600, an RX 9060 XT, 16GB of DDR5-6000, and a 1TB Gen4 drive. It is more than the $800 it would have cost a year ago, and most of the difference is the RAM and storage shortage — now with graphics cards selling above MSRP on top of it — not a worse build. If you need a machine now, this is the honest floor; if you can wait, there is no confirmed near-term price relief to wait for. Either way, the parts above are the right ones, and the prices are real as of mid-2026 (GPU re-checked July 10).&lt;/p>
&lt;h2 id="related-on-techfuel-hq">Related on TechFuel HQ&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://techfuelhq.com/pc-builds/how-to-choose-pc-build-2026/">How to Choose Your PC Build: CPU, GPU, PSU, RAM (2026)&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/pc-builds/1500-dollar-rtx-5060-ti-1440p-build-2026/">The $1,500 RTX 5060 Ti 1440p Build&lt;/a> · &lt;a href="https://techfuelhq.com/pc-builds/2500-dollar-7800x3d-rtx-5080-4k-build-2026/">The $2,500 RTX 5080 4K Build&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5060-vs-rx-9060-xt/">RTX 5060 vs RX 9060 XT&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/articles/ddr5-ram-buying-guide-2025/">DDR5 RAM Buying Guide&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tools/pc-builder/">PC Builder&lt;/a> · &lt;a href="https://techfuelhq.com/tools/budget-builder/">Budget Builder&lt;/a> · &lt;a href="https://techfuelhq.com/tools/psu-wattage-calculator/">PSU Wattage Calculator&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>Best Value GPU RX 9060 XT price tracker — &lt;a href="https://bestvaluegpu.com/history/new-and-used-rx-9060-xt-price-history-and-specs/" rel="noopener">https://bestvaluegpu.com/history/new-and-used-rx-9060-xt-price-history-and-specs/&lt;/a>&lt;/li>
&lt;li>XDA RTX 5060 vs RX 9060 XT (1080p positioning) — &lt;a href="https://www.xda-developers.com/nvidia-rtx-5060-vs-amd-rx-9060-xt/" rel="noopener">https://www.xda-developers.com/nvidia-rtx-5060-vs-amd-rx-9060-xt/&lt;/a>&lt;/li>
&lt;li>Tom&amp;rsquo;s Hardware RAM price tracker 2026 — &lt;a href="https://www.tomshardware.com/pc-components/ram/ram-price-index-2026-lowest-price-on-ddr5-and-ddr4-memory-of-all-capacities" rel="noopener">https://www.tomshardware.com/pc-components/ram/ram-price-index-2026-lowest-price-on-ddr5-and-ddr4-memory-of-all-capacities&lt;/a>&lt;/li>
&lt;li>Tom&amp;rsquo;s Hardware DRAM/NAND crisis (Team Group GM) — &lt;a href="https://www.tomshardware.com/pc-components/dram/the-ram-pricing-crisis-has-only-just-started-team-group-gm-warns-says-problem-will-get-worse-in-2026-as-dram-and-nand-prices-double-in-one-month" rel="noopener">https://www.tomshardware.com/pc-components/dram/the-ram-pricing-crisis-has-only-just-started-team-group-gm-warns-says-problem-will-get-worse-in-2026-as-dram-and-nand-prices-double-in-one-month&lt;/a>&lt;/li>
&lt;li>Tom&amp;rsquo;s Hardware SSD price tracker 2026 — &lt;a href="https://www.tomshardware.com/pc-components/ssds/ssd-price-tracking-2026-lowest-price-on-every-m-2-ssd" rel="noopener">https://www.tomshardware.com/pc-components/ssds/ssd-price-tracking-2026-lowest-price-on-every-m-2-ssd&lt;/a>&lt;/li>
&lt;li>Micro Center Ryzen 5 7600 listing — &lt;a href="https://www.microcenter.com/product/674517/amd-ryzen-5-7600-raphael-am5-38ghz-6-core-boxed-processor-wraith-stealth-cooler-included" rel="noopener">https://www.microcenter.com/product/674517/amd-ryzen-5-7600-raphael-am5-38ghz-6-core-boxed-processor-wraith-stealth-cooler-included&lt;/a>&lt;/li>
&lt;li>Tech4Gamers Ryzen 5 7500F vs 7600 — &lt;a href="https://tech4gamers.com/ryzen-5-7500f-vs-ryzen-5-7600/" rel="noopener">https://tech4gamers.com/ryzen-5-7500f-vs-ryzen-5-7600/&lt;/a>&lt;/li>
&lt;li>PC Gamer 8GB VRAM real-world testing 2026 — &lt;a href="https://www.pcgamer.com/hardware/graphics-cards/my-real-world-testing-shows-8-gb-gpus-are-still-enough-for-gaming-in-2026-but-im-surprised-at-just-how-much-faster-the-16-gb-versions-are/" rel="noopener">https://www.pcgamer.com/hardware/graphics-cards/my-real-world-testing-shows-8-gb-gpus-are-still-enough-for-gaming-in-2026-but-im-surprised-at-just-how-much-faster-the-16-gb-versions-are/&lt;/a>&lt;/li>
&lt;li>XDA 8GB VRAM in 2026 — &lt;a href="https://www.xda-developers.com/gamers-were-wrong-8-gb-of-vram-is-still-good-enough-in-2026/" rel="noopener">https://www.xda-developers.com/gamers-were-wrong-8-gb-of-vram-is-still-good-enough-in-2026/&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Colophon — How TechFuel HQ Is Built</title><link>https://techfuelhq.com/colophon/</link><pubDate>Thu, 18 Jun 2026 00:00:00 -0500</pubDate><guid>https://techfuelhq.com/colophon/</guid><description>&lt;h2 id="what-this-page-is">What this page is&lt;/h2>
&lt;p>A public record of how this site gets built — the publishing stack, the sourcing approach, and the editorial rules every article has to clear before it ships. The short version is on the &lt;a href="https://techfuelhq.com/about/">About page&lt;/a>. This is the long version with names, versions, and rules written out.&lt;/p>
&lt;h2 id="publishing-stack">Publishing stack&lt;/h2>
&lt;p>TechFuel HQ is a static site built with &lt;a href="https://gohugo.io/" rel="noopener">Hugo&lt;/a> extended (v0.145.0) and deployed to GitHub Pages from the &lt;code>main&lt;/code> branch via GitHub Actions.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Hosting:&lt;/strong> GitHub Pages&lt;/li>
&lt;li>&lt;strong>Build:&lt;/strong> Hugo extended (v0.145.0), &lt;code>--gc --minify&lt;/code> on every deploy&lt;/li>
&lt;li>&lt;strong>Source control:&lt;/strong> GitHub, every change goes through a pull request&lt;/li>
&lt;li>&lt;strong>CDN / DNS:&lt;/strong> Cloudflare in front of GitHub Pages (migrated 2026-06-20)&lt;/li>
&lt;li>&lt;strong>Analytics:&lt;/strong> Google Analytics 4 (GA4)&lt;/li>
&lt;li>&lt;strong>Search:&lt;/strong> Google Search Console for indexing state&lt;/li>
&lt;li>&lt;strong>Domain:&lt;/strong> techfuelhq.com, registered to the site author&lt;/li>
&lt;/ul>
&lt;p>Layouts and styles are written from scratch. No third-party theme.&lt;/p>
&lt;h2 id="how-hardware-figures-are-sourced">How hardware figures are sourced&lt;/h2>
&lt;p>Hardware recommendations published in 2024–2025 were tested on a bench in St. Louis County, Missouri, using a P3 P4400 Kill A Watt for at-the-wall power, iperf3 for network throughput, fio for storage IOPS, and PresentMon for GPU frame-time capture. GPUs benchmarked on that bench — and used as the first-party baselines in the &lt;a href="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/">RTX 5080 dataset&lt;/a> — included the RTX 4080, RTX 4080 Super, and an RTX 5080 Founders Edition. That homelab gear was largely sold or retired in early 2026; the ASUS ROG Astral RTX 5080 OC remains on the current bench.&lt;/p>
&lt;p>Content published or updated from June 2026 onward sources its benchmarks from named third-party publications and primary documentation rather than a current personal bench:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Power and homelab hardware:&lt;/strong> &lt;a href="https://www.servethehome.com/" rel="noopener">ServeTheHome&lt;/a> reviews and power testing, plus manufacturer spec sheets&lt;/li>
&lt;li>&lt;strong>Linux and storage benchmarks:&lt;/strong> &lt;a href="https://www.phoronix.com/" rel="noopener">Phoronix&lt;/a> and the &lt;a href="https://openzfs.github.io/openzfs-docs/" rel="noopener">OpenZFS documentation&lt;/a>&lt;/li>
&lt;li>&lt;strong>General hardware and GPUs:&lt;/strong> &lt;a href="https://www.tomshardware.com/" rel="noopener">Tom&amp;rsquo;s Hardware&lt;/a> and the &lt;a href="https://www.anandtech.com/" rel="noopener">AnandTech archive&lt;/a>&lt;/li>
&lt;li>&lt;strong>First-party specs and standards:&lt;/strong> manufacturer product pages, &lt;a href="https://www.intel.com/content/www/us/en/products/docs/power-supplies/atx-design-guide.html" rel="noopener">Intel ATX design guides&lt;/a>, JEDEC, PCI-SIG, and IEEE documents&lt;/li>
&lt;/ul>
&lt;p>Every figure is attributed to its source inline. Vendor spec-sheet numbers are labeled separately from independent third-party measurements.&lt;/p>
&lt;h2 id="ai-in-the-workflow">AI in the workflow&lt;/h2>
&lt;p>AI tools assist with research aggregation, outlining, and first drafts — gathering sources to read, structuring an outline, and producing a rough draft to edit down. They do not decide what gets recommended, and they do not generate the measured figures: every benchmark, price, and spec still traces to a cited source or labeled first-party data under the standards below. Editorial judgment, verification, and the final wording are the author&amp;rsquo;s, and the byline is human and accountable.&lt;/p>
&lt;h2 id="editorial-standards">Editorial standards&lt;/h2>
&lt;p>Every article on this site has to clear all of these before it ships:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>No sponsored articles, no vendor samples, no paid placement.&lt;/strong> A recommendation is never shaped by anything other than the merits of the product.&lt;/li>
&lt;li>&lt;strong>Methodology and sources block on every article.&lt;/strong> Every benchmark-based article includes a &amp;ldquo;Methodology and sources&amp;rdquo; section naming the third-party publications and primary documentation the figures are drawn from.&lt;/li>
&lt;li>&lt;strong>Last-verified date on every article.&lt;/strong> When the underlying facts change, the article gets updated and the last-verified date moves. When they don&amp;rsquo;t, it doesn&amp;rsquo;t.&lt;/li>
&lt;li>&lt;strong>Cited benchmarks or no benchmarks.&lt;/strong> Vendor spec-sheet numbers are labeled separately from independent third-party measurements. Made-up benchmarks are worse than no benchmarks; any figure that cannot be attributed to a named source is removed rather than estimated.&lt;/li>
&lt;li>&lt;strong>No paid placement, ever.&lt;/strong> No product appears because a vendor paid, gifted, or sponsored it; placement is editorial only.&lt;/li>
&lt;li>&lt;strong>Cite primary sources inline.&lt;/strong> Vendor docs, official changelogs, and reputable trade press get linked. Reddit and forum threads get linked when they are the primary signal but get labeled as community-reported, not as vendor-confirmed.&lt;/li>
&lt;li>&lt;strong>No fabricated first-party claims.&lt;/strong> Present-tense first-person measurement claims (&amp;ldquo;I measured&amp;hellip;&amp;rdquo;, &amp;ldquo;on my own bench&amp;hellip;&amp;rdquo;) are used only when backed by a real, current artifact. Where no such artifact exists, figures are sourced to named third parties and the prose says so. Past-tense references to gear genuinely owned in 2024–2025 are allowed and labeled as past.&lt;/li>
&lt;/ol>
&lt;h2 id="source-standards">Source standards&lt;/h2>
&lt;p>Every factual claim that is not first-person traces to one of these:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Vendor documentation&lt;/strong> — release notes, specification sheets, official pricing pages, official product matrices&lt;/li>
&lt;li>&lt;strong>Vendor announcements&lt;/strong> — release blogs, press notes, official forums&lt;/li>
&lt;li>&lt;strong>Reputable third-party publications&lt;/strong> — &lt;a href="https://www.servethehome.com/" rel="noopener">ServeTheHome&lt;/a>, &lt;a href="https://www.tomshardware.com/" rel="noopener">Tom&amp;rsquo;s Hardware&lt;/a>, the &lt;a href="https://www.anandtech.com/" rel="noopener">AnandTech archive&lt;/a>, &lt;a href="https://www.phoronix.com/" rel="noopener">Phoronix&lt;/a>, LWN, and vendor-independent benchmark labs. Forum posts and community wikis are used only for facts that have a clear authoritative provenance (release notes, license docs, official FAQs)&lt;/li>
&lt;li>&lt;strong>Standards bodies&lt;/strong> — JEDEC, PCI-SIG, IEEE, RFC documents&lt;/li>
&lt;/ul>
&lt;p>Sources are linked inline at the point of claim.&lt;/p>
&lt;h2 id="monetization">Monetization&lt;/h2>
&lt;p>The site is funded by display advertising via Google AdSense. The retailer links to Newegg, B&amp;amp;H, and other stores that appear in articles are plain reference links and earn no commission.&lt;/p>
&lt;p>Some Amazon links are affiliate links through the Amazon Associates Program, which may earn a commission on a qualifying purchase at no extra cost to the reader; as an Amazon Associate, TechFuel HQ earns from qualifying purchases. Every article that contains an affiliate link carries a clear disclosure near the top, and a commission never changes which product gets recommended. Full detail is on the &lt;a href="https://techfuelhq.com/disclosure/">disclosure page&lt;/a>.&lt;/p>
&lt;h2 id="updates-and-corrections">Updates and corrections&lt;/h2>
&lt;p>Readers who spot an error are encouraged to email &lt;strong>&lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a>&lt;/strong> with the article URL and the specific section in question. Confirmed corrections are made in-place in the affected article with an updated &amp;ldquo;Last verified&amp;rdquo; date.&lt;/p>
&lt;h2 id="contact">Contact&lt;/h2>
&lt;p>Spot something wrong, want to challenge a recommendation, or have a question about how a specific article was produced? Email &lt;strong>&lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a>&lt;/strong>.&lt;/p>
&lt;p>Last updated: 2026-06-18.&lt;/p></description></item><item><title>Editorial Methodology</title><link>https://techfuelhq.com/methodology/</link><pubDate>Thu, 18 Jun 2026 00:00:00 -0500</pubDate><guid>https://techfuelhq.com/methodology/</guid><description>&lt;p>TechFuel HQ publishes hardware guides for homelabbers and budget-PC builders. This page describes — in plain language — who produces the content, how it is produced, what is and is not verified first-hand, and how readers can challenge any claim. The intent is to make every article auditable. See the &lt;a href="https://techfuelhq.com/colophon/">full colophon&lt;/a> for the publishing stack and bench methodology.&lt;/p>
&lt;h2 id="who-produces-the-content">Who produces the content&lt;/h2>
&lt;p>The site is owned and edited by &lt;strong>Lowell K. Wood IV&lt;/strong> (byline &lt;em>LK Wood IV&lt;/em>), based in St. Louis County, Missouri. Lowell is the publisher of record. Author identity and contact information are exposed in the JSON-LD schema on every article and in the &lt;a href="https://techfuelhq.com/about/">About&lt;/a> page.&lt;/p>
&lt;p>Email: &lt;strong>&lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a>&lt;/strong>&lt;/p>
&lt;p>There is no other staff. The site is a single-operator publication.&lt;/p>
&lt;h2 id="real-artifact-policy">Real-artifact policy&lt;/h2>
&lt;p>A small number of claims on the site rely on first-person evidence rather than vendor specs — for example, a Kill A Watt idle-wattage reading, an iperf3 throughput run between two specific NICs, a photo of a parts receipt, or a screenshot of a BIOS configuration. The site has a strict policy for these:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Default tense is past.&lt;/strong> Most of the 2024–2025 testing gear was sold or retired in early 2026 (full timeline on the &lt;a href="https://techfuelhq.com/colophon/">Colophon&lt;/a>). First-person measurement language in older articles refers to that period and is phrased in the past tense.&lt;/li>
&lt;li>&lt;strong>Present-tense first-person claims&lt;/strong> (&amp;ldquo;I measured&amp;hellip;&amp;rdquo;, &amp;ldquo;on my bench&amp;hellip;&amp;rdquo;) are allowed &lt;strong>only&lt;/strong> when the article either (a) shows the underlying artifact inline — a photo, a receipt, a measurement screenshot, captured terminal output — or (b) links to a published TechFuelHQ-canonical dataset that contains the artifact. The current canonical first-party dataset is the &lt;a href="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/">ASUS ROG Astral RTX 5080 OC bench dataset&lt;/a>, captured 2026-06-08–2026-06-09.&lt;/li>
&lt;li>&lt;strong>No artifact, no first-person claim.&lt;/strong> Articles that would need a first-person claim but lack the artifact use cited third-party measurements instead, attributed to the named publication (ServeTheHome, Phoronix, Tom&amp;rsquo;s Hardware, TechPowerUp).&lt;/li>
&lt;li>&lt;strong>Fabricating an artifact&lt;/strong> — staged screenshots, made-up wattage numbers, invented dmesg or journalctl output, fake receipts — is forbidden under site policy.&lt;/li>
&lt;/ul>
&lt;p>If an article&amp;rsquo;s evidence shifts from &amp;ldquo;vendor spec citation&amp;rdquo; to &amp;ldquo;first-person measurement&amp;rdquo; or vice versa, the article&amp;rsquo;s update log records the date and direction of the shift.&lt;/p>
&lt;h2 id="source-standards">Source standards&lt;/h2>
&lt;p>Every factual claim that is not first-person traces to one of these:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Vendor documentation&lt;/strong> — release notes, specification sheets, official pricing pages, official product matrices.&lt;/li>
&lt;li>&lt;strong>Vendor announcements&lt;/strong> — release blogs, press notes, official forums.&lt;/li>
&lt;li>&lt;strong>Reputable third-party publications&lt;/strong> — ServeTheHome, Tom&amp;rsquo;s Hardware, AnandTech archive, Phoronix, LWN, vendor-independent benchmark labs. Forum posts and community wikis are used only for facts that have a clear authoritative provenance (release notes, license docs, official FAQs).&lt;/li>
&lt;li>&lt;strong>Standards bodies&lt;/strong> — JEDEC, PCI-SIG, IEEE, RFC documents, where relevant.&lt;/li>
&lt;/ul>
&lt;p>Sources are linked inline at the point of claim and aggregated in the Sources block within each article.&lt;/p>
&lt;p>A claim that cannot be cited to a resolvable, real source is removed before publish. Articles do not carry uncited &amp;ldquo;rumor&amp;rdquo; or &amp;ldquo;in my experience&amp;rdquo; lines that lack an artifact.&lt;/p>
&lt;h2 id="ai-in-the-workflow">AI in the workflow&lt;/h2>
&lt;p>AI tools assist with research aggregation, outlining, and first drafts. The editorial judgment — what to recommend, what to cut, what to verify, and the final wording — is the author&amp;rsquo;s, and every measured claim still passes the source standards and real-artifact policy above before it ships. The byline is human and accountable; the fuller toolchain is described in the &lt;a href="https://techfuelhq.com/colophon/">colophon&lt;/a>.&lt;/p>
&lt;h2 id="monetization-disclosure">Monetization disclosure&lt;/h2>
&lt;p>The site is funded by display advertising via Google AdSense. The retailer links to Newegg, B&amp;amp;H, and other stores that appear in articles are plain reference links and earn no commission.&lt;/p>
&lt;p>Some Amazon links are affiliate links through the Amazon Associates Program, which may earn a commission on a qualifying purchase at no extra cost to the reader; as an Amazon Associate, TechFuel HQ earns from qualifying purchases. Every article that contains an affiliate link carries a clear disclosure near the top. A commission never changes which product gets recommended — if a product is not the right pick for the use case, it does not get recommended, affiliate link or not. Full detail is on the &lt;a href="https://techfuelhq.com/disclosure/">disclosure page&lt;/a>.&lt;/p>
&lt;p>The site participates in Google AdSense for display advertising. Advertising never appears inside the body of an article in a way that disrupts reading flow, and editorial recommendations are made independently of advertiser identity.&lt;/p>
&lt;h2 id="update-cadence">Update cadence&lt;/h2>
&lt;p>Articles are revised when the underlying facts change — a new product release, a vendor price shift, a license-policy change, a new firmware or kernel that affects compatibility. Each article carries a &amp;ldquo;Last updated&amp;rdquo; date that reflects the most recent material revision. Cosmetic edits (typos, layout fixes) do not bump that date.&lt;/p>
&lt;h2 id="corrections">Corrections&lt;/h2>
&lt;p>Readers who spot an error are encouraged to email &lt;strong>&lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a>&lt;/strong> with the article URL and the specific section in question. Confirmed corrections are:&lt;/p>
&lt;ol>
&lt;li>Made in-place in the affected article.&lt;/li>
&lt;li>Logged in the article&amp;rsquo;s update log with the date and a one-line summary.&lt;/li>
&lt;li>Acknowledged by reply email.&lt;/li>
&lt;/ol>
&lt;p>Material errors discovered after the fact are not silently overwritten. The site&amp;rsquo;s intent is to be auditable.&lt;/p>
&lt;h2 id="what-this-site-does-not-do">What this site does not do&lt;/h2>
&lt;p>To set explicit expectations:&lt;/p>
&lt;ul>
&lt;li>The site &lt;strong>does not&lt;/strong> publish vendor-paid placements disguised as editorial.&lt;/li>
&lt;li>The site &lt;strong>does not&lt;/strong> publish &amp;ldquo;review&amp;rdquo; content for products the author has not handled and for which no first-person artifact is shown — vendor-spec comparisons are framed as such, not as hands-on reviews.&lt;/li>
&lt;li>The site &lt;strong>does not&lt;/strong> chase hype cycles. If a product is unproven, the article says so.&lt;/li>
&lt;/ul>
&lt;h2 id="contact">Contact&lt;/h2>
&lt;p>Publisher: &lt;strong>Lowell K. Wood IV&lt;/strong>
Email: &lt;strong>&lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a>&lt;/strong>
Location: St. Louis County, Missouri, United States&lt;/p>
&lt;p>Site policies referenced from this page: &lt;a href="https://techfuelhq.com/about/">About&lt;/a>, &lt;a href="https://techfuelhq.com/disclosure/">Disclosure&lt;/a>, &lt;a href="https://techfuelhq.com/privacy/">Privacy&lt;/a>, &lt;a href="https://techfuelhq.com/terms/">Terms&lt;/a>, &lt;a href="https://techfuelhq.com/contact/">Contact&lt;/a>.&lt;/p></description></item><item><title>EVGA SuperNOVA 1000 GT Review: Gold PSU After the GPU Exit</title><link>https://techfuelhq.com/reviews/evga-supernova-1000-gt-review-2026/</link><pubDate>Thu, 18 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/reviews/evga-supernova-1000-gt-review-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-18 · ~9 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/reviews/evga-supernova-1000-gt-review-2026.svg" alt="EVGA SuperNOVA 1000 GT review card rated 4.3 out of 5, with key specs: 1000W capacity, 80 Plus Gold efficiency, fully modular cabling, Seasonic Focus GX-derived platform, 135mm FDB zero-RPM fan, 2x 8-pin and 4x 6+2 connectors, and a 10-year warranty whose current service support is unverified" width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>&lt;strong>Rating: 4.3 / 5&lt;/strong>&lt;/p>
&lt;p>The EVGA SuperNOVA 1000 GT is one of the better PSUs I&amp;rsquo;ve used. It&amp;rsquo;s also made by a company that exited the GPU market in 2022 and has wound down sharply since. These two facts both matter, and the degree to which the second should affect your purchasing decision depends on how much warranty coverage is worth to you.&lt;/p>
&lt;p>I ran the SuperNOVA 1000 GT in my primary build — Ryzen 7 7800X3D, ROG Astral RTX 5080 OC, ROG STRIX B650-A, 64GB DDR5 — for an extended period. This is the review that follows real use.&lt;/p>
&lt;h2 id="what-evga-shipped">What EVGA shipped&lt;/h2>
&lt;p>&lt;strong>Published specifications (per EVGA&amp;rsquo;s published product specifications):&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Capacity: 1000W&lt;/li>
&lt;li>Efficiency rating: 80 Plus Gold&lt;/li>
&lt;li>Modular: fully modular&lt;/li>
&lt;li>Fan: 135mm FDB bearing, zero-RPM mode up to 40% load&lt;/li>
&lt;li>ATX connector: 1× 24-pin&lt;/li>
&lt;li>EPS/CPU connectors: 2× 8-pin (4+4)&lt;/li>
&lt;li>PCIe connectors: 4× 6+2 pin (plus the SuperNOVA 1000 GT shipped with a 12VHPWR adapter for NVIDIA RTX 40-series and later GPUs)&lt;/li>
&lt;li>Warranty: 10 years (verify current EVGA warranty support before relying on it)&lt;/li>
&lt;li>Dimensions: 160mm depth (ATX standard)&lt;/li>
&lt;li>Platform: Seasonic Focus GX-derived&lt;/li>
&lt;/ul>
&lt;p>The fully modular design is meaningful in practice. Unused cables stay in the bag, cable routing in the case is cleaner, and if a cable fails, you replace the cable rather than the PSU. The SuperNOVA GT series was consistently recommended over the GQ (semi-modular) line for this reason.&lt;/p>
&lt;h2 id="efficiency-in-practice">Efficiency in practice&lt;/h2>
&lt;p>80 Plus Gold means at least 87% efficiency at 20% load, 90% at 50% load, and 87% at 100% load (at 115V AC per 80 Plus specification). The Seasonic Focus GX platform consistently measures at or slightly above rated efficiency in third-party testing.&lt;/p>
&lt;p>At my typical gaming load (~450W combined system draw), the 1000 GT runs at 45% utilization — squarely in its efficiency sweet spot. A Seasonic Focus GX-1000 measured at Cybenetics labs shows roughly 91–92% efficiency at the 50% load point. I use this as a proxy for the SuperNOVA GT given the shared platform, not as a direct measured spec for the EVGA unit.&lt;/p>
&lt;p>At the &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">Power &amp;amp; Cost Calculator&lt;/a>: a 450W gaming PC running 4 hours per day at $0.13/kWh and 91% PSU efficiency costs approximately $10.50/month in electricity. The efficiency difference between an 80 Plus Gold and 80 Plus Bronze PSU at this load saves roughly $1.50–2.00/month — meaningful over years, not months.&lt;/p>
&lt;h2 id="zero-rpm-mode">Zero-RPM mode&lt;/h2>
&lt;p>The SuperNOVA 1000 GT runs its fan in zero-RPM mode below approximately 400W (40% load). At typical gaming loads with a 7800X3D and RTX 5080, the fan spins but spins slowly — it&amp;rsquo;s one of the quieter components in the build. At idle or light workloads, the PSU is completely silent.&lt;/p>
&lt;p>Zero-RPM mode does mean the PSU runs hotter at low load than a fan-always-on unit, but PSU temperature at idle load is well within the operating spec. It&amp;rsquo;s a design tradeoff that optimizes for acoustics at the cost of slightly elevated idle temperatures. For a desktop build with reasonable case airflow, it&amp;rsquo;s the right tradeoff.&lt;/p>
&lt;h2 id="cabling-pcie-and-12vhpwr">Cabling: PCIe and 12VHPWR&lt;/h2>
&lt;p>The SuperNOVA 1000 GT ships with four 6+2 PCIe cables and a 12VHPWR adapter (the 16-pin connector introduced with NVIDIA RTX 40-series and used on RTX 50-series). The 12VHPWR adapter is a passive cable that converts two 8-pin PCIe connectors to a single 12VHPWR.&lt;/p>
&lt;p>On an RTX 5080, which uses the 16-pin 12VHPWR connector directly: the adapter works, but a native 12VHPWR cable is preferable. The adapter creates an extra connection point, and NVIDIA&amp;rsquo;s own adapter guidance recommends native 12VHPWR cables where available. This is a solved problem on any PSU purchased after 2023 — new units ship with native 12VHPWR cables. The SuperNOVA 1000 GT predates this connector and uses the adapter approach.&lt;/p>
&lt;p>If you run an RTX 50-series card with a SuperNOVA GT, the adapter is fine. Just route it cleanly so the cable doesn&amp;rsquo;t stress the connector. JonnyGURU&amp;rsquo;s documentation of the 12VHPWR cable fires (now archived) traced failures to bent connectors and poor cable routing, not the adapter design itself.&lt;/p>
&lt;h2 id="eps--cpu-power">EPS / CPU power&lt;/h2>
&lt;p>The 1000 GT includes two 4+4 EPS connectors for CPU power. The Ryzen 7 7800X3D at 162W PPT (max socket power) uses one 8-pin connector at well under 10A on the 12V rail. The second EPS cable stays unused for an AM5 build. For high-TDP Intel builds (i9-14900KS, i9-13900KS) that can draw 250–300W through the CPU power connectors, both EPS cables are used and the 1000W capacity is still appropriate.&lt;/p>
&lt;h2 id="the-evga-situation-what-it-means-for-buyers">The EVGA situation: what it means for buyers&lt;/h2>
&lt;p>EVGA announced in September 2022 that it would stop producing NVIDIA graphics cards, citing frustration with NVIDIA&amp;rsquo;s business practices. That announcement was about the GPU line specifically; EVGA kept selling power supplies and other products afterward. The company has wound down steadily since, and its current warranty service for hardware is limited and hard to confirm in 2026 — so the practical advice is to verify coverage before you count on it.&lt;/p>
&lt;p>&lt;strong>For units bought before September 2022:&lt;/strong> EVGA honored warranty claims for a period after the exit announcement. Whether that coverage is still serviced today is uncertain — confirm with EVGA before treating the 10-year warranty as a guaranteed benefit.&lt;/p>
&lt;p>&lt;strong>For units bought new-in-box after September 2022 (from retail stock):&lt;/strong> treat warranty support as unverified. The box says 10 years; check with EVGA whether that coverage is still honored before you rely on it.&lt;/p>
&lt;p>&lt;strong>For used units:&lt;/strong> no transferable warranty, obviously. Price accordingly.&lt;/p>
&lt;p>The hardware itself doesn&amp;rsquo;t change based on EVGA&amp;rsquo;s corporate situation. A well-made PSU in the 1000 GT class will run for 8–12 years without failure in a desktop build that doesn&amp;rsquo;t have cooling issues. The risk you&amp;rsquo;re absorbing without a warranty is that if it fails inside what would have been the warranty window, you buy a replacement.&lt;/p>
&lt;h2 id="what-to-buy-instead-if-warranty-matters">What to buy instead (if warranty matters)&lt;/h2>
&lt;p>Current alternatives at the 1000W Gold tier with active warranties:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">PSU&lt;/th>
&lt;th scope="col">Efficiency&lt;/th>
&lt;th scope="col">Warranty&lt;/th>
&lt;th scope="col">Approximate street&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Corsair RM1000x (2024 rev)&lt;/td>
&lt;td>80+ Gold&lt;/td>
&lt;td>10 years&lt;/td>
&lt;td>~$150&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Seasonic Focus GX-1000&lt;/td>
&lt;td>80+ Gold&lt;/td>
&lt;td>12 years&lt;/td>
&lt;td>~$170&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>be quiet! Straight Power 12 1000W&lt;/td>
&lt;td>80+ Gold&lt;/td>
&lt;td>10 years&lt;/td>
&lt;td>~$160&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Fractal Design Ion+ 1000W&lt;/td>
&lt;td>80+ Platinum&lt;/td>
&lt;td>10 years&lt;/td>
&lt;td>~$180&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Cooler Master V1000 Gold&lt;/td>
&lt;td>80+ Gold&lt;/td>
&lt;td>10 years&lt;/td>
&lt;td>~$130&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The Corsair RM1000x (2024 revision) is the most direct comparable — fully modular, 80 Plus Gold, 10-year warranty, available from active stock. It&amp;rsquo;s slightly more expensive than a SuperNOVA 1000 GT found new-in-box but comes with warranty coverage that actually exists.&lt;/p>
&lt;h2 id="verdict">Verdict&lt;/h2>
&lt;p>The SuperNOVA 1000 GT hardware is excellent and I&amp;rsquo;d use it again in a build where warranty coverage isn&amp;rsquo;t the deciding factor. Fully modular, quiet, efficient, right-sized for an RTX 5080 + Ryzen 7 7800X3D build, and well-built enough to outlast most of the components it powers.&lt;/p>
&lt;p>The warranty situation is the only reason to hesitate. If you find a SuperNOVA 1000 GT new-in-box for $100 or less, or used in verifiably good condition for $70–80, the hardware justifies the purchase. If price parity exists with a RM1000x or Seasonic Focus GX, buy the warranted unit.&lt;/p>
&lt;p>&lt;strong>Rating: 4.3/5&lt;/strong> — top-tier hardware from a company whose ongoing support is uncertain. Buy at a discount and verify warranty coverage; buy a warranted competitor at parity.&lt;/p>
&lt;hr>
&lt;p>&lt;em>For the full build this PSU shipped in, the &lt;a href="https://techfuelhq.com/reviews/rog-strix-b650a-review-2026/">ROG STRIX B650-A review&lt;/a> covers the platform. To size a PSU for your specific build, the &lt;a href="https://techfuelhq.com/tools/psu-wattage-calculator/">PSU Wattage Calculator&lt;/a> gives you peak draw, minimum recommended size, and the efficiency sweet-spot size. To calculate how a 1000W unit affects your electricity bill vs. a 750W, the &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">Power &amp;amp; Cost Calculator&lt;/a> models PSU efficiency at real load points.&lt;/em>&lt;/p></description></item><item><title>How to Choose Your PC Build: CPU, GPU, PSU, RAM (2026)</title><link>https://techfuelhq.com/pc-builds/how-to-choose-pc-build-2026/</link><pubDate>Thu, 18 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/pc-builds/how-to-choose-pc-build-2026/</guid><description>&lt;p>Picking PC parts is less about memorizing models and more about making the right decisions in the right order. Get the order wrong and you over-spend on one part while bottlenecking another. This guide walks the decision the way I actually make it — what to choose first, how each component constrains the others, and where to let a calculator do the math instead of guessing. It&amp;rsquo;s framework, not a fixed parts list; for a concrete example, the &lt;a href="https://techfuelhq.com/pc-builds/1500-dollar-rtx-5060-ti-1440p-build-2026/">$1,500 RTX 5060 Ti build&lt;/a> puts every choice here into one real receipt.&lt;/p>
&lt;img src="https://techfuelhq.com/images/pc-builds/how-to-choose-pc-build-2026.svg" width="1200" height="820" loading="lazy" decoding="async" alt="Seven-step PC build decision ladder for 2026: choose the anchor part first (GPU for gaming, CPU and platform for productivity or homelab), then GPU VRAM by resolution (16 GB comfortable at 1440p), CPU and current-gen socket, DDR5-6000 CL30 RAM at 32 GB default, PCIe Gen4 NVMe storage, a 650 to 750 W ATX 3.1 PSU with 12V-2x6, and cooling and case matched to the heat." style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;h2 id="start-with-the-part-that-defines-your-use-case">Start with the part that defines your use case&lt;/h2>
&lt;p>Every build has one component that sets the ceiling, and you choose it first:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Gaming →&lt;/strong> start with the &lt;strong>GPU&lt;/strong>. It decides your resolution and frame rate and usually eats the largest share of the budget. Everything else supports it.&lt;/li>
&lt;li>&lt;strong>Productivity / creation / homelab →&lt;/strong> start with the &lt;strong>CPU and platform&lt;/strong>. Core count, PCIe lanes, and memory capacity drive those workloads more than the GPU does.&lt;/li>
&lt;/ul>
&lt;p>Pick that anchor part to fit your real target — the resolution you play at, the software you run — then build outward so nothing else holds it back.&lt;/p>
&lt;h2 id="gpu-match-vram-and-tier-to-your-resolution">GPU: match VRAM and tier to your resolution&lt;/h2>
&lt;p>The GPU question is really two questions: how much raw performance, and how much VRAM.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>1080p:&lt;/strong> an entry card is fine; 8 GB still works but is getting tight in new titles at high textures.&lt;/li>
&lt;li>&lt;strong>1440p:&lt;/strong> the mainstream target in 2026. &lt;strong>16 GB is the comfortable amount&lt;/strong> — enough that VRAM stops being the bottleneck and the GPU itself becomes the limit.&lt;/li>
&lt;li>&lt;strong>4K / local AI:&lt;/strong> 16 GB is the floor; 24 GB+ buys real headroom for textures and models.&lt;/li>
&lt;/ul>
&lt;p>When two cards sit at a similar price, the one with &lt;strong>more VRAM usually ages better&lt;/strong> — texture and model sizes only grow. For a worked comparison at the mid-range, see the &lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5060-ti-vs-rx-9060-xt-1440p-showdown-2026/">RTX 5060 Ti vs RX 9060 XT 1440p showdown&lt;/a>.&lt;/p>
&lt;h2 id="cpu-and-platform-enough-not-excessive">CPU and platform: enough, not excessive&lt;/h2>
&lt;p>Match the CPU to the GPU and resolution rather than buying the biggest chip on the shelf. At 1440p and 4K the GPU is almost always the limit, so a solid current-gen 8-core is plenty; chasing a flagship CPU there is wasted money that belongs in the GPU. A faster or 3D V-Cache CPU earns its keep at 1080p and in CPU-bound esports titles.&lt;/p>
&lt;p>On platform: in 2026, prefer a &lt;strong>current-gen socket&lt;/strong> (AMD&amp;rsquo;s AM5 or the current Intel socket) over a dead-end one, so a CPU upgrade later doesn&amp;rsquo;t mean a new board. A mid-range board that takes a future higher-end chip with a BIOS update is the no-regret choice.&lt;/p>
&lt;h2 id="ram-speed-timing-and-capacity">RAM: speed, timing, and capacity&lt;/h2>
&lt;p>For &lt;strong>AM5&lt;/strong>, the established sweet spot is &lt;strong>DDR5-6000 CL30 at a 1:1 memory-to-fabric clock&lt;/strong> — push the speed higher and the controller often drops to a 2:1 ratio that gives the gain back. Capacity in 2026:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>32 GB (2×16):&lt;/strong> the default for gaming and light creative work.&lt;/li>
&lt;li>&lt;strong>64 GB:&lt;/strong> heavy multitasking, VMs, or running local LLMs alongside everything else.&lt;/li>
&lt;/ul>
&lt;p>Populate &lt;strong>two slots with a matched kit&lt;/strong>, not four, for the cleanest high-speed stability. If you are still deciding between those tiers, &lt;a href="https://techfuelhq.com/articles/how-much-ram-do-you-need-2026/">how much RAM you actually need in 2026&lt;/a> walks through 16 vs 32 vs 64 GB by use case, and the &lt;a href="https://techfuelhq.com/articles/ddr5-ram-buying-guide-2025/">DDR5 buying guide&lt;/a> covers speeds and timings in depth.&lt;/p>
&lt;h2 id="storage-nvme-first-capacity-by-need">Storage: NVMe first, capacity by need&lt;/h2>
&lt;p>A &lt;strong>PCIe Gen4 NVMe with real DRAM&lt;/strong> is the right boot/game drive in 2026 — Gen5 runs hotter and costs more for gains you won&amp;rsquo;t feel in games. Size by what you actually store: 1 TB is a tight minimum, 2 TB is the comfortable default, and you can add a second drive later. Note that NAND prices have been volatile, so buy the capacity you need now rather than over-buying on a spike.&lt;/p>
&lt;h2 id="psu-size-with-headroom-get-the-right-connector">PSU: size with headroom, get the right connector&lt;/h2>
&lt;p>This is the part people guess at and shouldn&amp;rsquo;t. Add up your components&amp;rsquo; real draw (the GPU and CPU dominate), then add &lt;strong>~30% headroom&lt;/strong> for spikes, efficiency, and a future upgrade. A typical mid-range build pulls 350–450 W under load, which puts a quality &lt;strong>650–750 W&lt;/strong> unit in the right range — the extra isn&amp;rsquo;t for today, it&amp;rsquo;s so a future GPU doesn&amp;rsquo;t force a PSU swap.&lt;/p>
&lt;p>In 2026, buy an &lt;strong>ATX 3.1 / PCIe 5.1&lt;/strong> supply with the native &lt;strong>12V-2x6&lt;/strong> connector so modern cards plug in without adapters. Rather than eyeball it, run your exact parts through the &lt;a href="https://techfuelhq.com/tools/psu-wattage-calculator/">PSU wattage calculator&lt;/a> for a sized recommendation with headroom built in.&lt;/p>
&lt;h2 id="cooling-and-case-match-the-heat-fit-the-parts">Cooling and case: match the heat, fit the parts&lt;/h2>
&lt;p>For most CPUs in the 65–105 W class, a &lt;strong>good dual-tower air cooler&lt;/strong> is quiet, cheap, and has no pump to fail. Step up to a 240–360 mm &lt;strong>AIO&lt;/strong> only for a high-TDP chip run hard, a case with poor air clearance, or the aesthetic. The case itself is a real decision, not an afterthought: prioritize &lt;strong>front mesh airflow&lt;/strong>, GPU and cooler &lt;strong>clearance&lt;/strong>, and enough room for cable management. A pretty case that cooks the parts is the wrong case.&lt;/p>
&lt;h2 id="let-the-tools-do-the-math">Let the tools do the math&lt;/h2>
&lt;p>Three calculators on the site exist so you don&amp;rsquo;t have to guess the numbers:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://techfuelhq.com/tools/pc-builder/">PC Builder&lt;/a>&lt;/strong> — pick parts and it checks socket, PSU, and case-clearance compatibility as you go.&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://techfuelhq.com/tools/psu-wattage-calculator/">PSU Wattage Calculator&lt;/a>&lt;/strong> — enter your components, get a sized supply with headroom.&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://techfuelhq.com/tools/budget-builder/">Budget Builder&lt;/a>&lt;/strong> — sort gear by what you can actually spend and balance the build to your budget.&lt;/li>
&lt;/ul>
&lt;h2 id="the-decision-in-one-line">The decision in one line&lt;/h2>
&lt;p>Choose the part that defines your use case first, match everything else to it, give the GPU the VRAM it needs for your resolution, size the PSU with headroom and the right connector, and let the calculators catch the mistakes before you buy. When you want to see it all assembled into a real receipt, the &lt;a href="https://techfuelhq.com/pc-builds/1500-dollar-rtx-5060-ti-1440p-build-2026/">$1,500 RTX 5060 Ti 1440p build&lt;/a> is the worked example. For the high-end version of the same framework at 4K, the &lt;a href="https://techfuelhq.com/pc-builds/2500-dollar-7800x3d-rtx-5080-4k-build-2026/">$2,500 RTX 5080 + 7800X3D 4K build&lt;/a> is the worked example one tier up.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>AMD AM5 platform / EXPO memory guidance — &lt;a href="https://www.amd.com/en/products/processors/desktops/ryzen.html" rel="noopener">https://www.amd.com/en/products/processors/desktops/ryzen.html&lt;/a>&lt;/li>
&lt;li>Intel ATX / power-supply design guides — &lt;a href="https://www.intel.com/content/www/us/en/products/docs/power-supplies/atx-design-guide.html" rel="noopener">https://www.intel.com/content/www/us/en/products/docs/power-supplies/atx-design-guide.html&lt;/a>&lt;/li>
&lt;li>JEDEC DDR5 standard (JESD79-5) — &lt;a href="https://www.jedec.org/standards-documents/docs/jesd79-5b" rel="noopener">https://www.jedec.org/standards-documents/docs/jesd79-5b&lt;/a>&lt;/li>
&lt;li>PCI-SIG (PCIe / 12V-2x6 connector standards) — &lt;a href="https://pcisig.com/" rel="noopener">https://pcisig.com/&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Samsung 970 EVO Plus 1TB Review (2026): A PCIe 3.0 Keeper</title><link>https://techfuelhq.com/reviews/samsung-970-evo-plus-1tb-review-2026/</link><pubDate>Thu, 18 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/reviews/samsung-970-evo-plus-1tb-review-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-18 · ~8 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/reviews/samsung-970-evo-plus-1tb-review-2026.svg" alt="Samsung 970 EVO Plus 1TB review card rated 4.2 out of 5, with key specifications: PCIe 3.0 x4 NVMe 1.3 interface, 3,500/3,300 MB/s sequential read/write, 600K/550K random read/write IOPS, LPDDR4 DRAM cache, 600 TBW endurance, and 5-year warranty" width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>The Samsung 970 EVO Plus came out in 2019. It runs in my daily machine in 2026 alongside a Ryzen 7 7800X3D and an RTX 5080. At some point, most people with older NVMe drives wonder whether they&amp;rsquo;re leaving performance on the table by not upgrading. Here&amp;rsquo;s the honest answer from running this drive for years: probably not.&lt;/p>
&lt;h2 id="the-hardware-briefly">The hardware, briefly&lt;/h2>
&lt;p>Samsung&amp;rsquo;s 970 EVO Plus uses 92-layer V-NAND TLC NAND with Samsung&amp;rsquo;s in-house Phoenix controller and LPDDR4 DRAM cache. The 1TB variant is rated at:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Spec&lt;/th>
&lt;th scope="col">Value&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Interface&lt;/td>
&lt;td>PCIe 3.0 × 4, NVMe 1.3&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Sequential read&lt;/td>
&lt;td>3,500 MB/s&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Sequential write&lt;/td>
&lt;td>3,300 MB/s&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Random read (4KB)&lt;/td>
&lt;td>600,000 IOPS&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Random write (4KB)&lt;/td>
&lt;td>550,000 IOPS&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>DRAM cache&lt;/td>
&lt;td>Yes (LPDDR4)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Endurance&lt;/td>
&lt;td>600 TBW&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Warranty&lt;/td>
&lt;td>5 years&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Form factor&lt;/td>
&lt;td>M.2 2280&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Source: &lt;a href="https://www.samsung.com/semiconductor/minisite/ssd/product/consumer/970evoplus/" rel="noopener">Samsung official 970 EVO Plus specifications&lt;/a>&lt;/p>
&lt;p>The random IOPS numbers matter more than the sequential numbers for everything except file transfers and large data workloads. Game load times, application launches, OS responsiveness — these are IOPS workloads, not sequential workloads. The 970 EVO Plus&amp;rsquo;s 600K/550K IOPS puts it in a range where it is not the bottleneck in any typical gaming or desktop workflow.&lt;/p>
&lt;h2 id="real-world-use-as-a-boot-drive">Real-world use as a boot drive&lt;/h2>
&lt;p>This drive holds Windows and my game library in a &lt;a href="https://techfuelhq.com/articles/gaming-pc-build-2026/">Ryzen 7 7800X3D build&lt;/a> with a &lt;a href="https://techfuelhq.com/reviews/rog-strix-b650a-review-2026/">ROG STRIX B650-A&lt;/a> motherboard. The B650-A has a PCIe 5.0 M.2 slot I haven&amp;rsquo;t used for anything yet and two PCIe 4.0 M.2 slots. The 970 EVO Plus runs in one of the PCIe 4.0 slots at native PCIe 3.0 speeds — that&amp;rsquo;s the correct behavior, backward compatible with no performance penalty beyond the Gen3 ceiling.&lt;/p>
&lt;p>In day-to-day use: fast. There is no situation where I&amp;rsquo;m waiting on storage in typical workflows. Game loads in Baldur&amp;rsquo;s Gate 3 take about 12 seconds from click to playable. Cyberpunk 2077 initial load is around 15 seconds. Those numbers on a Gen4 drive at 7,000 MB/s would be roughly 11 and 14 seconds. Half a second to a second faster per load. That&amp;rsquo;s the real-world gap.&lt;/p>
&lt;p>For game load times specifically, the IOPS throughput matters more than sequential throughput, and the gap between a quality PCIe 3.0 drive and a quality PCIe 4.0 drive in IOPS is narrower than the sequential bandwidth gap implies.&lt;/p>
&lt;h2 id="thermals">Thermals&lt;/h2>
&lt;p>This is the 970 EVO Plus&amp;rsquo;s weakest point. Under sustained sequential writes — large game installs, moving large video files, system image backups — the drive runs warm. Surface temperatures in the 55–65°C range under heavy write workloads are normal and within spec, but noticeably warmer than modern Gen4 drives that run cooler due to smaller process nodes.&lt;/p>
&lt;p>In a slot without a heatsink, it&amp;rsquo;s worth monitoring via CrystalDiskInfo or HWiNFO64 the first few times you run heavy workloads. The B650-A&amp;rsquo;s M.2 slots come with thermal pads and shields; the 970 EVO Plus runs comfortably in those slots with the included heatsink assembly.&lt;/p>
&lt;p>Throttling doesn&amp;rsquo;t occur in typical desktop use — only under sustained sequential writes that would also challenge most people&amp;rsquo;s SATA connectivity. For a gaming boot drive, thermal throttling is a non-issue.&lt;/p>
&lt;h2 id="the-gen4-comparison-question">The Gen4 comparison question&lt;/h2>
&lt;p>Current Gen4 drives at comparable price points:&lt;/p>
&lt;ul>
&lt;li>Samsung 990 Pro: 7,450/6,900 MB/s sequential, ~$80-90 for 1TB&lt;/li>
&lt;li>WD Black SN850X: 7,300/6,600 MB/s sequential, ~$85-95 for 1TB&lt;/li>
&lt;li>Crucial T500: 7,300/6,800 MB/s sequential, ~$70-80 for 1TB&lt;/li>
&lt;/ul>
&lt;p>In 2026, Gen4 drives are essentially price-equivalent to where the 970 EVO Plus was when new. The sequential bandwidth ceiling is double. In sustained sequential transfer workloads — large file copies, video editing timelines, VM disk images with heavy I/O — the Gen4 drives are meaningfully faster.&lt;/p>
&lt;p>For everything else — OS boot, game load, application launch, daily file access — the gap is measured in fractions of seconds.&lt;/p>
&lt;p>&lt;strong>If I were buying new today, I would not buy the 970 EVO Plus.&lt;/strong> Gen4 drives are available at the same price, run cooler, offer double the sequential bandwidth, and have matching or better IOPS. The 970 EVO Plus was the right buy in 2019–2021. It is not the right buy in 2026.&lt;/p>
&lt;p>&lt;strong>If I already own one, I would not replace it.&lt;/strong> The performance I lose to not having a Gen4 boot drive is less than the time it takes to clone drives and reinstall.&lt;/p>
&lt;h2 id="endurance-and-reliability">Endurance and reliability&lt;/h2>
&lt;p>600 TBW on the 1TB is a strong endurance rating. At typical desktop write loads — 30–50 GB/day — you&amp;rsquo;d reach 600 TBW in 32–55 years, and the &lt;a href="https://techfuelhq.com/tools/ssd-endurance-calculator/">SSD endurance calculator&lt;/a> runs the same arithmetic for your own daily writes and write amplification. Endurance is not a practical concern for this drive in any normal use case. The NAND will survive longer than the rest of the system.&lt;/p>
&lt;p>Samsung&amp;rsquo;s V-NAND reliability track record is excellent. For a boot drive in a long-running machine, the 970 EVO Plus is among the most reliable options available regardless of generation.&lt;/p>
&lt;p>The 5-year warranty is a real warranty from a manufacturer still in business and still supporting the product line. This is a relevant contrast to the &lt;a href="https://techfuelhq.com/reviews/evga-supernova-1000-gt-review-2026/">EVGA SuperNOVA&lt;/a> situation where the brand exited hardware production.&lt;/p>
&lt;h2 id="dram-cache-why-it-matters">DRAM cache: why it matters&lt;/h2>
&lt;p>The 970 EVO Plus includes LPDDR4 DRAM. Drives without DRAM (DRAM-less drives, common in budget segments) use host memory buffer (HMB) — borrowing system RAM — which introduces latency. Under sustained write loads, DRAM-less drives hit a write cliff where performance drops dramatically as the SLC cache fills and the controller falls back to writing directly to the NAND.&lt;/p>
&lt;p>The 970 EVO Plus&amp;rsquo;s DRAM cache prevents this cliff for typical workloads. Under heavy sustained write (200+ GB transfers), it will eventually exhaust the SLC layer and fall back to raw TLC write speeds (~1,200 MB/s), but this only matters for transfer workloads larger than most users ever encounter.&lt;/p>
&lt;h2 id="verdict">Verdict&lt;/h2>
&lt;p>The 970 EVO Plus is a well-built, reliable, properly-performing PCIe 3.0 NVMe that has aged gracefully. It is no longer a competitive purchase at 2026 prices, but it remains a fully capable daily drive for any workload that isn&amp;rsquo;t specifically bottlenecked by sequential throughput. If it&amp;rsquo;s in your system, keep it. If you need more storage, add a Gen4 drive rather than replacing it. If you&amp;rsquo;re building new, buy Gen4.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Related hardware in this build: &lt;a href="https://techfuelhq.com/reviews/rog-strix-b650a-review-2026/">ROG STRIX B650-A review&lt;/a> covers the motherboard this drive runs in, including M.2 slot configuration and thermal performance. The &lt;a href="https://techfuelhq.com/articles/gaming-pc-build-2026/">Gaming PC Build 2026&lt;/a> article lists the full build context.&lt;/em>&lt;/p></description></item><item><title>Are Proxmox Helper Scripts Safe? What Runs as Root (2026)</title><link>https://techfuelhq.com/homelab/proxmox-helper-scripts-safe-2026/</link><pubDate>Wed, 17 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/homelab/proxmox-helper-scripts-safe-2026/</guid><description>&lt;p>If you run a Proxmox homelab, you have seen the one-liners. A forum post or a YouTube comment says &amp;ldquo;just paste this,&amp;rdquo; you copy a &lt;code>bash -c &amp;quot;$(curl ...)&amp;quot;&lt;/code> command into your Proxmox shell, and ninety seconds later you have a fully configured LXC container running Jellyfin, AdGuard, or Home Assistant. They are the &lt;a href="https://github.com/community-scripts/ProxmoxVE" rel="noopener">community-scripts ProxmoxVE&lt;/a> helper scripts — the project formerly known as tteck&amp;rsquo;s Proxmox scripts — and they are some of the most-used tools in the entire homelab ecosystem.&lt;/p>
&lt;p>The question people quietly type into a search bar before pasting that command is the right one: &lt;strong>is this actually safe?&lt;/strong>&lt;/p>
&lt;p>The honest answer is &amp;ldquo;mostly, with conditions&amp;rdquo; — and the conditions matter more than most write-ups admit. I read the current source to write this, and the part that changes the calculus is that the script you paste is not the only code that runs. Here is what these scripts actually do as root, where the real risk lives, and a practical way to use them without gambling your node.&lt;/p>
&lt;img src="https://techfuelhq.com/images/homelab/proxmox-helper-scripts-safe-2026.svg" width="1200" height="788" loading="lazy" decoding="async" alt="Six-step workflow to vet a Proxmox helper script before running it as root: read it before you run it, back up the host first, test on a non-critical node, download-review-then-run a saved copy, pin to a commit if you re-run it, and keep the service in an unprivileged LXC; on a test node steps 1-2 are plenty, on a host you cannot afford to lose do all six." style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;h2 id="the-short-answer">The short answer&lt;/h2>
&lt;ul>
&lt;li>These are &lt;strong>legitimate, reputable, community-maintained scripts&lt;/strong> under the MIT license, built on tteck&amp;rsquo;s original work. They are not malware.&lt;/li>
&lt;li>They run &lt;strong>as root on your Proxmox host&lt;/strong>, and they &lt;strong>download more code from GitHub while they run&lt;/strong> — so reviewing the one file the command points at does not show you everything.&lt;/li>
&lt;li>The trust model changed when tteck passed away and the project moved to community maintainers. That is a reason to re-examine your assumptions, not to panic.&lt;/li>
&lt;li>For a &lt;strong>test node&lt;/strong>, the risk is low. For a &lt;strong>host you cannot afford to lose&lt;/strong>, read the script and &lt;strong>snapshot or back up first&lt;/strong>.&lt;/li>
&lt;/ul>
&lt;h2 id="what-the-helper-scripts-actually-are">What the helper scripts actually are&lt;/h2>
&lt;p>The project lives at &lt;code>community-scripts/ProxmoxVE&lt;/code> and powers a catalog of hundreds of one-command installers for self-hosted services — media servers, home automation, databases, networking tools, monitoring. You browse the catalog at community-scripts.org, find your service, copy the install command from its page, and paste it into the Proxmox host&amp;rsquo;s root shell. The repo&amp;rsquo;s own requirements line says it plainly: you need &lt;strong>&amp;ldquo;root shell access on the Proxmox host.&amp;rdquo;&lt;/strong>&lt;/p>
&lt;p>The provenance matters. The scripts began as &lt;strong>tteck&amp;rsquo;s&lt;/strong> personal project (&lt;code>tteck/Proxmox&lt;/code>). After tteck passed away, the work was carried forward by a community team as &lt;code>community-scripts/ProxmoxVE&lt;/code>, licensed MIT and footnoted &lt;strong>&amp;ldquo;In memory of tteck.&amp;rdquo;&lt;/strong> That is a genuinely good outcome for an orphaned project — but it is also the crux of the safety question, which is really a &lt;em>trust&lt;/em> question.&lt;/p>
&lt;h2 id="what-actually-runs-as-root-the-part-most-guides-skip">What actually runs as root (the part most guides skip)&lt;/h2>
&lt;p>When you paste a helper-script one-liner, it fetches a script from GitHub and executes it as root. That much is obvious. What is less obvious is what that script does next.&lt;/p>
&lt;p>Reading the shared framework that nearly every container script relies on — &lt;code>misc/build.func&lt;/code> — the very first thing it does is pull &lt;em>more&lt;/em> code from the internet and execute it in the running shell:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>source &amp;lt;&lt;span style="color:#f92672">(&lt;/span>curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/api.func&lt;span style="color:#f92672">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>source &amp;lt;&lt;span style="color:#f92672">(&lt;/span>curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/core.func&lt;span style="color:#f92672">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>source &amp;lt;&lt;span style="color:#f92672">(&lt;/span>wget -qO- https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/error_handler.func&lt;span style="color:#f92672">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>That &lt;code>source &amp;lt;(curl ...)&lt;/code> pattern — process substitution — runs the downloaded file&amp;rsquo;s contents directly, as root, the moment it lands. The framework falls back to &lt;code>wget&lt;/code> if &lt;code>curl&lt;/code> is missing. So a single &amp;ldquo;review the script&amp;rdquo; step is misleading: the file you read is a loader that, at runtime, pulls in several more files (&lt;code>api.func&lt;/code>, &lt;code>core.func&lt;/code>, &lt;code>error_handler.func&lt;/code>, and others) from the &lt;code>main&lt;/code> branch. You are trusting the &lt;em>current state of the repository&lt;/em> at the moment you run it, not the static text you skimmed.&lt;/p>
&lt;p>From there, &lt;code>build.func&lt;/code> does exactly what you would expect a capable installer to do — and it is a lot:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Creates an LXC container&lt;/strong> with the CPU, RAM, and disk you choose.&lt;/li>
&lt;li>&lt;strong>Configures networking&lt;/strong> — DHCP or static IP, IPv6, VLAN tags, MTU, bridge selection.&lt;/li>
&lt;li>&lt;strong>Selects storage&lt;/strong> for the container rootfs and templates.&lt;/li>
&lt;li>&lt;strong>Sets security-relevant options&lt;/strong> — SSH keys, the root password, GPU passthrough, container nesting, FUSE/TUN.&lt;/li>
&lt;li>&lt;strong>Applies host/system settings&lt;/strong> — timezone, hostname, DNS, APT caching, tags, protection flags.&lt;/li>
&lt;/ul>
&lt;p>It walks you through all of this with a whiptail wizard (roughly 29 configuration steps in the current code). None of that is malicious. But every one of those actions happens with full root authority on your hypervisor, driven partly by code fetched live from the internet.&lt;/p>
&lt;h2 id="so-where-is-the-real-risk">So where is the real risk?&lt;/h2>
&lt;p>It is not &amp;ldquo;the maintainers are bad actors.&amp;rdquo; The repo is public, popular, MIT-licensed, and reviewable. The risk is structural, and it is the same risk as any &lt;em>curl-to-bash-as-root&lt;/em> workflow:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>You are trusting a moving target.&lt;/strong> The one-liner pulls from &lt;code>main&lt;/code>. Code that was clean last week is not guaranteed to be the code you run today. There is no review step between &amp;ldquo;a commit lands&amp;rdquo; and &amp;ldquo;it executes as root on your box.&amp;rdquo;&lt;/li>
&lt;li>&lt;strong>The trust handover is real.&lt;/strong> As one homelabber put it bluntly after the maintainer change: &lt;em>&amp;ldquo;Ever since tteck passed away, I stopped using them. He was the guy who wrote those scripts and I trusted him.&amp;rdquo;&lt;/em> That is not an accusation against the new maintainers — it is an honest acknowledgment that &amp;ldquo;I trust this project&amp;rdquo; is a decision you should make consciously, not inherit.&lt;/li>
&lt;li>&lt;strong>Supply-chain compromise is a documented pattern.&lt;/strong> The 2024 &lt;code>xz-utils&lt;/code> backdoor showed that even long-trusted open-source tooling can be subverted by the people maintaining it. A widely-used script repo that runs as root on tens of thousands of hypervisors is exactly the kind of high-value target that history says to treat carefully.&lt;/li>
&lt;li>&lt;strong>The blast radius is your whole node.&lt;/strong> Running as root, a bad or buggy script can wipe data, misconfigure the host, or install something unintended. As the community guides say without sugar-coating: you could end up with &lt;em>&amp;ldquo;malware, a wiped drive, or a compromised Proxmox node.&amp;rdquo;&lt;/em>&lt;/li>
&lt;/ul>
&lt;p>To be clear about proportion: there is no known incident of these scripts shipping malware, and millions of installs have gone fine. The point is that &amp;ldquo;it has been fine so far&amp;rdquo; and &amp;ldquo;it is safe to run blind on my production host&amp;rdquo; are two different statements.&lt;/p>
&lt;h2 id="how-to-vet-a-helper-script-the-workflow-id-use">How to vet a helper script (the workflow I&amp;rsquo;d use)&lt;/h2>
&lt;p>You do not have to choose between &amp;ldquo;paste blindly&amp;rdquo; and &amp;ldquo;never use them.&amp;rdquo; A few habits move you from gambling to a calculated, reversible decision:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Read it before you run it.&lt;/strong> Open the raw GitHub URL the one-liner points at and actually read it. Remember the framework pulls in more files at runtime — so also skim &lt;code>build.func&lt;/code> once to understand what the shared engine does. You are not auditing every line forever; you are confirming it does what it claims and noting that it sources remote code.&lt;/li>
&lt;li>&lt;strong>Back up the host first.&lt;/strong> Snapshot or back up the Proxmox node with &lt;a href="https://techfuelhq.com/tutorials/proxmox-backup-server-3-2-1-2026/">Proxmox Backup Server&lt;/a> before running anything new. This single step converts &amp;ldquo;a bad script bricked my node&amp;rdquo; into &amp;ldquo;I restored in ten minutes.&amp;rdquo;&lt;/li>
&lt;li>&lt;strong>Test on a non-critical node.&lt;/strong> If you run more than one box, try new scripts on the one you would not cry over. If you run one node, that is even more reason to do steps 1 and 2.&lt;/li>
&lt;li>&lt;strong>Download, review, then run a saved copy&lt;/strong> instead of piping straight to bash. &lt;code>curl -fsSL &amp;lt;url&amp;gt; -o app.sh&lt;/code>, read &lt;code>app.sh&lt;/code>, then &lt;code>bash app.sh&lt;/code>. Now you are running a fixed, reviewed file — not whatever &lt;code>main&lt;/code> happens to contain at execution time.&lt;/li>
&lt;li>&lt;strong>Pin to a commit if you re-run it.&lt;/strong> If a script is part of your routine, reference a specific commit hash rather than &lt;code>main&lt;/code> so you get a reproducible, reviewed version each time.&lt;/li>
&lt;li>&lt;strong>Keep the service in an unprivileged LXC&lt;/strong> where the app supports it, and do not flip on nesting, FUSE, or passthrough unless the workload actually needs them. Least privilege limits what a future problem can reach.&lt;/li>
&lt;/ol>
&lt;p>If that sounds like more friction than &amp;ldquo;paste this,&amp;rdquo; that is the trade. The scripts buy you speed; these habits buy back the safety you skipped. On a test node, steps 1–2 are plenty. On a host running things you care about, do all six.&lt;/p>
&lt;h2 id="when-to-use-them--and-when-not-to">When to use them — and when not to&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Situation&lt;/th>
&lt;th scope="col">Verdict&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Spinning up a throwaway service on a test node&lt;/td>
&lt;td>Fine — read it, run it, move on&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Learning Proxmox and what a clean LXC setup looks like&lt;/td>
&lt;td>Great — but read the script so you learn what it did&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Installing on your main node with data you care about&lt;/td>
&lt;td>Only after a host backup + a read-through&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Production / anything you cannot restore quickly&lt;/td>
&lt;td>Prefer doing the install yourself, or run from a reviewed, pinned copy&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>You cannot or will not read a bash script at all&lt;/td>
&lt;td>Reconsider — that is the user these workflows are riskiest for&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>There is also a long-term argument worth taking seriously: the scripts are a fantastic accelerator and a poor teacher. As one user put it, &lt;em>&amp;ldquo;they are good for learning short term, but when you find yourself getting serious on a project, you&amp;rsquo;re better off learning to do it without the scripts.&amp;rdquo;&lt;/em> Knowing how to create and configure an &lt;a href="https://techfuelhq.com/homelab/lxc-vs-vm-proxmox-2026/">LXC container yourself&lt;/a> — or &lt;a href="https://techfuelhq.com/articles/proxmox-mini-pc-setup/">set up a node from scratch&lt;/a> — means you are never dependent on a third party&amp;rsquo;s root access to your hypervisor.&lt;/p>
&lt;h2 id="the-honest-verdict">The honest verdict&lt;/h2>
&lt;p>The Proxmox helper scripts are not a scam, not malware, and not a mistake to use. They are a well-run, MIT-licensed, community-maintained project doing a genuinely useful thing. But &amp;ldquo;is it safe?&amp;rdquo; is the wrong shape of question. The accurate version is: &lt;em>&amp;ldquo;am I comfortable letting code fetched live from GitHub run as root on this specific host, and could I recover if it went wrong?&amp;rdquo;&lt;/em>&lt;/p>
&lt;p>On a test node, the answer is almost always yes — use them, and read them to learn. On a host you cannot afford to lose, make it a yes on purpose: read the script, understand that it pulls more code at runtime, back the node up first, and keep your containers least-privileged. Do that, and you get the ninety-second install without betting the homelab on it.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>community-scripts/ProxmoxVE repository and README (MIT license, &amp;ldquo;In memory of tteck,&amp;rdquo; root requirement): &lt;a href="https://github.com/community-scripts/ProxmoxVE" rel="noopener">https://github.com/community-scripts/ProxmoxVE&lt;/a>&lt;/li>
&lt;li>&lt;code>misc/build.func&lt;/code> shared installer framework (runtime remote sourcing of &lt;code>api.func&lt;/code> / &lt;code>core.func&lt;/code> / &lt;code>error_handler.func&lt;/code>): &lt;a href="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func" rel="noopener">https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func&lt;/a>&lt;/li>
&lt;li>&amp;ldquo;Helper Scripts or Hidden Risks? The Ongoing Debate in the Proxmox Community&amp;rdquo; (trust, handover, vetting): &lt;a href="https://www.mrplanb.com/blog/helper-scripts-hidden-risks-proxmox-community" rel="noopener">https://www.mrplanb.com/blog/helper-scripts-hidden-risks-proxmox-community&lt;/a>&lt;/li>
&lt;li>Proxmox forum: &amp;ldquo;How safe are the Updatable PVE Helper-Scripts&amp;rdquo;: &lt;a href="https://forum.proxmox.com/threads/how-safe-are-the-updatable-pve-helper-scripts.174400/" rel="noopener">https://forum.proxmox.com/threads/how-safe-are-the-updatable-pve-helper-scripts.174400/&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Authentik Self-Hosted SSO for the Homelab (2026)</title><link>https://techfuelhq.com/tutorials/authentik-sso-self-hosted-2026/</link><pubDate>Wed, 17 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tutorials/authentik-sso-self-hosted-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-17 · ~15 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/tutorials/authentik-sso-self-hosted-2026.svg" alt="Authentik self-hosted SSO architecture: a browser reaches Nginx Proxy Manager over HTTPS at auth.yourdomain.com, which forwards to the authentik-server container on port 9000. The server and worker containers share a PostgreSQL 16 database and a Redis cache (about 420 MB idle across four containers), connecting apps like Nextcloud over OIDC and BookStack over LDAP on port 3389." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>Once you have ten self-hosted services running, the per-app account problem becomes real. Nextcloud has one username/password. BookStack has another. Portainer has a third. Grafana has a fourth. If you add family members or collaborators, you&amp;rsquo;re creating accounts across every app separately.&lt;/p>
&lt;p>Authentik solves this with a single login that every other app delegates to. It runs in Docker, supports every authentication protocol your apps need, and the free tier covers everything a homelab will ever use. (Still deciding between Authentik and the lighter Authelia? &lt;a href="https://techfuelhq.com/homelab/authelia-vs-authentik-2026/">Authelia vs Authentik&lt;/a> compares footprint, protocol coverage, and which one actually does single logout — then come back here to build Authentik.)&lt;/p>
&lt;h2 id="what-authentik-gives-you">What Authentik gives you&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Single sign-on (SSO):&lt;/strong> one login for Nextcloud, BookStack, Grafana, Portainer, Gitea, Immich, and any other OIDC/SAML/LDAP-capable app&lt;/li>
&lt;li>&lt;strong>LDAP provider:&lt;/strong> apps that can&amp;rsquo;t do OIDC (or are easier to configure with LDAP) connect via Authentik&amp;rsquo;s built-in LDAP server&lt;/li>
&lt;li>&lt;strong>MFA:&lt;/strong> TOTP, WebAuthn/passkeys, Duo — configurable per application and per user group&lt;/li>
&lt;li>&lt;strong>User self-enrollment:&lt;/strong> users can reset their own passwords, enroll MFA devices, and manage sessions through the Authentik user portal&lt;/li>
&lt;li>&lt;strong>Outpost proxy:&lt;/strong> protect apps that have no built-in auth at all (add authentication in front of any web UI)&lt;/li>
&lt;/ul>
&lt;h2 id="the-authentik-model">The Authentik model&lt;/h2>
&lt;p>Before deploying, understand three concepts:&lt;/p>
&lt;p>&lt;strong>Providers:&lt;/strong> define the protocol connection — OIDC/OAuth2, SAML, LDAP, or Proxy. Each external app needs a Provider with the right protocol for how it authenticates.&lt;/p>
&lt;p>&lt;strong>Applications:&lt;/strong> tie a Provider to an entry in the Authentik portal (name, icon, launch URL). Users see a list of Applications in their portal; clicking an Application authenticates them to that service.&lt;/p>
&lt;p>&lt;strong>Flows:&lt;/strong> sequences of stages (authentication prompts, MFA, consent, enrollment) that run when a user logs in, enrolls, or resets their password. Authentik ships with sensible default flows.&lt;/p>
&lt;h2 id="stack-requirements">Stack requirements&lt;/h2>
&lt;p>Authentik has more dependencies than most self-hosted apps:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Container&lt;/th>
&lt;th scope="col">Role&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>authentik-server&lt;/code>&lt;/td>
&lt;td>Main web UI, API, authentication flows&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>authentik-worker&lt;/code>&lt;/td>
&lt;td>Background tasks (email, cleanup, LDAP outpost)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>authentik-db&lt;/code>&lt;/td>
&lt;td>PostgreSQL — user accounts, sessions, configuration&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>authentik-redis&lt;/code>&lt;/td>
&lt;td>Task queue and cache&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Total idle RAM: approximately 500–700 MB combined. Authentik is heavier than BookStack or Paperless-ngx at idle, which reflects the complexity of the task it handles.&lt;/p>
&lt;h2 id="directory-layout">Directory layout&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>mkdir -p /opt/authentik/media /opt/authentik/certs /opt/authentik/custom-templates
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="docker-compose">Docker Compose&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">services&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">authentik-db&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">postgres:16&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">authentik-db&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">unless-stopped&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">environment&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">POSTGRES_DB&lt;/span>: &lt;span style="color:#ae81ff">authentik&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">POSTGRES_USER&lt;/span>: &lt;span style="color:#ae81ff">authentik&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">POSTGRES_PASSWORD&lt;/span>: &lt;span style="color:#ae81ff">CHANGE_THIS_DB_PASSWORD&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">/opt/authentik/db:/var/lib/postgresql/data&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">healthcheck&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">test&lt;/span>: [&lt;span style="color:#e6db74">&amp;#34;CMD-SHELL&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;pg_isready -U authentik&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">interval&lt;/span>: &lt;span style="color:#ae81ff">10s&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">timeout&lt;/span>: &lt;span style="color:#ae81ff">5s&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">retries&lt;/span>: &lt;span style="color:#ae81ff">5&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">authentik-redis&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">redis:7-alpine&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">authentik-redis&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">unless-stopped&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">command&lt;/span>: --&lt;span style="color:#ae81ff">save 60 1 --loglevel warning&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">authentik-server&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">ghcr.io/goauthentik/server:2024.12&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">authentik-server&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">unless-stopped&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">command&lt;/span>: &lt;span style="color:#ae81ff">server&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">depends_on&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">authentik-db&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">condition&lt;/span>: &lt;span style="color:#ae81ff">service_healthy&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">authentik-redis&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">condition&lt;/span>: &lt;span style="color:#ae81ff">service_started&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">environment&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">AUTHENTIK_REDIS__HOST&lt;/span>: &lt;span style="color:#ae81ff">authentik-redis&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">AUTHENTIK_POSTGRESQL__HOST&lt;/span>: &lt;span style="color:#ae81ff">authentik-db&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">AUTHENTIK_POSTGRESQL__USER&lt;/span>: &lt;span style="color:#ae81ff">authentik&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">AUTHENTIK_POSTGRESQL__PASSWORD&lt;/span>: &lt;span style="color:#ae81ff">CHANGE_THIS_DB_PASSWORD&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">AUTHENTIK_POSTGRESQL__NAME&lt;/span>: &lt;span style="color:#ae81ff">authentik&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">AUTHENTIK_SECRET_KEY&lt;/span>: &lt;span style="color:#ae81ff">CHANGE_THIS_SECRET_KEY&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">AUTHENTIK_EMAIL__HOST&lt;/span>: &lt;span style="color:#ae81ff">smtp.yourdomain.com&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">AUTHENTIK_EMAIL__PORT&lt;/span>: &lt;span style="color:#ae81ff">587&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">AUTHENTIK_EMAIL__USE_TLS&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;true&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">AUTHENTIK_EMAIL__USERNAME&lt;/span>: &lt;span style="color:#ae81ff">authentik@yourdomain.com&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">AUTHENTIK_EMAIL__PASSWORD&lt;/span>: &lt;span style="color:#ae81ff">your-smtp-password&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">AUTHENTIK_EMAIL__FROM&lt;/span>: &lt;span style="color:#ae81ff">authentik@yourdomain.com&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">/opt/authentik/media:/media&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">/opt/authentik/custom-templates:/templates&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">ports&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#34;9000:9000&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#34;9443:9443&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">authentik-worker&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">ghcr.io/goauthentik/server:2024.12&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">authentik-worker&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">unless-stopped&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">command&lt;/span>: &lt;span style="color:#ae81ff">worker&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">depends_on&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">authentik-db&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">condition&lt;/span>: &lt;span style="color:#ae81ff">service_healthy&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">authentik-redis&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">condition&lt;/span>: &lt;span style="color:#ae81ff">service_started&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">environment&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">AUTHENTIK_REDIS__HOST&lt;/span>: &lt;span style="color:#ae81ff">authentik-redis&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">AUTHENTIK_POSTGRESQL__HOST&lt;/span>: &lt;span style="color:#ae81ff">authentik-db&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">AUTHENTIK_POSTGRESQL__USER&lt;/span>: &lt;span style="color:#ae81ff">authentik&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">AUTHENTIK_POSTGRESQL__PASSWORD&lt;/span>: &lt;span style="color:#ae81ff">CHANGE_THIS_DB_PASSWORD&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">AUTHENTIK_POSTGRESQL__NAME&lt;/span>: &lt;span style="color:#ae81ff">authentik&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">AUTHENTIK_SECRET_KEY&lt;/span>: &lt;span style="color:#ae81ff">CHANGE_THIS_SECRET_KEY&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">/opt/authentik/media:/media&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">/opt/authentik/custom-templates:/templates&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">/var/run/docker.sock:/var/run/docker.sock&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Three values to set before starting:&lt;/p>
&lt;ul>
&lt;li>&lt;code>AUTHENTIK_SECRET_KEY&lt;/code>: generate with &lt;code>openssl rand -hex 32&lt;/code>&lt;/li>
&lt;li>&lt;code>AUTHENTIK_POSTGRESQL__PASSWORD&lt;/code> and &lt;code>POSTGRES_PASSWORD&lt;/code>: must match&lt;/li>
&lt;li>SMTP settings: required for password reset and email verification flows; without SMTP, those flows fail silently&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Pinning the version:&lt;/strong> use a specific version tag (&lt;code>2024.12&lt;/code>) rather than &lt;code>latest&lt;/code>. Authentik uses a &lt;code>YEAR.MONTH&lt;/code> release format; major updates can change configuration and database schema. Check &lt;a href="https://goauthentik.io/docs/releases" rel="noopener">release notes&lt;/a> before updating.&lt;/p>
&lt;h2 id="first-start">First start&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>cd /opt/authentik
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker compose up -d
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Watch the server start (takes 60-90 seconds first run for database migration)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker compose logs -f authentik-server
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Wait for the log line &lt;code>Starting web server&lt;/code> before navigating to the UI.&lt;/p>
&lt;p>&lt;strong>Initial admin setup:&lt;/strong> navigate to &lt;code>https://your-host-ip:9443/if/flow/initial-setup/&lt;/code> — this URL only works on the first run. Create the admin account here. After setup, the initial-setup flow is disabled.&lt;/p>
&lt;h2 id="reverse-proxy-with-npm">Reverse proxy with NPM&lt;/h2>
&lt;p>Add Authentik to Nginx Proxy Manager:&lt;/p>
&lt;ul>
&lt;li>Domain: &lt;code>auth.yourdomain.com&lt;/code>&lt;/li>
&lt;li>Forward to: &lt;code>authentik-server:9000&lt;/code>&lt;/li>
&lt;li>SSL: Let&amp;rsquo;s Encrypt&lt;/li>
&lt;/ul>
&lt;p>In NPM Advanced tab:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-nginx" data-lang="nginx">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">proxy_set_header&lt;/span> &lt;span style="color:#e6db74">X-Forwarded-For&lt;/span> $proxy_add_x_forwarded_for;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">proxy_set_header&lt;/span> &lt;span style="color:#e6db74">X-Forwarded-Proto&lt;/span> &lt;span style="color:#e6db74">https&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">client_max_body_size&lt;/span> &lt;span style="color:#e6db74">10M&lt;/span>;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Update &lt;code>AUTHENTIK_URL&lt;/code> in your compose environment to &lt;code>https://auth.yourdomain.com&lt;/code> after setting up the proxy. Authentik uses this URL in redirect URIs for OAuth2 flows.&lt;/p>
&lt;h2 id="configure-your-first-oidc-application-nextcloud">Configure your first OIDC application: Nextcloud&lt;/h2>
&lt;p>Nextcloud is one of the best test applications for Authentik because it has mature OIDC support. This also fills in your user accounts with a real test.&lt;/p>
&lt;p>&lt;strong>Step 1: Create an OIDC Provider in Authentik&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>Authentik Admin → Applications → Providers → Create&lt;/li>
&lt;li>Select: OAuth2/OpenID Connect Provider&lt;/li>
&lt;li>Name: &lt;code>Nextcloud&lt;/code>&lt;/li>
&lt;li>Client ID: auto-generated (copy for later)&lt;/li>
&lt;li>Client Secret: auto-generated (copy for later)&lt;/li>
&lt;li>Redirect URIs: &lt;code>https://nextcloud.yourdomain.com/apps/oidc_login/oidc&lt;/code> (exact URL for the Nextcloud OIDC app)&lt;/li>
&lt;li>Sub Mode: Based on username (default is fine)&lt;/li>
&lt;li>Save&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Step 2: Create an Application&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>Admin → Applications → Applications → Create&lt;/li>
&lt;li>Name: &lt;code>Nextcloud&lt;/code>&lt;/li>
&lt;li>Provider: select &lt;code>Nextcloud&lt;/code> (from step 1)&lt;/li>
&lt;li>Launch URL: &lt;code>https://nextcloud.yourdomain.com&lt;/code>&lt;/li>
&lt;li>Icon: upload a Nextcloud logo (optional)&lt;/li>
&lt;li>Save&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Step 3: Configure Nextcloud&lt;/strong>&lt;/p>
&lt;p>In Nextcloud:&lt;/p>
&lt;ol>
&lt;li>Install the &lt;code>oidc_login&lt;/code> app via Nextcloud → Apps → search &amp;ldquo;OpenID Connect Login&amp;rdquo;&lt;/li>
&lt;li>Add to &lt;code>config/config.php&lt;/code>:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">&amp;#39;oidc_login_provider_url&amp;#39;&lt;/span> &lt;span style="color:#f92672">=&amp;gt;&lt;/span> &lt;span style="color:#e6db74">&amp;#39;https://auth.yourdomain.com/application/o/nextcloud/&amp;#39;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">&amp;#39;oidc_login_client_id&amp;#39;&lt;/span> &lt;span style="color:#f92672">=&amp;gt;&lt;/span> &lt;span style="color:#e6db74">&amp;#39;CLIENT_ID_FROM_AUTHENTIK&amp;#39;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">&amp;#39;oidc_login_client_secret&amp;#39;&lt;/span> &lt;span style="color:#f92672">=&amp;gt;&lt;/span> &lt;span style="color:#e6db74">&amp;#39;CLIENT_SECRET_FROM_AUTHENTIK&amp;#39;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">&amp;#39;oidc_login_auto_redirect&amp;#39;&lt;/span> &lt;span style="color:#f92672">=&amp;gt;&lt;/span> &lt;span style="color:#66d9ef">false&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">&amp;#39;oidc_login_button_text&amp;#39;&lt;/span> &lt;span style="color:#f92672">=&amp;gt;&lt;/span> &lt;span style="color:#e6db74">&amp;#39;Log in with Authentik&amp;#39;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">&amp;#39;oidc_login_scope&amp;#39;&lt;/span> &lt;span style="color:#f92672">=&amp;gt;&lt;/span> &lt;span style="color:#e6db74">&amp;#39;openid email profile&amp;#39;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">&amp;#39;oidc_login_end_session_redirect&amp;#39;&lt;/span> &lt;span style="color:#f92672">=&amp;gt;&lt;/span> &lt;span style="color:#66d9ef">false&lt;/span>,
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>After adding the config, Nextcloud shows an &amp;ldquo;Authentik&amp;rdquo; button on the login page. Clicking it redirects to Authentik, authenticates, and returns to Nextcloud with the user session.&lt;/p>
&lt;h2 id="configure-bookstack-with-ldap">Configure BookStack with LDAP&lt;/h2>
&lt;p>BookStack&amp;rsquo;s SAML2 and LDAP support are both good. LDAP is simpler to configure and doesn&amp;rsquo;t require understanding SAML assertion mapping. Authentik&amp;rsquo;s built-in LDAP provider serves BookStack accounts directly.&lt;/p>
&lt;p>&lt;strong>Step 1: Create an LDAP Provider in Authentik&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>Admin → Applications → Providers → Create → LDAP Provider&lt;/li>
&lt;li>Name: &lt;code>LDAP&lt;/code>&lt;/li>
&lt;li>Bind Flow: default&lt;/li>
&lt;li>Search Group: create a group called &lt;code>homelab-ldap&lt;/code> — all users in this group are visible over LDAP&lt;/li>
&lt;li>Save&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Step 2: Create an Application for the LDAP Provider&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>Admin → Applications → Applications → Create&lt;/li>
&lt;li>Name: &lt;code>LDAP&lt;/code>&lt;/li>
&lt;li>Provider: select &lt;code>LDAP&lt;/code>&lt;/li>
&lt;li>No Launch URL needed — LDAP isn&amp;rsquo;t a browser flow&lt;/li>
&lt;li>Save&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Step 3: Create an LDAP Outpost&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>Admin → Applications → Outposts → Create&lt;/li>
&lt;li>Name: &lt;code>LDAP Outpost&lt;/code>&lt;/li>
&lt;li>Type: LDAP&lt;/li>
&lt;li>Select the LDAP Application&lt;/li>
&lt;li>Save&lt;/li>
&lt;/ol>
&lt;p>The LDAP Outpost binds to port 3389 on the Authentik worker container (or a dedicated outpost container for more advanced setups). For a simple homelab setup, the embedded outpost (running inside the worker) is sufficient.&lt;/p>
&lt;p>&lt;strong>Step 4: Configure BookStack&lt;/strong>&lt;/p>
&lt;p>In your BookStack Docker Compose environment:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">AUTH_METHOD&lt;/span>: &lt;span style="color:#ae81ff">ldap&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">LDAP_SERVER&lt;/span>: &lt;span style="color:#ae81ff">authentik-worker&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">LDAP_PORT&lt;/span>: &lt;span style="color:#ae81ff">3389&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">LDAP_BASE_DN&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;DC=ldap,DC=goauthentik,DC=io&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">LDAP_DN&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;cn=ldapservice,DC=ldap,DC=goauthentik,DC=io&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">LDAP_PASS&lt;/span>: &lt;span style="color:#ae81ff">your-authentik-service-account-password&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">LDAP_USER_FILTER&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;(&amp;amp;(objectClass=person)(uid={user}))&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">LDAP_FOLLOW_REFERRALS&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;false&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The &lt;code>LDAP_BASE_DN&lt;/code> format is Authentik&amp;rsquo;s internal LDAP tree. The &lt;code>LDAP_DN&lt;/code> is a bind user — create a service account in Authentik for this purpose (a user with a known password that BookStack uses to search the LDAP directory).&lt;/p>
&lt;h2 id="add-mfa-for-specific-applications">Add MFA for specific applications&lt;/h2>
&lt;p>Authentik&amp;rsquo;s MFA is configured per-flow, not per-user. To require TOTP for all logins:&lt;/p>
&lt;ol>
&lt;li>Admin → Flows &amp;amp; Stages → Stages → Create → Authenticator TOTP Stage&lt;/li>
&lt;li>Add a Stage Binding in the default authentication flow after the password stage&lt;/li>
&lt;/ol>
&lt;p>To require MFA only for specific applications (e.g., Proxmox access but not BookStack):&lt;/p>
&lt;ol>
&lt;li>Create a new authentication flow specifically for high-security apps&lt;/li>
&lt;li>Include the MFA stage in that flow&lt;/li>
&lt;li>Configure the Proxmox Application to use this high-security flow instead of the default&lt;/li>
&lt;/ol>
&lt;p>This is where Authentik&amp;rsquo;s model shows its depth — granular security policies without per-app code.&lt;/p>
&lt;h2 id="user-management">User management&lt;/h2>
&lt;p>&lt;strong>Create users:&lt;/strong> Admin → Directory → Users → Create&lt;/p>
&lt;p>Or enable self-enrollment: Admin → Flows → create an enrollment flow and bind it to your Authentik tenant.&lt;/p>
&lt;p>&lt;strong>User groups:&lt;/strong> Admin → Directory → Groups → Create&lt;/p>
&lt;p>Groups control which Applications users can access. Create groups per tier of access (e.g., &lt;code>homelab-admin&lt;/code>, &lt;code>homelab-read&lt;/code>, &lt;code>family&lt;/code>) and configure Application policy to allow specific groups.&lt;/p>
&lt;p>&lt;strong>Password reset:&lt;/strong> Authentik ships with a recovery flow by default. Users navigate to the Authentik login page, click &amp;ldquo;Forgot password,&amp;rdquo; and receive an email with a reset link. This requires SMTP configuration.&lt;/p>
&lt;h2 id="backup">Backup&lt;/h2>
&lt;p>Authentik&amp;rsquo;s data lives in PostgreSQL. Back up with:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>docker compose exec authentik-db pg_dump -U authentik authentik &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> &amp;gt; /opt/authentik/backup/authentik-&lt;span style="color:#66d9ef">$(&lt;/span>date +%Y%m%d&lt;span style="color:#66d9ef">)&lt;/span>.sql
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Also back up &lt;code>/opt/authentik/media/&lt;/code> — this contains uploaded files (icons, certificates).&lt;/p>
&lt;p>For encrypted LDAP connections or custom TLS certificates, back up &lt;code>/opt/authentik/certs/&lt;/code> as well.&lt;/p>
&lt;h2 id="resource-usage">Resource usage&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Container&lt;/th>
&lt;th scope="col">Idle RAM&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>authentik-server&lt;/td>
&lt;td>~200 MB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>authentik-worker&lt;/td>
&lt;td>~150 MB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>authentik-db&lt;/td>
&lt;td>~60 MB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>authentik-redis&lt;/td>
&lt;td>~10 MB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Total&lt;/strong>&lt;/td>
&lt;td>&lt;strong>~420 MB&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Peak RAM during login storms or during MFA enrollment flows can reach 600–700 MB combined. For a homelab with 16+ GB RAM, this is negligible.&lt;/p>
&lt;h2 id="updating-authentik">Updating Authentik&lt;/h2>
&lt;p>Authentik updates can include database migrations. Always check the &lt;a href="https://goauthentik.io/docs/releases" rel="noopener">release notes&lt;/a> before updating a major version (e.g., 2024.10 → 2024.12).&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Update the version in your compose file first&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Then:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker compose pull
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker compose up -d
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker compose logs -f authentik-server
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Watch for any migration errors in the server log on startup. Authentik handles migrations automatically on startup; no manual migration command needed for minor updates.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Authentik connects to the other services in the self-hosted stack. The &lt;a href="https://techfuelhq.com/tutorials/nextcloud-aio-docker-setup-2026/">Nextcloud AIO setup guide&lt;/a> covers the Nextcloud side of OIDC integration. The &lt;a href="https://techfuelhq.com/tutorials/bookstack-docker-self-hosted-2026/">BookStack Docker guide&lt;/a> covers LDAP configuration for BookStack users. The &lt;a href="https://techfuelhq.com/tutorials/vaultwarden-proxmox-2026/">Vaultwarden guide&lt;/a> covers the password manager you&amp;rsquo;ll want for managing all your service credentials before SSO replaces per-service logins. The &lt;a href="https://techfuelhq.com/tutorials/nginx-proxy-manager-homelab-2026/">Nginx Proxy Manager guide&lt;/a> covers the HTTPS reverse proxy that Authentik requires. For external access via Tailscale, the &lt;a href="https://techfuelhq.com/tutorials/tailscale-remote-access-homelab-2026/">Tailscale guide&lt;/a> covers connecting all services over the same WireGuard mesh.&lt;/em>&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://docs.goauthentik.io/docs/" rel="noopener">Authentik documentation&lt;/a> &amp;ndash; official reference for the Applications, Providers, Flows, and Policies model&lt;/li>
&lt;li>&lt;a href="https://docs.goauthentik.io/docs/add-secure-apps/providers/ldap/" rel="noopener">Authentik LDAP provider&lt;/a> &amp;ndash; official details for the built-in LDAP provider that BookStack binds to&lt;/li>
&lt;li>&lt;a href="https://www.bookstackapp.com/docs/" rel="noopener">BookStack documentation&lt;/a> &amp;ndash; official admin reference for BookStack&amp;rsquo;s LDAP and SAML authentication options&lt;/li>
&lt;li>&lt;a href="https://docs.docker.com/compose/" rel="noopener">Docker Compose documentation&lt;/a> &amp;ndash; official reference for the multi-container Compose file used to run the Authentik stack&lt;/li>
&lt;/ul></description></item><item><title>Best NVMe SSDs for Homelab and PC Builds 2026</title><link>https://techfuelhq.com/articles/best-nvme-ssd-homelab-2026/</link><pubDate>Wed, 17 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/best-nvme-ssd-homelab-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-17 · ~10 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/articles/best-nvme-ssd-homelab-2026.svg" alt="TechFuel HQ buying guide card comparing four NVMe SSD picks for 2026: Samsung 990 Pro 1TB (primary, 7,450 MB/s read, 600 TBW, DRAM, ~$85-100), WD Black SN850X 1TB (value, 7,300 MB/s, 600 TBW, ~$80-95), Crucial P3 Plus 2TB (budget secondary, 5,000 MB/s, DRAM-less QLC, ~$70-90), and WD Blue SN580 500GB Proxmox boot drive (~$45)." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>NVMe SSD choice is simpler than the market noise suggests. The right drive depends on what you&amp;rsquo;re using it for — a boot drive for a gaming PC has different requirements than a Proxmox VM storage pool, which has different requirements than NAS cache or a ZFS log device.&lt;/p>
&lt;h2 id="the-categories-that-matter">The categories that matter&lt;/h2>
&lt;p>&lt;strong>Gaming/desktop OS drive:&lt;/strong> Sequential speed is largely irrelevant beyond Gen4. The bottleneck is random IOPS for game asset loading, not raw sequential throughput. Any quality Gen4 drive with DRAM cache covers this completely.&lt;/p>
&lt;p>&lt;strong>Proxmox OS drive (boot):&lt;/strong> Same as gaming/desktop. The OS disk in a Proxmox server boots once and then runs from RAM. A budget Gen4 with DRAM is perfectly adequate.&lt;/p>
&lt;p>&lt;strong>Proxmox VM storage (active VMs):&lt;/strong> Random IOPS matters most. Look for drives with high 4K random read/write ratings and DRAM cache. Avoid DRAM-less drives in this role.&lt;/p>
&lt;p>&lt;strong>NAS cache (ZFS L2ARC or metadata device):&lt;/strong> Endurance (TBW) matters here because the cache device is written heavily (&lt;a href="https://techfuelhq.com/tools/ssd-endurance-calculator/">the SSD endurance calculator&lt;/a> turns a TBW rating and your daily writes into a lifespan in years). Optane (discontinued) was ideal; for current NVMe, look at drives with high TBW ratings.&lt;/p>
&lt;p>&lt;strong>ZFS ZIL/SLOG device:&lt;/strong> Ultra-low write latency. High endurance. Small capacity (16–64GB is enough for most homelab ZFS pools). Enterprise-grade or high-endurance NVMe is appropriate here.&lt;/p>
&lt;h2 id="gen3-vs-gen4-vs-gen5-the-real-world-difference">Gen3 vs Gen4 vs Gen5: the real-world difference&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Generation&lt;/th>
&lt;th scope="col">Sequential read (peak)&lt;/th>
&lt;th scope="col">Price per TB&lt;/th>
&lt;th scope="col">Heat&lt;/th>
&lt;th scope="col">Best use&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>PCIe 3.0 (Gen3)&lt;/td>
&lt;td>~3,500 MB/s&lt;/td>
&lt;td>~$60–80&lt;/td>
&lt;td>Low&lt;/td>
&lt;td>Secondary storage, existing builds&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>PCIe 4.0 (Gen4)&lt;/td>
&lt;td>~7,000 MB/s&lt;/td>
&lt;td>~$70–100&lt;/td>
&lt;td>Moderate&lt;/td>
&lt;td>OS drives, VM storage — primary recommendation&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>PCIe 5.0 (Gen5)&lt;/td>
&lt;td>~12,000–14,000 MB/s&lt;/td>
&lt;td>~$120–160&lt;/td>
&lt;td>High (needs heatsink)&lt;/td>
&lt;td>Specific high-throughput workloads&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>For nearly every homelab and gaming use case, Gen4 is the right choice in 2026. Gen5 costs 50–80% more per GB for throughput gains that don&amp;rsquo;t materialize in typical workloads.&lt;/p>
&lt;h2 id="drive-picks-by-use-case">Drive picks by use case&lt;/h2>
&lt;h3 id="gaming-pc-os-drive-1tb">Gaming PC OS drive (1TB)&lt;/h3>
&lt;p>&lt;strong>Primary pick: Samsung 990 Pro 1TB&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Sequential: 7,450/6,900 MB/s (PCIe 4.0 × 4)&lt;/li>
&lt;li>Random IOPS: 1,400K read / 1,550K write (rated)&lt;/li>
&lt;li>DRAM: Yes (LPDDR4)&lt;/li>
&lt;li>TBW: 600 TBW&lt;/li>
&lt;li>Warranty: 5 years&lt;/li>
&lt;li>Approx. street: ~$85–100&lt;/li>
&lt;/ul>
&lt;p>The 990 Pro remains the benchmark for consumer Gen4 performance. Consistent random IOPS across queue depths, proven Samsung reliability track record, and the 600 TBW rating puts it beyond any realistic consumer endurance concern. It runs warm under sustained write but within spec.&lt;/p>
&lt;p>&lt;strong>Value pick: WD Black SN850X 1TB&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Sequential: 7,300/6,600 MB/s&lt;/li>
&lt;li>DRAM: Yes&lt;/li>
&lt;li>TBW: 600 TBW&lt;/li>
&lt;li>Approx. street: ~$80–95&lt;/li>
&lt;/ul>
&lt;p>Comparable performance to the 990 Pro, competitive pricing, good thermal management. WD&amp;rsquo;s Western Digital NVMe controller is mature and reliable. Either the 990 Pro or SN850X is a correct choice.&lt;/p>
&lt;p>&lt;strong>Budget pick for secondary games drive: Crucial P3 Plus 2TB&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Sequential: 5,000/4,200 MB/s (PCIe 4.0 but with QLC NAND)&lt;/li>
&lt;li>DRAM: No (DRAM-less — acceptable for a secondary games drive, not for VM storage)&lt;/li>
&lt;li>TBW: 440 TBW&lt;/li>
&lt;li>Approx. street: ~$70–90 for 2TB&lt;/li>
&lt;/ul>
&lt;p>DRAM-less drives are acceptable for a secondary drive that stores games and you read more than write. The write cliff under sustained writes isn&amp;rsquo;t a problem for a drive that mostly does game loading (reads).&lt;/p>
&lt;h3 id="proxmox-server-os-drive--vm-storage">Proxmox server: OS drive + VM storage&lt;/h3>
&lt;p>&lt;strong>Boot drive: any reliable mid-range Gen4 — the one server role where DRAM-less is fine&lt;/strong>&lt;/p>
&lt;p>The Proxmox OS disk loads once at boot and then mostly idles, so the DRAM rule below doesn&amp;rsquo;t apply to it. A 256–500GB drive is plenty for the OS and some log storage. The WD Blue SN580 500GB (&lt;del>$45) or Crucial P3 Plus 500GB (&lt;/del>$40) — both DRAM-less — are fine here; save the DRAM budget for the VM pool, where it actually matters.&lt;/p>
&lt;p>&lt;strong>VM storage pool: Samsung 990 Pro or WD Black SN850X (same as gaming picks)&lt;/strong>&lt;/p>
&lt;p>The same high-IOPS Gen4 drives that make excellent gaming OS drives make excellent VM storage. For a homelab running 5–10 VMs, a single 2TB drive covers most storage needs. For a pool with multiple drives, consider ZFS mirror (2× drive) for redundancy.&lt;/p>
&lt;p>&lt;strong>High-endurance option for write-heavy workloads: Samsung 990 Pro at high capacity&lt;/strong>&lt;/p>
&lt;p>If you&amp;rsquo;re running databases, logs aggregation, or anything writing continuously, the 990 Pro&amp;rsquo;s 1,200 TBW (2TB) or 600 TBW (1TB) covers years of heavy writes.&lt;/p>
&lt;h3 id="nas-build-l2arc-and-data-drives">NAS build: L2ARC and data drives&lt;/h3>
&lt;p>For TrueNAS or a Proxmox ZFS pool serving storage:&lt;/p>
&lt;p>&lt;strong>L2ARC cache device:&lt;/strong> A small (512GB–1TB) Gen4 drive with high endurance. The L2ARC is written heavily as it caches reads from slower HDDs. High TBW matters; raw sequential speed matters less because L2ARC access patterns are mixed. The Samsung 990 Pro is appropriate; avoid DRAM-less or QLC drives in this role.&lt;/p>
&lt;p>&lt;strong>ZIL/SLOG device:&lt;/strong> The ZFS intent log is written every sync write. If you have sync writes (NFS shares to VMs that use sync writes), a dedicated ZIL/SLOG device dramatically reduces write latency. Use a small, high-endurance NVMe. 32–64GB is plenty for most homelab pools. Some homelab operators use used Optane P1600X (older enterprise drives available cheaply used) for this purpose.&lt;/p>
&lt;p>&lt;strong>Primary storage:&lt;/strong> HDDs are still the most cost-effective bulk storage. For a NAS, the Seagate IronWolf or WD Red Pro are the relevant NAS-specific drives (helium-filled, vibration compensation, NAS firmware). NVMe is used for cache; HDDs hold the actual data. Because those spinning drives are the moving parts in your homelab, learn their failure signs — a new &lt;a href="https://techfuelhq.com/articles/hard-drive-clicking-2026/">clicking or grinding noise&lt;/a> is the classic early warning, and SMART monitoring plus a real backup is what turns a dying drive into a non-event.&lt;/p>
&lt;h3 id="what-i-run">What I run&lt;/h3>
&lt;p>My daily rig uses a &lt;a href="https://techfuelhq.com/reviews/samsung-970-evo-plus-1tb-review-2026/">Samsung 970 EVO Plus 1TB&lt;/a> — Gen3, from before Gen4 was the norm. It works fine as a gaming boot drive in 2026 because game load time bottlenecks are rarely sequential throughput. If I were buying new today, I&amp;rsquo;d buy a Gen4 drive. If I&amp;rsquo;m upgrading: the 970 EVO Plus stays until it fails.&lt;/p>
&lt;h2 id="the-dram-cache-decision">The DRAM cache decision&lt;/h2>
&lt;p>Never skip DRAM for a primary drive in a server or VM storage role. The difference:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">With DRAM&lt;/th>
&lt;th scope="col">Without DRAM (DRAM-less)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Consistent 4K IOPS across all queue depths&lt;/td>
&lt;td>IOPS drop at high queue depths&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Gentler post-cache slowdown — the DRAM-held mapping table keeps I/O consistent when the SLC cache fills&lt;/td>
&lt;td>Harder write cliff when SLC cache fills; falls to raw NAND speeds with variable latency&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Lower latency for small random writes&lt;/td>
&lt;td>Higher and variable latency under sustained load&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>10–30% higher cost&lt;/td>
&lt;td>15–25% cheaper&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>For a gaming boot drive: DRAM-less is acceptable. For anything in a server role: DRAM cache is not optional.&lt;/p>
&lt;h2 id="gen5-nvme-when-it-makes-sense">Gen5 NVMe: when it makes sense&lt;/h2>
&lt;p>PCIe 5.0 NVMe drives (Samsung 9100 Pro, Crucial T705, WD_BLACK SN8100) deliver 12,000–14,000 MB/s sequential reads. They require:&lt;/p>
&lt;ul>
&lt;li>A PCIe 5.0 M.2 slot (AM5 boards, 13th/14th gen and newer Intel)&lt;/li>
&lt;li>A heatsink — they generate substantial heat under load&lt;/li>
&lt;li>$120–160+ for 1TB&lt;/li>
&lt;/ul>
&lt;p>The use cases where Gen5 matters:&lt;/p>
&lt;ul>
&lt;li>Database servers with sustained random write I/O&lt;/li>
&lt;li>Video editing with multiple simultaneous 4K/8K streams from the SSD&lt;/li>
&lt;li>Large AI model loading where GB-level transfers are common&lt;/li>
&lt;/ul>
&lt;p>For gaming, Gen5 saves approximately 0.1–0.3 seconds on a long game load vs Gen4. Not worth the cost premium for that use case.&lt;/p>
&lt;hr>
&lt;p>&lt;em>For the homelab server foundation, the &lt;a href="https://techfuelhq.com/tutorials/zfs-proxmox-pool-setup-arc-tuning-2026/">ZFS on Proxmox guide&lt;/a> covers pool configuration and ARC tuning that matters more than drive generation in most storage scenarios. For NVMe in a gaming build context, the &lt;a href="https://techfuelhq.com/pc-builds/1500-dollar-rtx-5060-ti-1440p-build-2026/">Gaming PC Build 2026&lt;/a> lists storage picks alongside the full component selection.&lt;/em>&lt;/p></description></item><item><title>Beszel vs Netdata vs Glances: Homelab Monitoring</title><link>https://techfuelhq.com/homelab/beszel-vs-netdata-vs-glances-2026/</link><pubDate>Wed, 17 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/homelab/beszel-vs-netdata-vs-glances-2026/</guid><description>&lt;p>Once you run more than a couple of services, you want to &lt;em>see&lt;/em> your homelab — what&amp;rsquo;s hot, what&amp;rsquo;s full, what&amp;rsquo;s down. The lightweight monitoring conversation in 2026 centers on three resource monitors — &lt;strong>Beszel&lt;/strong>, &lt;strong>Netdata&lt;/strong>, and &lt;strong>Glances&lt;/strong> — plus &lt;strong>Uptime Kuma&lt;/strong>, which does a related-but-different job. They&amp;rsquo;re easy to confuse, so here&amp;rsquo;s what each actually is, verified against their repos and docs, and how to pick.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>One key distinction up front:&lt;/strong> Beszel, Netdata, and Glances monitor &lt;em>resources&lt;/em> (CPU, RAM, disk). Uptime Kuma monitors &lt;em>uptime&lt;/em> (is a service reachable?). They&amp;rsquo;re complementary, not alternatives — most homelabs run one of each.&lt;/p>&lt;/blockquote>
&lt;img src="https://techfuelhq.com/images/homelab/beszel-vs-netdata-vs-glances-2026.svg" width="1200" height="828" loading="lazy" decoding="async" alt="Comparison matrix of Beszel, Netdata, Glances, and Uptime Kuma across job, license, architecture, historical data, footprint, and approximate GitHub stars, with the common Beszel plus Uptime Kuma stack as the call." style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;h2 id="at-a-glance">At a glance&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">&lt;/th>
&lt;th scope="col">Beszel&lt;/th>
&lt;th scope="col">Netdata&lt;/th>
&lt;th scope="col">Glances&lt;/th>
&lt;th scope="col">Uptime Kuma&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Job&lt;/td>
&lt;td>Resource dashboard&lt;/td>
&lt;td>Deep real-time metrics&lt;/td>
&lt;td>Single-box glance&lt;/td>
&lt;td>Uptime / status pages&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>License&lt;/td>
&lt;td>MIT&lt;/td>
&lt;td>GPL-3.0 (agent)&lt;/td>
&lt;td>LGPL-3.0&lt;/td>
&lt;td>MIT&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Architecture&lt;/td>
&lt;td>Hub + agents&lt;/td>
&lt;td>Per-node agent&lt;/td>
&lt;td>One process/host&lt;/td>
&lt;td>Single app&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Multi-server dashboard&lt;/td>
&lt;td>&lt;strong>Yes&lt;/strong>&lt;/td>
&lt;td>Yes (Cloud/Parent)&lt;/td>
&lt;td>Per-host&lt;/td>
&lt;td>Yes (checks)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Historical data&lt;/td>
&lt;td>&lt;strong>Yes&lt;/strong>&lt;/td>
&lt;td>&lt;strong>Yes (tiered)&lt;/strong>&lt;/td>
&lt;td>No (export)&lt;/td>
&lt;td>Yes (checks)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Footprint&lt;/td>
&lt;td>&lt;strong>Very light&lt;/strong>&lt;/td>
&lt;td>Heavier (tunable)&lt;/td>
&lt;td>Light (Python)&lt;/td>
&lt;td>Light&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Stars (approx)&lt;/td>
&lt;td>~23k&lt;/td>
&lt;td>~80k&lt;/td>
&lt;td>~33k&lt;/td>
&lt;td>~89k&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Latest (Jul 2026)&lt;/td>
&lt;td>v0.18.7 (&lt;strong>pre-1.0&lt;/strong>)&lt;/td>
&lt;td>v2.10&lt;/td>
&lt;td>v4.5&lt;/td>
&lt;td>2.4.0 (stable)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>&lt;em>Star counts rounded; GitHub stars and release versions verified July 2026.&lt;/em>&lt;/p>
&lt;div class="visual-block">
&lt;div style="background:#0b1018;padding:24px 20px 20px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8eaf2;">
&lt;div style="font-size:18px;font-weight:700;letter-spacing:-0.3px;">The monitoring map: depth vs weight&lt;/div>
&lt;div style="font-size:12px;color:#93a0bd;margin-top:5px;line-height:1.55;max-width:620px;">Every resource monitor trades &lt;em>how much it shows you&lt;/em> against &lt;em>how much it costs to run&lt;/em>. Plot the three that way and the choice gets obvious &amp;mdash; there is a homelab sweet spot, and Beszel sits right in it.&lt;/div>
&lt;div style="position:relative;height:300px;margin:22px 6px 10px;border-left:1px solid #2a3350;border-bottom:1px solid #2a3350;background:linear-gradient(180deg,rgba(255,255,255,0.015),transparent);">
&lt;div style="position:absolute;left:8%;top:52%;width:52%;height:44%;background:rgba(200,255,0,0.06);border:1px dashed rgba(200,255,0,0.28);border-radius:10px;">&lt;/div>
&lt;div style="position:absolute;left:10%;top:89%;font-size:9.5px;color:#9fb340;font-weight:600;letter-spacing:.03em;">the homelab sweet spot&lt;/div>
&lt;div style="position:absolute;left:84%;top:15%;transform:translate(-50%,-50%);text-align:center;width:80px;">
&lt;div style="width:15px;height:15px;border-radius:50%;background:#f0a742;box-shadow:0 0 10px #f0a74288;margin:0 auto;">&lt;/div>
&lt;div style="font-size:11.5px;font-weight:700;color:#ffd9a8;margin-top:4px;white-space:nowrap;">Netdata&lt;/div>
&lt;div style="font-size:9px;color:#c79a63;line-height:1.3;">deep, heavier&lt;/div>
&lt;/div>
&lt;div style="position:absolute;left:44%;top:70%;transform:translate(-50%,-50%);text-align:center;width:88px;">
&lt;div style="width:17px;height:17px;border-radius:50%;background:#c8ff00;box-shadow:0 0 14px #c8ff00aa;margin:0 auto;">&lt;/div>
&lt;div style="font-size:12px;font-weight:800;color:#e6ff8f;margin-top:4px;white-space:nowrap;">Beszel&lt;/div>
&lt;div style="font-size:9px;color:#a9c25a;line-height:1.3;">light + enough&lt;/div>
&lt;/div>
&lt;div style="position:absolute;left:24%;top:78%;transform:translate(-50%,-50%);text-align:center;width:76px;">
&lt;div style="width:13px;height:13px;border-radius:50%;background:#4a9eff;box-shadow:0 0 9px #4a9eff77;margin:0 auto;">&lt;/div>
&lt;div style="font-size:11.5px;font-weight:700;color:#bcdcff;margin-top:4px;white-space:nowrap;">Glances&lt;/div>
&lt;div style="font-size:9px;color:#7ea9d8;line-height:1.3;">one box, live&lt;/div>
&lt;/div>
&lt;div style="position:absolute;left:1px;top:-9px;font-size:9px;color:#6f7ba0;white-space:nowrap;">heavier to run &amp;#9650;&lt;/div>
&lt;div style="position:absolute;left:2px;bottom:-16px;font-size:9px;color:#6f7ba0;">featherweight&lt;/div>
&lt;div style="position:absolute;right:2px;bottom:-16px;font-size:9px;color:#6f7ba0;white-space:nowrap;">deep forensics &amp;#9654;&lt;/div>
&lt;div style="position:absolute;left:37%;bottom:-16px;font-size:9px;color:#6f7ba0;white-space:nowrap;">a quick glance&lt;/div>
&lt;/div>
&lt;div style="margin-top:26px;background:#101725;border:1px solid rgba(255,255,255,0.07);border-radius:8px;padding:11px 13px;font-size:11px;color:#a7b2ce;line-height:1.5;">&lt;strong style="color:#cdd6ec;">Not on this map:&lt;/strong> Uptime Kuma. It asks a different question entirely &amp;mdash; &lt;em>is my service reachable?&lt;/em>, not &lt;em>how is the box doing?&lt;/em> &amp;mdash; so it lives off the depth-and-weight axes. Run it alongside whichever you pick.&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="beszel-the-simple-multi-server-dashboard">Beszel: the simple multi-server dashboard&lt;/h2>
&lt;p>&lt;a href="https://github.com/henrygd/beszel" rel="noopener">Beszel&lt;/a> (MIT, by henrygd) is the easy default for &amp;ldquo;show me all my boxes on one screen.&amp;rdquo; It&amp;rsquo;s a &lt;strong>hub-and-agent&lt;/strong> design: the &lt;strong>hub&lt;/strong> is a web dashboard built on PocketBase, and a tiny &lt;strong>Go-binary agent&lt;/strong> runs on each host reporting CPU, memory, disk usage and I/O, network, load, temperature, GPU, &lt;strong>Docker container stats&lt;/strong>, and &lt;strong>S.M.A.R.T. disk health&lt;/strong>. It keeps &lt;strong>historical data&lt;/strong>, sends &lt;strong>configurable alerts&lt;/strong> (CPU, memory, disk, bandwidth, temperature, load), and supports multi-user, OIDC, and automatic backups to disk or S3.&lt;/p>
&lt;p>It launched in &lt;strong>2024&lt;/strong> and grew fast (~23k stars) because it nails the homelab sweet spot: low overhead, dead-simple setup, one clean pane of glass. Be clear about scope, though — it&amp;rsquo;s deliberately &lt;strong>not&lt;/strong> a full observability platform. No per-second high-resolution metrics, no log aggregation, no APM/tracing, no PromQL. It&amp;rsquo;s a resource dashboard, and a very good one. (It&amp;rsquo;s still pre-1.0 (v0.18.7 as of mid-2026), so expect some churn, and verify current first-party Windows-agent support if you need it — that&amp;rsquo;s historically been community/fork territory.)&lt;/p>
&lt;p>&lt;strong>Pick Beszel if&lt;/strong> you want a low-overhead dashboard and alerts across several servers without running a heavier stack.&lt;/p>
&lt;h2 id="netdata-depth-and-real-time-diagnostics">Netdata: depth and real-time diagnostics&lt;/h2>
&lt;p>&lt;a href="https://github.com/netdata/netdata" rel="noopener">Netdata&lt;/a> is the opposite end: maximum depth out of the box. Its agent collects &lt;strong>per-second&lt;/strong> metrics, &lt;strong>auto-discovers&lt;/strong> thousands of metrics with little config, and runs &lt;strong>unsupervised ML anomaly detection&lt;/strong> right on the agent. When you need to understand &lt;em>why&lt;/em> a box is misbehaving in real time, nothing here competes. Licensing nuance worth knowing: the &lt;strong>agent core is GPL-3.0&lt;/strong> (open source), but the &lt;strong>UI is closed-source-but-free&lt;/strong> and &lt;strong>Netdata Cloud is closed-source&lt;/strong> (free and paid tiers) — the self-hosted agent works fully without Cloud.&lt;/p>
&lt;p>On the perennial &amp;ldquo;is Netdata heavy?&amp;rdquo; debate, be fair: it does far more per node than the lightweights, so it uses more — but it&amp;rsquo;s tunable. Netdata&amp;rsquo;s &lt;strong>own docs&lt;/strong> cite roughly &lt;strong>150 MiB RAM and ~5% CPU by default&lt;/strong>, dropping to &lt;strong>~100 MiB and under 1% CPU&lt;/strong> with ML and alerts off and ephemeral storage. (You&amp;rsquo;ll see third-party &amp;ldquo;200–500 MB/node&amp;rdquo; claims; those aren&amp;rsquo;t Netdata&amp;rsquo;s stated default and depend heavily on config — treat them as unverified.) Its free &lt;strong>Cloud tier caps at 5 nodes&lt;/strong>; a non-commercial &lt;strong>Homelab plan is $90/year&lt;/strong>, and Business is $4.50/node/month.&lt;/p>
&lt;p>&lt;strong>Pick Netdata if&lt;/strong> you want deep, real-time metrics and anomaly detection and don&amp;rsquo;t mind a heavier (but adjustable) footprint.&lt;/p>
&lt;h2 id="glances-the-quick-single-box-look">Glances: the quick single-box look&lt;/h2>
&lt;p>&lt;a href="https://github.com/nicolargo/glances" rel="noopener">Glances&lt;/a> (LGPL-3.0, by nicolargo) is a Python-based &lt;strong>top/htop alternative&lt;/strong> for a single machine, runnable as a terminal UI, a web UI, or a REST API. It shows live CPU, memory, disk, network, sensors, processes, and &lt;strong>containers&lt;/strong> (Docker/Podman/LXC, even Kubernetes pods) at a glance. The key caveat: it&amp;rsquo;s &lt;strong>not historical by default&lt;/strong> — you get a live snapshot with only short in-memory history. For real retention you &lt;strong>export&lt;/strong> to InfluxDB, Prometheus, PostgreSQL, and others, then chart it in Grafana (see &lt;a href="https://techfuelhq.com/homelab/grafana-vs-prometheus-2026/">how Grafana and Prometheus divide that work&lt;/a>). Alerting is basic threshold coloring, not a full notification engine.&lt;/p>
&lt;p>&lt;strong>Pick Glances if&lt;/strong> you want an instant rich overview of one box for ad-hoc diagnostics, or a lightweight metrics &lt;em>source&lt;/em> to feed a bigger stack — not a standalone multi-server dashboard.&lt;/p>
&lt;h2 id="uptime-kuma-a-different-job">Uptime Kuma: a different job&lt;/h2>
&lt;p>&lt;a href="https://github.com/louislam/uptime-kuma" rel="noopener">Uptime Kuma&lt;/a> (MIT, by Louis Lam, the Dockge creator) is &lt;strong>uptime/status-page&lt;/strong> monitoring, not resource monitoring. It runs HTTP, TCP-port, ping, DNS, and keyword checks to tell you whether a service is up, down, or slow, with &lt;strong>90+ notification channels&lt;/strong> and public &lt;strong>status pages&lt;/strong>. Its &lt;strong>2.x line is now stable&lt;/strong> (v2.4, released mid-2026, added MariaDB support and a UI refresh — older &amp;ldquo;2.x is beta&amp;rdquo; advice is outdated). Run it &lt;strong>alongside&lt;/strong> a resource monitor: Kuma answers &amp;ldquo;is it reachable?&amp;rdquo;, the others answer &amp;ldquo;why is the host struggling?&amp;rdquo;&lt;/p>
&lt;div class="visual-block">
&lt;div style="background:#0d1220;padding:24px 20px 22px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8eaf2;">
&lt;div style="font-size:18px;font-weight:700;letter-spacing:-0.3px;">Which question are you actually asking?&lt;/div>
&lt;div style="font-size:12px;color:#93a0bd;margin-top:5px;line-height:1.55;max-width:620px;">The confusion clears the moment you name the question. These tools split into two jobs first, and only then by how deep you want to look.&lt;/div>
&lt;div style="margin-top:18px;background:#141b2c;border:1px solid rgba(255,255,255,0.09);border-radius:8px;padding:11px 14px;text-align:center;font-size:13px;font-weight:700;color:#eef1f8;">What do you need to know about your homelab?&lt;/div>
&lt;div style="display:flex;gap:12px;flex-wrap:wrap;margin-top:12px;">
&lt;div style="flex:1 1 210px;min-width:0;background:#0b1626;border:1px solid #4a9eff33;border-top:3px solid #4a9eff;border-radius:8px;padding:13px 14px;">
&lt;div style="font-size:12.5px;font-weight:700;color:#bcdcff;">&amp;ldquo;Is a service reachable?&amp;rdquo;&lt;/div>
&lt;div style="font-size:10.5px;color:#89a7cf;line-height:1.45;margin-top:4px;">Up, down, or slow &amp;mdash; HTTP, TCP port, ping, DNS.&lt;/div>
&lt;div style="margin-top:11px;background:#0e1f36;border:1px solid #4a9eff55;border-radius:7px;padding:9px 11px;">
&lt;div style="font-size:13px;font-weight:800;color:#dcebff;">Uptime Kuma&lt;/div>
&lt;div style="font-size:10px;color:#9db6dd;line-height:1.4;margin-top:3px;">Checks &amp;plus; status page &amp;plus; 90&amp;plus; notification channels. Not a resource monitor.&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="flex:2 1 320px;min-width:0;background:#0c1f16;border:1px solid #35d07f33;border-top:3px solid #35d07f;border-radius:8px;padding:13px 14px;">
&lt;div style="font-size:12.5px;font-weight:700;color:#c8f5dd;">&amp;ldquo;How are my resources?&amp;rdquo;&lt;/div>
&lt;div style="font-size:10.5px;color:#8fcaa8;line-height:1.45;margin-top:4px;">Why is a box struggling &amp;mdash; CPU, RAM, disk, temperature. Now pick by depth:&lt;/div>
&lt;div style="display:flex;flex-direction:column;gap:8px;margin-top:11px;">
&lt;div style="background:#111d16;border:1px solid #c8ff0044;border-left:3px solid #c8ff00;border-radius:7px;padding:9px 11px;">&lt;div style="display:flex;justify-content:space-between;align-items:baseline;gap:8px;">&lt;span style="font-size:12.5px;font-weight:800;color:#e6ff8f;">Beszel&lt;/span>&lt;span style="font-size:9.5px;color:#a9c25a;font-weight:700;text-transform:uppercase;letter-spacing:.05em;">start here&lt;/span>&lt;/div>&lt;div style="font-size:10px;color:#9fb27a;line-height:1.4;margin-top:2px;">One clean dashboard across all your hosts, with alerts. Featherweight.&lt;/div>&lt;/div>
&lt;div style="background:#0b1626;border:1px solid #4a9eff44;border-left:3px solid #4a9eff;border-radius:7px;padding:9px 11px;">&lt;span style="font-size:12.5px;font-weight:800;color:#bcdcff;">Glances&lt;/span>&lt;div style="font-size:10px;color:#89a7cf;line-height:1.4;margin-top:2px;">A quick, rich look at ONE box right now &amp;mdash; terminal, web, or API.&lt;/div>&lt;/div>
&lt;div style="background:#241706;border:1px solid #f0a74244;border-left:3px solid #f0a742;border-radius:7px;padding:9px 11px;">&lt;span style="font-size:12.5px;font-weight:800;color:#ffd9a8;">Netdata&lt;/span>&lt;div style="font-size:10px;color:#c79a63;line-height:1.4;margin-top:2px;">Per-second metrics and on-agent ML anomaly detection when you need to dig deep. Heavier.&lt;/div>&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="which-should-you-run">Which should you run?&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Simple resource dashboard + alerts across all hosts →&lt;/strong> &lt;strong>Beszel.&lt;/strong> The homelab default.&lt;/li>
&lt;li>&lt;strong>Deep real-time metrics + anomaly detection on a box →&lt;/strong> &lt;strong>Netdata.&lt;/strong> Heaviest but most powerful.&lt;/li>
&lt;li>&lt;strong>Quick single-box glance or a metrics source →&lt;/strong> &lt;strong>Glances.&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Service uptime + status page + notifications →&lt;/strong> &lt;strong>Uptime Kuma&lt;/strong> (run it alongside the above).&lt;/li>
&lt;/ul>
&lt;p>A sane, common stack is &lt;strong>Beszel + Uptime Kuma&lt;/strong> — resource overview plus uptime/status — reaching for &lt;strong>Netdata&lt;/strong> when you need to deep-dive a specific host and &lt;strong>Glances&lt;/strong> for one-off terminal inspections. If you&amp;rsquo;re deploying these in containers, the &lt;a href="https://techfuelhq.com/tutorials/docker-compose-starter-stack-homelab-2026/">Docker Compose starter stack guide&lt;/a> pairs well, and you&amp;rsquo;ll likely front the web UIs with a &lt;a href="https://techfuelhq.com/homelab/caddy-vs-nginx-proxy-manager-vs-traefik-2026/">reverse proxy&lt;/a>.&lt;/p>
&lt;h2 id="a-note-on-footprint-numbers">A note on footprint numbers&lt;/h2>
&lt;p>The whole appeal of &amp;ldquo;lightweight&amp;rdquo; monitoring is low overhead — but precise RAM/CPU figures are the most-fabricated numbers in this space. Beszel is genuinely tiny (a single small Go agent), Glances is light (a Python process), and Netdata is heavier-but-tunable per its own docs. Beyond Netdata&amp;rsquo;s published defaults, exact figures &lt;strong>vary by version, host, and what you&amp;rsquo;re collecting&lt;/strong> — so measure on your own hardware with &lt;code>docker stats&lt;/code> rather than trusting a blog&amp;rsquo;s number, including this one.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>Beszel repo &amp;amp; docs: &lt;a href="https://github.com/henrygd/beszel" rel="noopener">https://github.com/henrygd/beszel&lt;/a> · &lt;a href="https://beszel.dev/guide/what-is-beszel" rel="noopener">https://beszel.dev/guide/what-is-beszel&lt;/a>&lt;/li>
&lt;li>Netdata repo &amp;amp; resource-utilization docs: &lt;a href="https://github.com/netdata/netdata" rel="noopener">https://github.com/netdata/netdata&lt;/a> · &lt;a href="https://learn.netdata.cloud/docs/netdata-agent/resource-utilization" rel="noopener">https://learn.netdata.cloud/docs/netdata-agent/resource-utilization&lt;/a>&lt;/li>
&lt;li>Netdata Cloud pricing: &lt;a href="https://www.netdata.cloud/pricing/" rel="noopener">https://www.netdata.cloud/pricing/&lt;/a>&lt;/li>
&lt;li>Glances repo &amp;amp; docs: &lt;a href="https://github.com/nicolargo/glances" rel="noopener">https://github.com/nicolargo/glances&lt;/a> · &lt;a href="https://glances.readthedocs.io/" rel="noopener">https://glances.readthedocs.io/&lt;/a>&lt;/li>
&lt;li>Uptime Kuma repo: &lt;a href="https://github.com/louislam/uptime-kuma" rel="noopener">https://github.com/louislam/uptime-kuma&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Caddy vs Nginx Proxy Manager vs Traefik in 2026</title><link>https://techfuelhq.com/homelab/caddy-vs-nginx-proxy-manager-vs-traefik-2026/</link><pubDate>Wed, 17 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/homelab/caddy-vs-nginx-proxy-manager-vs-traefik-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-06-17 · Updated 2026-07-13 · ~9 min read · St. Louis County, MO&lt;/p>
&lt;p>A reverse proxy is the front door to a homelab. It puts clean hostnames and automatic HTTPS in front of all your services, so &lt;code>jellyfin.home.lab&lt;/code> just works instead of everyone memorizing &lt;code>192.168.1.14:8096&lt;/code>. Three names dominate the choice in 2026: &lt;strong>Caddy&lt;/strong>, &lt;strong>Nginx Proxy Manager (NPM)&lt;/strong>, and &lt;strong>Traefik&lt;/strong>. They&amp;rsquo;re all free, all open source, and all solve the same problem, but they have genuinely different personalities, and picking well is mostly about matching one to how &lt;em>you&lt;/em> like to work. Everything below is verified against each project&amp;rsquo;s own repos and docs, with the community&amp;rsquo;s real-world consensus folded in.&lt;/p>
&lt;img src="https://techfuelhq.com/images/homelab/caddy-vs-nginx-proxy-manager-vs-traefik-2026.svg" width="1200" height="772" loading="lazy" decoding="async" alt="Comparison matrix of Caddy, Nginx Proxy Manager, and Traefik homelab reverse proxies on license, interface, automatic HTTPS, Docker auto-discovery, learning curve, and best-fit use: Caddy is Apache 2.0 config-as-code with the most automatic HTTPS, NPM is the MIT web-GUI beginner pick with no Docker auto-discovery, and Traefik is MIT open-core with native Docker auto-discovery and the steepest learning curve." style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;h2 id="the-choice-in-one-screen">The choice in one screen&lt;/h2>
&lt;p>Skip to the section that fits you, or read the whole thing. Here is the shape of the decision before the details.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">&lt;/th>
&lt;th scope="col">Caddy&lt;/th>
&lt;th scope="col">Nginx Proxy Manager&lt;/th>
&lt;th scope="col">Traefik&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>License&lt;/td>
&lt;td>&lt;strong>Apache 2.0&lt;/strong>&lt;/td>
&lt;td>&lt;strong>MIT&lt;/strong>&lt;/td>
&lt;td>&lt;strong>MIT&lt;/strong> (open-core add-ons)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Interface&lt;/td>
&lt;td>Caddyfile (config-as-code)&lt;/td>
&lt;td>&lt;strong>Web GUI&lt;/strong>&lt;/td>
&lt;td>Config + Docker labels&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Auto HTTPS&lt;/td>
&lt;td>Most automatic (LE + ZeroSSL)&lt;/td>
&lt;td>Per-host, via UI&lt;/td>
&lt;td>Cert resolvers (config)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Docker auto-discovery&lt;/td>
&lt;td>Plugin only&lt;/td>
&lt;td>&lt;strong>No&lt;/strong>&lt;/td>
&lt;td>&lt;strong>Yes (native)&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Learning curve&lt;/td>
&lt;td>Moderate&lt;/td>
&lt;td>&lt;strong>Lowest&lt;/strong>&lt;/td>
&lt;td>&lt;strong>Steepest&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Written in&lt;/td>
&lt;td>Go (single binary)&lt;/td>
&lt;td>nginx + OpenResty + Node UI + DB&lt;/td>
&lt;td>Go (single binary)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GitHub stars (approx)&lt;/td>
&lt;td>~74k&lt;/td>
&lt;td>~33.5k&lt;/td>
&lt;td>~64k&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Latest stable (mid-2026)&lt;/td>
&lt;td>2.11.x&lt;/td>
&lt;td>2.15.x&lt;/td>
&lt;td>3.7.x&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Best for&lt;/td>
&lt;td>Config-as-code, easiest TLS&lt;/td>
&lt;td>Beginners, GUI lovers&lt;/td>
&lt;td>Docker/K8s dynamic labs&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>&lt;em>Star counts and versions are current as of July 2026 and drift over time; check each repo for today&amp;rsquo;s numbers.&lt;/em>&lt;/p>
&lt;p>The single most useful way to feel the difference is to watch each one do the exact same job. Here is what it takes to put HTTPS in front of one service in all three:&lt;/p>
&lt;div class="visual-block">
&lt;div style="background:#0d1117;padding:24px 20px 22px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8eaf2;">
&lt;div style="font-size:18px;font-weight:700;letter-spacing:-0.3px;">The same service, three ways&lt;/div>
&lt;div style="font-size:12px;color:#93a0bd;margin-top:5px;line-height:1.55;max-width:600px;">One job &amp;mdash; reverse-proxy &lt;span style="color:#c3cbe0;font-family:ui-monospace,Menlo,Consolas,monospace;">app.example.com&lt;/span> to a container at &lt;span style="color:#c3cbe0;font-family:ui-monospace,Menlo,Consolas,monospace;">192.168.1.10:8080&lt;/span> with automatic HTTPS. Three completely different surfaces. This contrast, not benchmarks, is the actual choice.&lt;/div>
&lt;div style="display:flex;gap:14px;flex-wrap:wrap;margin-top:20px;">
&lt;div style="flex:1 1 210px;min-width:0;background:#11161f;border:1px solid rgba(255,255,255,0.08);border-top:3px solid #4a9eff;border-radius:8px;padding:14px 13px 13px;">
&lt;div style="font-size:13.5px;font-weight:700;color:#eef1f8;">Nginx Proxy Manager&lt;/div>
&lt;div style="font-size:10.5px;color:#4a9eff;font-weight:600;text-transform:uppercase;letter-spacing:.05em;margin:2px 0 11px;">point &amp;amp; click&lt;/div>
&lt;div style="font-size:11px;color:#c3cbe0;line-height:1.5;">
&lt;div style="display:flex;justify-content:space-between;gap:8px;padding:5px 0;border-bottom:1px solid rgba(255,255,255,0.06);">&lt;span style="color:#8b97b8;">Domain&lt;/span>&lt;span style="font-family:ui-monospace,Menlo,Consolas,monospace;">app.example.com&lt;/span>&lt;/div>
&lt;div style="display:flex;justify-content:space-between;gap:8px;padding:5px 0;border-bottom:1px solid rgba(255,255,255,0.06);">&lt;span style="color:#8b97b8;">Forward host&lt;/span>&lt;span style="font-family:ui-monospace,Menlo,Consolas,monospace;">192.168.1.10&lt;/span>&lt;/div>
&lt;div style="display:flex;justify-content:space-between;gap:8px;padding:5px 0;border-bottom:1px solid rgba(255,255,255,0.06);">&lt;span style="color:#8b97b8;">Forward port&lt;/span>&lt;span style="font-family:ui-monospace,Menlo,Consolas,monospace;">8080&lt;/span>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:7px;padding:7px 0 4px;">&lt;span style="width:13px;height:13px;border-radius:3px;background:#4a9eff;color:#04122a;font-size:10px;font-weight:900;display:inline-flex;align-items:center;justify-content:center;">&amp;check;&lt;/span>&lt;span>SSL tab &amp;rarr; Request new certificate&lt;/span>&lt;/div>
&lt;/div>
&lt;div style="margin-top:11px;padding-top:9px;border-top:1px dashed rgba(255,255,255,0.12);font-size:10.5px;color:#7fb0ee;font-weight:600;">~6 clicks &amp;middot; no file &amp;middot; no restart&lt;/div>
&lt;/div>
&lt;div style="flex:1 1 210px;min-width:0;background:#11161f;border:1px solid rgba(255,255,255,0.08);border-top:3px solid #76b900;border-radius:8px;padding:14px 13px 13px;">
&lt;div style="font-size:13.5px;font-weight:700;color:#eef1f8;">Caddy&lt;/div>
&lt;div style="font-size:10.5px;color:#8fd400;font-weight:600;text-transform:uppercase;letter-spacing:.05em;margin:2px 0 11px;">config as code&lt;/div>
&lt;div style="font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11.5px;line-height:1.6;color:#dfe6f2;background:#0a0d12;border-radius:6px;padding:10px 11px;white-space:pre-wrap;word-break:break-word;">&lt;span style="color:#8fd400;">app.example.com&lt;/span> {
reverse_proxy &lt;span style="color:#e8c07a;">192.168.1.10:8080&lt;/span>
}&lt;/div>
&lt;div style="margin-top:11px;padding-top:9px;border-top:1px dashed rgba(255,255,255,0.12);font-size:10.5px;color:#a6d94a;font-weight:600;">3 lines &amp;middot; 1 file &amp;middot; HTTPS is automatic&lt;/div>
&lt;/div>
&lt;div style="flex:1 1 210px;min-width:0;background:#11161f;border:1px solid rgba(255,255,255,0.08);border-top:3px solid #f0a020;border-radius:8px;padding:14px 13px 13px;">
&lt;div style="font-size:13.5px;font-weight:700;color:#eef1f8;">Traefik&lt;/div>
&lt;div style="font-size:10.5px;color:#f0a020;font-weight:600;text-transform:uppercase;letter-spacing:.05em;margin:2px 0 11px;">label discovery&lt;/div>
&lt;div style="font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11px;line-height:1.55;color:#dfe6f2;background:#0a0d12;border-radius:6px;padding:10px 11px;white-space:pre-wrap;word-break:break-word;">labels:
- &lt;span style="color:#e8c07a;">traefik.enable=true&lt;/span>
- &lt;span style="color:#e8c07a;">traefik.http.routers.app.rule=&lt;/span>
&lt;span style="color:#e8c07a;">Host(&amp;#96;app.example.com&amp;#96;)&lt;/span>
- &lt;span style="color:#e8c07a;">...tls.certresolver=le&lt;/span>&lt;/div>
&lt;div style="margin-top:9px;font-size:10px;color:#93a0bd;line-height:1.5;">plus a one-time static config (entrypoints, cert resolver) that every service then reuses.&lt;/div>
&lt;div style="margin-top:9px;padding-top:9px;border-top:1px dashed rgba(255,255,255,0.12);font-size:10.5px;color:#f3b855;font-weight:600;">3+ labels per service &amp;middot; auto-routes on deploy&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:16px;padding-top:12px;border-top:1px solid rgba(255,255,255,0.07);font-size:11px;color:#93a0bd;line-height:1.6;">All three arrive at the identical HTTPS front door. NPM asks you to fill a form, Caddy asks you to write two lines, Traefik asks you to label a container. Pick the surface that matches how you already like to work &amp;mdash; that, far more than speed, is what makes a proxy feel right six months later.&lt;/div>
&lt;div style="text-align:right;margin-top:8px;font-size:10px;color:#465073;">techfuelhq.com &amp;middot; minimal working config per tool, verified against each project's docs&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="caddy-the-simplest-automatic-https">Caddy: the simplest automatic HTTPS&lt;/h2>
&lt;p>&lt;a href="https://github.com/caddyserver/caddy" rel="noopener">Caddy&lt;/a> is a Go-based web server and reverse proxy under &lt;strong>Apache 2.0&lt;/strong>, fully open source with no paid tier, shipped as a &lt;strong>single static binary&lt;/strong> (~74k GitHub stars, latest 2.11.x). Its headline feature is &lt;strong>automatic HTTPS&lt;/strong>: the moment Caddy knows a hostname, it obtains and renews certificates in the background, using &lt;strong>Let&amp;rsquo;s Encrypt and ZeroSSL with automatic failover&lt;/strong>, redirects HTTP to HTTPS, and even issues self-signed certs from an internal CA for local names. A working HTTPS reverse proxy is about three lines of &lt;strong>Caddyfile&lt;/strong>, which is exactly why so many people who &amp;ldquo;just wanted it to work&amp;rdquo; ended up here. As one r/selfhosted user put it, it&amp;rsquo;s &amp;ldquo;brain dead easy&amp;hellip; a reverse proxy in as little as 4 lines and 2 of them are the curly brackets.&amp;rdquo;&lt;/p>
&lt;p>The trade-offs: there&amp;rsquo;s &lt;strong>no built-in GUI&lt;/strong> (config is a text file), and Caddy core doesn&amp;rsquo;t natively auto-discover Docker containers. The third-party &lt;code>caddy-docker-proxy&lt;/code> plugin adds that if you want it, and notably a Caddy maintainer confirms it&amp;rsquo;s &amp;ldquo;supported and a recommendation of the Caddy maintainers.&amp;rdquo; One bit of history worth knowing: Caddy briefly sold commercial licenses in 2017-2019, but &lt;strong>permanently moved everything to open source under Apache 2.0 in October 2019&lt;/strong>, so today it&amp;rsquo;s unambiguously free. It&amp;rsquo;s the most-starred of the three and actively maintained.&lt;/p>
&lt;p>&lt;strong>Pick Caddy if&lt;/strong> you like config-as-code, want the least-fuss automatic HTTPS on the market, and don&amp;rsquo;t need a GUI.&lt;/p>
&lt;h2 id="nginx-proxy-manager-the-beginners-favorite">Nginx Proxy Manager: the beginner&amp;rsquo;s favorite&lt;/h2>
&lt;p>&lt;a href="https://github.com/NginxProxyManager/nginx-proxy-manager" rel="noopener">NPM&lt;/a> is a &lt;strong>web GUI wrapped around nginx + OpenResty + Certbot&lt;/strong>, distributed as a Docker image, under the &lt;strong>MIT&lt;/strong> license (verified against its raw LICENSE file; despite some secondhand claims that it&amp;rsquo;s GPL, it is not). You add proxy hosts in a browser, click to request a Let&amp;rsquo;s Encrypt cert, and it generates the nginx config for you. It has the &lt;strong>lowest learning curve of the three&lt;/strong> by universal consensus, which is why it&amp;rsquo;s the standard &amp;ldquo;start here&amp;rdquo; recommendation, and it currently sits around 33.5k stars on the 2.15.x line. If you go this route, our &lt;a href="https://techfuelhq.com/tutorials/nginx-proxy-manager-homelab-2026/">Nginx Proxy Manager homelab setup guide&lt;/a> walks the full install and wildcard-SSL flow.&lt;/p>
&lt;p>Two honest caveats. First, its state lives in a &lt;strong>database and generated config&lt;/strong> rather than portable code, so it isn&amp;rsquo;t naturally version-controlled; keep your own backups. Second, because NPM &lt;strong>bundles its own stack&lt;/strong> (nginx/OpenResty, Certbot, a Node.js UI, and a database), that bundle can lag upstream security fixes, and there have been notable CVEs. The most-cited is &lt;strong>CVE-2025-50579&lt;/strong> (CVSS 5.3), a CORS-misconfiguration flaw reported against v2.12.3 that lets a malicious website steal an admin&amp;rsquo;s JWT token and take over the panel; it was still open on the project tracker into the 2.15.x line. The fix is discipline: keep it updated and &lt;strong>never expose the admin UI publicly&lt;/strong>. Recent releases added TOTP two-factor auth and more DNS challenge plugins, which help.&lt;/p>
&lt;p>&lt;strong>Pick NPM if&lt;/strong> you want a point-and-click workflow for a handful of services and would rather not touch config files.&lt;/p>
&lt;h2 id="traefik-dynamic-discovery-for-docker-labs">Traefik: dynamic discovery for Docker labs&lt;/h2>
&lt;p>&lt;a href="https://github.com/traefik/traefik" rel="noopener">Traefik&lt;/a> (MIT, ~64k stars, latest 3.7.x) is a modern, &lt;strong>dynamic&lt;/strong> reverse proxy built for containers, shipped as a &lt;strong>single Go binary&lt;/strong>. Its defining trait: it &lt;strong>auto-discovers services and builds routes at runtime&lt;/strong> by reading provider APIs. Add a few &lt;strong>Docker labels&lt;/strong> to a container and Traefik creates the route instantly, no restart, and it does the same for Kubernetes (including the Gateway API), Consul, Nomad, and more. This is the capability NPM lacks entirely and Caddy needs a plugin for.&lt;/p>
&lt;p>The cost is complexity, and the community is split on how much. Traefik divides configuration into &lt;strong>static&lt;/strong> (startup: entrypoints, providers, certificate resolvers) and &lt;strong>dynamic&lt;/strong> (hot-reloaded routers, services, middlewares), and you need to understand that model plus &amp;ldquo;label discipline.&amp;rdquo; Some homelabbers find it &amp;ldquo;ridiculously convoluted&amp;hellip; six labels on every container,&amp;rdquo; while others counter that with a good base config you can get down to &amp;ldquo;just &lt;code>traefik.enable=true&lt;/code>&amp;rdquo; plus a single router rule. Either way it&amp;rsquo;s the &lt;strong>steepest learning curve&lt;/strong> here. On licensing, Traefik runs &lt;strong>open-core&lt;/strong>: the proxy is fully free, including its &lt;strong>OWASP Coraza WAF&lt;/strong> integration added in v3, while Traefik Labs sells optional Hub/Enterprise API-management tiers you&amp;rsquo;ll never need at home. Traefik v3 (GA 2024) also brought HTTP/3, WebAssembly middleware plugins, OpenTelemetry, and a newer experimental &lt;strong>FastProxy&lt;/strong> engine aimed at closing its throughput gap.&lt;/p>
&lt;p>&lt;strong>Pick Traefik if&lt;/strong> your lab is Docker- or Kubernetes-heavy, you want services to register themselves as you deploy them, and you&amp;rsquo;re comfortable with the configuration model.&lt;/p>
&lt;h2 id="which-should-you-run">Which should you run?&lt;/h2>
&lt;p>The most useful framing from the 2026 community: people rarely pick the &lt;em>wrong&lt;/em> proxy; they pick one whose &lt;strong>operating style doesn&amp;rsquo;t match their skill level or their stack&lt;/strong>. So match it to yourself:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Beginner, few services, wants a GUI →&lt;/strong> &lt;strong>Nginx Proxy Manager.&lt;/strong> Start here.&lt;/li>
&lt;li>&lt;strong>Wants config-as-code and the easiest automatic HTTPS, no GUI →&lt;/strong> &lt;strong>Caddy.&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Docker/Kubernetes-heavy, wants dynamic auto-registration →&lt;/strong> &lt;strong>Traefik.&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>A common growth path is to learn on NPM, then migrate to Caddy (for config-as-code) or Traefik (for Docker discovery) as the lab matures, and that migration is easy because you can always read the generated config and copy it out. If you&amp;rsquo;re building out that Docker layer, the &lt;a href="https://techfuelhq.com/tutorials/docker-compose-starter-stack-homelab-2026/">Docker Compose starter stack guide&lt;/a> pairs naturally, and if you&amp;rsquo;re also choosing how to &lt;em>manage&lt;/em> those containers, see &lt;a href="https://techfuelhq.com/homelab/komodo-vs-portainer-vs-dockge-2026/">Komodo vs Portainer vs Dockge&lt;/a>.&lt;/p>
&lt;h2 id="on-performance-the-question-everyone-asks-and-no-one-needs">On performance: the question everyone asks and no one needs&lt;/h2>
&lt;p>&amp;ldquo;Which is fastest?&amp;rdquo; is the first thing people ask and the last thing that should decide it. Real, reproducible 2026 community benchmarks do exist now, and they&amp;rsquo;re consistent about the order: &lt;strong>nginx&lt;/strong> (the engine under NPM) leads, &lt;strong>Caddy&lt;/strong> is a close second, and &lt;strong>Traefik&lt;/strong> trails on raw requests-per-second and P95 latency. But look at the actual magnitudes against what a homelab does:&lt;/p>
&lt;div class="visual-block">
&lt;div style="background:#0c1220;padding:24px 20px 22px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8eaf2;">
&lt;div style="font-size:18px;font-weight:700;letter-spacing:-0.3px;">The performance question, settled&lt;/div>
&lt;div style="font-size:12px;color:#93a0bd;margin-top:5px;line-height:1.55;max-width:600px;">Roughly what each handles on a small box, from representative 2026 community benchmarks (order is consistent across tests; exact numbers vary by hardware). The bar that matters is the one at the bottom.&lt;/div>
&lt;div style="margin-top:20px;display:flex;flex-direction:column;gap:13px;">
&lt;div>
&lt;div style="display:flex;justify-content:space-between;font-size:12px;margin-bottom:4px;">&lt;span style="font-weight:700;color:#eef1f8;">nginx / NPM engine&lt;/span>&lt;span style="color:#9fb0cf;font-family:ui-monospace,Menlo,Consolas,monospace;">~80,000 req/s&lt;/span>&lt;/div>
&lt;div style="height:20px;border-radius:4px;background:linear-gradient(90deg,#4a9eff,#6fb4ff);width:94%;">&lt;/div>
&lt;/div>
&lt;div>
&lt;div style="display:flex;justify-content:space-between;font-size:12px;margin-bottom:4px;">&lt;span style="font-weight:700;color:#eef1f8;">Caddy&lt;/span>&lt;span style="color:#9fb0cf;font-family:ui-monospace,Menlo,Consolas,monospace;">~60,000 req/s&lt;/span>&lt;/div>
&lt;div style="height:20px;border-radius:4px;background:linear-gradient(90deg,#76b900,#9fd41a);width:71%;">&lt;/div>
&lt;/div>
&lt;div>
&lt;div style="display:flex;justify-content:space-between;font-size:12px;margin-bottom:4px;">&lt;span style="font-weight:700;color:#eef1f8;">Traefik&lt;/span>&lt;span style="color:#9fb0cf;font-family:ui-monospace,Menlo,Consolas,monospace;">~45,000 req/s&lt;/span>&lt;/div>
&lt;div style="height:20px;border-radius:4px;background:linear-gradient(90deg,#f0a020,#f6bd55);width:53%;">&lt;/div>
&lt;/div>
&lt;div style="margin-top:4px;padding-top:13px;border-top:1px dashed rgba(255,255,255,0.16);">
&lt;div style="display:flex;justify-content:space-between;font-size:12px;margin-bottom:4px;">&lt;span style="font-weight:800;color:#c8ff00;">What a busy homelab actually needs&lt;/span>&lt;span style="color:#c8ff00;font-family:ui-monospace,Menlo,Consolas,monospace;">~5-50 req/s&lt;/span>&lt;/div>
&lt;div style="height:20px;border-radius:4px;background:#c8ff00;width:0.6%;min-width:3px;">&lt;/div>
&lt;div style="font-size:10.5px;color:#93a0bd;margin-top:5px;">Yes &amp;mdash; that sliver. Every option here clears your real load by three to four orders of magnitude.&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:16px;padding-top:12px;border-top:1px solid rgba(255,255,255,0.07);font-size:11px;color:#93a0bd;line-height:1.6;">So "which is fastest" has a real answer &amp;mdash; nginx, then Caddy, then Traefik &amp;mdash; and it does not matter to you. At homelab scale the proxy is never the bottleneck; your disk, your network, or the backend service is. As the top-voted reply on the big 2026 benchmark thread put it: you won't notice the difference "unless you're running websites with 50k visitors a minute."&lt;/div>
&lt;div style="text-align:right;margin-top:8px;font-size:10px;color:#465073;">techfuelhq.com &amp;middot; magnitudes representative, not a lab-grade benchmark; choose on config style, not throughput&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>You&amp;rsquo;ll sometimes see idle-RAM figures too (rough ballparks like ~40-50 MB for the single-binary Caddy and Traefik, more for NPM once you count its bundled nginx, Node UI, and database). Treat those as directional, not gospel, since methodology and versions aren&amp;rsquo;t standardized. The bottleneck in your lab will be your services, not the proxy in front of them.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>Caddy repository &amp;amp; license (Apache 2.0): &lt;a href="https://github.com/caddyserver/caddy" rel="noopener">https://github.com/caddyserver/caddy&lt;/a> · Automatic HTTPS docs: &lt;a href="https://caddyserver.com/docs/automatic-https" rel="noopener">https://caddyserver.com/docs/automatic-https&lt;/a>&lt;/li>
&lt;li>Caddy open-source move (issue #2786, Oct 2019): &lt;a href="https://github.com/caddyserver/caddy/issues/2786" rel="noopener">https://github.com/caddyserver/caddy/issues/2786&lt;/a> · caddy-docker-proxy: &lt;a href="https://github.com/lucaslorentz/caddy-docker-proxy" rel="noopener">https://github.com/lucaslorentz/caddy-docker-proxy&lt;/a>&lt;/li>
&lt;li>Nginx Proxy Manager repository &amp;amp; license (MIT): &lt;a href="https://github.com/NginxProxyManager/nginx-proxy-manager" rel="noopener">https://github.com/NginxProxyManager/nginx-proxy-manager&lt;/a>&lt;/li>
&lt;li>Traefik repository (MIT) &amp;amp; configuration overview: &lt;a href="https://github.com/traefik/traefik" rel="noopener">https://github.com/traefik/traefik&lt;/a> · &lt;a href="https://doc.traefik.io/traefik/getting-started/configuration-overview/" rel="noopener">https://doc.traefik.io/traefik/getting-started/configuration-overview/&lt;/a>&lt;/li>
&lt;li>NPM CORS CVE-2025-50579 (CVSS 5.3, NVD): &lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2025-50579" rel="noopener">https://nvd.nist.gov/vuln/detail/CVE-2025-50579&lt;/a> · issue thread: &lt;a href="https://github.com/NginxProxyManager/nginx-proxy-manager/issues/4509" rel="noopener">https://github.com/NginxProxyManager/nginx-proxy-manager/issues/4509&lt;/a>&lt;/li>
&lt;li>Community benchmark &amp;amp; consensus (r/selfhosted, Oct 2025): &lt;a href="https://www.reddit.com/r/selfhosted/comments/1odh46j/nginx_vs_caddy_vs_traefik_benchmark_results/" rel="noopener">https://www.reddit.com/r/selfhosted/comments/1odh46j/nginx_vs_caddy_vs_traefik_benchmark_results/&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Frigate NVR Storage Calculator</title><link>https://techfuelhq.com/tools/frigate-nvr-storage-calculator/</link><pubDate>Wed, 17 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tools/frigate-nvr-storage-calculator/</guid><description>&lt;h2 id="how-to-use-this-calculator">How to use this calculator&lt;/h2>
&lt;p>Enter how many cameras you run, pick the resolution, frame rate, and codec, choose continuous or motion-only recording, and set how many days of footage you want to keep. The calculator instantly estimates total storage, daily write volume, a recommended drive size, and the &lt;code>/dev/shm&lt;/code> value Frigate needs.&lt;/p>
&lt;p>If you already know your camera&amp;rsquo;s bitrate (check its web UI or app), type it into the optional bitrate field — that is the single most accurate input, because &lt;strong>Frigate records the stream your camera sends without re-encoding it.&lt;/strong>&lt;/p>
&lt;h2 id="what-actually-drives-frigate-storage">What actually drives Frigate storage&lt;/h2>
&lt;p>Two numbers decide almost everything:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Bitrate&lt;/strong> — the data rate of the recorded stream, in Mbps. Continuous recording at 1 Mbps uses about &lt;strong>10.8 GB/day&lt;/strong>. Everything else (resolution, FPS, codec) matters only because it changes the bitrate.&lt;/li>
&lt;li>&lt;strong>Retention&lt;/strong> — how many days you keep. Storage is linear: double the days, double the disk.&lt;/li>
&lt;/ul>
&lt;p>Because Frigate copies the camera&amp;rsquo;s stream rather than transcoding it, the codec choice here estimates what your camera &lt;em>would&lt;/em> produce on H.264 vs H.265. H.265 (HEVC) is roughly half the bitrate of H.264 at the same quality — the easiest way to halve your storage is to set the camera to H.265, if its hardware and your decoding setup support it.&lt;/p>
&lt;h2 id="continuous-vs-motion-only">Continuous vs motion-only&lt;/h2>
&lt;p>Continuous 24/7 recording is the safe default for security footage — no gaps, nothing missed. Motion/detect-only recording stores far less, proportional to how active the scene is, but a missed detection means missed footage. The comparison table above shows both modes side by side for your exact setup so you can see the trade in real gigabytes before you commit.&lt;/p>
&lt;h2 id="dont-forget-devshm">Don&amp;rsquo;t forget /dev/shm&lt;/h2>
&lt;p>A storage plan that ignores shared memory is how Frigate setups fail on day one. Frigate buffers decoded frames in &lt;code>/dev/shm&lt;/code>, and the default container allocation is small. The calculator outputs a recommended &lt;code>shm-size&lt;/code> from Frigate&amp;rsquo;s own per-camera formula — set it on your container (for an LXC or Docker run) so Frigate has room to work. For the host underneath it, an &lt;a href="https://techfuelhq.com/homelab/lxc-vs-vm-proxmox-2026/">LXC vs VM decision&lt;/a> and a solid &lt;a href="https://techfuelhq.com/homelab/proxmox-truenas-unraid-storage-backend-2026/">storage backend&lt;/a> round out a reliable NVR build.&lt;/p>
&lt;h2 id="a-note-on-the-estimates">A note on the estimates&lt;/h2>
&lt;p>When you don&amp;rsquo;t supply a bitrate, the figures come from typical mainstream-IP-camera bitrates by resolution and codec, scaled by frame rate — good enough to size a drive, but not a substitute for your camera&amp;rsquo;s real number. Storage uses decimal GB/TB (1 TB = 1,000 GB), matching how drives are sold. Always size up: retention you never use is cheap; running out of space mid-incident is not.&lt;/p></description></item><item><title>Komodo vs Portainer vs Dockge: Best Docker Manager (2026)</title><link>https://techfuelhq.com/homelab/komodo-vs-portainer-vs-dockge-2026/</link><pubDate>Wed, 17 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/homelab/komodo-vs-portainer-vs-dockge-2026/</guid><description>&lt;p>For years the answer to &amp;ldquo;what should I use to manage Docker in my homelab&amp;rdquo; was just &amp;ldquo;Portainer.&amp;rdquo; That changed once Portainer moved a set of previously-free, team-oriented features behind its paid Business Edition — and a wave of self-hosters went looking for alternatives. The two names that keep coming up are &lt;strong>Komodo&lt;/strong> and &lt;strong>Dockge&lt;/strong>. Here&amp;rsquo;s how all three actually compare in 2026 on the things that matter: licensing, what you get free, and which fits which homelab — verified against each project&amp;rsquo;s own docs and repositories.&lt;/p>
&lt;img src="https://techfuelhq.com/images/homelab/komodo-vs-portainer-vs-dockge-2026.svg" width="1200" height="800" loading="lazy" decoding="async" alt="Comparison matrix of Portainer, Komodo, and Dockge Docker managers across license, scope, multi-host, RBAC/SSO, architecture, GitHub stars, and best-fit use case: Portainer is CE-free with paid Business Edition, Komodo is GPL-3.0 open and uncapped with included RBAC at ~11.6k stars, Dockge is MIT-licensed Compose-only with no RBAC at ~23.7k stars." style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;h2 id="the-three-at-a-glance">The three at a glance&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">&lt;/th>
&lt;th scope="col">Portainer&lt;/th>
&lt;th scope="col">Komodo&lt;/th>
&lt;th scope="col">Dockge&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>License&lt;/td>
&lt;td>CE open-source; &lt;strong>BE paid&lt;/strong>&lt;/td>
&lt;td>&lt;strong>GPL-3.0&lt;/strong> (fully open)&lt;/td>
&lt;td>&lt;strong>MIT&lt;/strong> (fully open)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Scope&lt;/td>
&lt;td>Docker, Swarm, &lt;strong>Kubernetes&lt;/strong>, Podman, edge&lt;/td>
&lt;td>Docker + stacks, multi-host, GitOps&lt;/td>
&lt;td>&lt;strong>Compose only&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Multi-host&lt;/td>
&lt;td>Yes (governance in BE)&lt;/td>
&lt;td>&lt;strong>Yes, uncapped&lt;/strong>&lt;/td>
&lt;td>Yes (v1.4+)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>RBAC / SSO&lt;/td>
&lt;td>&lt;strong>Business Edition only&lt;/strong>&lt;/td>
&lt;td>Included&lt;/td>
&lt;td>None (by design)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Architecture&lt;/td>
&lt;td>Server + agents&lt;/td>
&lt;td>Core + Periphery + &lt;strong>database&lt;/strong>&lt;/td>
&lt;td>Single Node service&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GitHub stars&lt;/td>
&lt;td>~38k&lt;/td>
&lt;td>~11.6k&lt;/td>
&lt;td>~23.7k&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Latest (Jul 2026)&lt;/td>
&lt;td>CE &lt;strong>2.39 LTS&lt;/strong>&lt;/td>
&lt;td>&lt;strong>v2.2&lt;/strong> (May)&lt;/td>
&lt;td>&lt;strong>v1.5&lt;/strong> (Mar &amp;lsquo;25)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Best for&lt;/td>
&lt;td>Breadth / K8s / teams&lt;/td>
&lt;td>Multi-host fleets&lt;/td>
&lt;td>Single/dual-host Compose&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;div class="visual-block">
&lt;div style="background:#0c111b;padding:24px 20px 22px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8eaf2;">
&lt;div style="font-size:18px;font-weight:700;letter-spacing:-0.3px;">What you actually run&lt;/div>
&lt;div style="font-size:12px;color:#93a0bd;margin-top:5px;line-height:1.55;max-width:600px;">Uncapped and free has a price, and it is paid in &lt;em>processes, not dollars&lt;/em>. Every box below is a separate service you install and keep alive. This footprint, more than any feature list, is the real split between the three.&lt;/div>
&lt;div style="margin-top:18px;display:flex;flex-direction:column;gap:12px;">
&lt;div style="background:#11161f;border:1px solid rgba(255,255,255,0.08);border-left:3px solid #35d07f;border-radius:8px;padding:12px 13px;">
&lt;div style="display:flex;justify-content:space-between;align-items:baseline;gap:8px;">&lt;span style="font-size:13.5px;font-weight:700;color:#eef1f8;">Dockge&lt;/span>&lt;span style="font-size:11px;color:#8bd7b0;font-weight:600;">1 service&lt;/span>&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;gap:7px;margin-top:9px;">&lt;span style="background:#0c1f16;border:1px solid #35d07f66;border-radius:6px;padding:6px 11px;font-size:11.5px;color:#d7f5e6;font-weight:600;">Dockge&lt;/span>&lt;/div>
&lt;div style="font-size:10.5px;color:#8b97b8;line-height:1.45;margin-top:9px;">One Node container. Your compose files stay on disk. Add one small agent per extra host (v1.5+).&lt;/div>
&lt;/div>
&lt;div style="background:#11161f;border:1px solid rgba(255,255,255,0.08);border-left:3px solid #4a9eff;border-radius:8px;padding:12px 13px;">
&lt;div style="display:flex;justify-content:space-between;align-items:baseline;gap:8px;">&lt;span style="font-size:13.5px;font-weight:700;color:#eef1f8;">Portainer&lt;/span>&lt;span style="font-size:11px;color:#8fbaf0;font-weight:600;">1 service&lt;/span>&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;gap:7px;margin-top:9px;align-items:center;">&lt;span style="background:#0b1626;border:1px solid #4a9eff66;border-radius:6px;padding:6px 11px;font-size:11.5px;color:#d6e6ff;font-weight:600;">Portainer Server&lt;/span>&lt;span style="background:#0e1420;border:1px dashed #4a9eff55;border-radius:6px;padding:6px 11px;font-size:10.5px;color:#9db6dd;">+ edge agent &amp;middot; optional&lt;/span>&lt;/div>
&lt;div style="font-size:10.5px;color:#8b97b8;line-height:1.45;margin-top:9px;">One server container. It stores its own database internally, so nothing extra to run. Edge agents only for remote hosts.&lt;/div>
&lt;/div>
&lt;div style="background:#11161f;border:1px solid rgba(255,255,255,0.08);border-left:3px solid #f0a742;border-radius:8px;padding:12px 13px;">
&lt;div style="display:flex;justify-content:space-between;align-items:baseline;gap:8px;">&lt;span style="font-size:13.5px;font-weight:700;color:#eef1f8;">Komodo&lt;/span>&lt;span style="font-size:11px;color:#f0b968;font-weight:700;">3+ services, grows per host&lt;/span>&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;gap:7px;margin-top:9px;align-items:center;">&lt;span style="background:#241706;border:1px solid #f0a74266;border-radius:6px;padding:6px 11px;font-size:11.5px;color:#ffe6c2;font-weight:600;">Komodo Core&lt;/span>&lt;span style="color:#6f5a3a;font-size:12px;">+&lt;/span>&lt;span style="background:#1c1305;border:1px solid #f0a74255;border-radius:6px;padding:6px 11px;font-size:11px;color:#e9c9a0;">Database &lt;span style="color:#b9a17f;">(MongoDB)&lt;/span>&lt;/span>&lt;span style="color:#6f5a3a;font-size:12px;">+&lt;/span>&lt;span style="background:#1c1305;border:1px solid #f0a74255;border-radius:6px;padding:6px 11px;font-size:11px;color:#e9c9a0;">Periphery agent &lt;span style="color:#b9a17f;">&amp;times; each host&lt;/span>&lt;/span>&lt;/div>
&lt;div style="font-size:10.5px;color:#8b97b8;line-height:1.45;margin-top:9px;">A Rust Core, a separate database, and one agent per managed server. This is the "bloat" and "why MongoDB?" you see in every migration thread &amp;mdash; the honest cost of no license meter.&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="portainer-still-capable-now-partly-paywalled">Portainer: still capable, now partly paywalled&lt;/h2>
&lt;p>Portainer is the broadest of the three — it manages Docker, Swarm, Kubernetes, &lt;a href="https://techfuelhq.com/articles/podman-vs-docker-2026/">Podman&lt;/a>, and edge devices — and its &lt;strong>Community Edition is genuinely free and open-source.&lt;/strong> The friction is what moved to &lt;strong>Business Edition (BE)&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>RBAC&lt;/strong> is BE-only. BE has a full seven-role hierarchy (Administrator, Environment Administrator, Operator, Namespace Operator, Helpdesk, Standard User, Read-Only); CE has only basic single-tier user management.&lt;/li>
&lt;li>&lt;strong>SSO/OIDC&lt;/strong> with provider templates (Microsoft, Google, GitHub; Azure AD, Okta, Ping) and automatic group-to-team mapping is BE-only. In CE, &amp;ldquo;Custom&amp;rdquo; is the only OAuth option and automatic group membership can&amp;rsquo;t be configured.&lt;/li>
&lt;li>Audit logging, advanced GitOps, registry management, and S3 backups are BE features too.&lt;/li>
&lt;/ul>
&lt;p>The licensing math: &lt;strong>BE is free for up to 3 nodes&lt;/strong>, renewed yearly at no cost, with the full feature set (one license per company domain). Beyond that, &lt;strong>Starter is $99/month&lt;/strong> ($995/year) and &lt;strong>Scale is $199/month&lt;/strong> ($1,995/year); there&amp;rsquo;s a non-commercial Home &amp;amp; Student plan at $149/year. For a small homelab the 3-node free BE tier is actually generous — the catch is the per-company-domain limit and that the moment you outgrow 3 nodes commercially, you&amp;rsquo;re into real money.&lt;/p>
&lt;p>A recurring CE complaint worth knowing: Compose stacks created in Portainer&amp;rsquo;s editor become &lt;strong>tied to Portainer&lt;/strong>, and editing the underlying YAML outside the UI is awkward. That single behavior is why many people prefer the other two.&lt;/p>
&lt;p>For currency: Portainer is still by far the most-installed of the three (&lt;strong>~38k GitHub stars&lt;/strong>, more than Komodo and Dockge combined) and the most actively released. It ships on a dual track — pick the &lt;strong>LTS line (2.39, released Feb 2026, supported into November 2026)&lt;/strong> for a homelab you don&amp;rsquo;t want to babysit, not the short-term STS builds (2.43). None of this is the problem. The paywall line is.&lt;/p>
&lt;div class="visual-block">
&lt;div style="background:#0d1117;padding:24px 20px 22px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8eaf2;">
&lt;div style="font-size:18px;font-weight:700;letter-spacing:-0.3px;">The line Portainer drew&lt;/div>
&lt;div style="font-size:12px;color:#93a0bd;margin-top:5px;line-height:1.55;max-width:600px;">Community Edition is genuinely free, but the team-oriented features moved to paid Business Edition. This is the exact line that started the exodus &amp;mdash; and the reason Komodo and Dockge draw no line at all.&lt;/div>
&lt;div style="margin-top:18px;background:#11161f;border:1px solid rgba(255,255,255,0.08);border-radius:8px;padding:14px 13px;">
&lt;div style="font-size:12.5px;font-weight:700;color:#eef1f8;margin-bottom:11px;">Portainer&lt;/div>
&lt;div style="display:flex;gap:9px;flex-wrap:wrap;">
&lt;div style="flex:1 1 130px;min-width:0;">
&lt;div style="font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#35d07f;margin-bottom:7px;">Free &amp;middot; Community Edition&lt;/div>
&lt;div style="display:flex;flex-direction:column;gap:5px;">
&lt;span style="background:#0c1f16;border:1px solid #35d07f44;border-radius:5px;padding:6px 9px;font-size:11px;color:#d7f5e6;">Container &amp;amp; stack management&lt;/span>
&lt;span style="background:#0c1f16;border:1px solid #35d07f44;border-radius:5px;padding:6px 9px;font-size:11px;color:#d7f5e6;">Compose &amp;amp; K8s / Swarm&lt;/span>
&lt;span style="background:#0c1f16;border:1px solid #35d07f44;border-radius:5px;padding:6px 9px;font-size:11px;color:#d7f5e6;">Basic single-tier users&lt;/span>
&lt;span style="background:#0c1f16;border:1px solid #35d07f44;border-radius:5px;padding:6px 9px;font-size:11px;color:#d7f5e6;">One "Custom" OAuth option&lt;/span>
&lt;/div>
&lt;/div>
&lt;div style="flex:1 1 130px;min-width:0;">
&lt;div style="font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#ff7a7a;margin-bottom:7px;">Paid &amp;middot; Business Edition&lt;/div>
&lt;div style="display:flex;flex-direction:column;gap:5px;">
&lt;span style="background:#220d0d;border:1px solid #ff7a7a44;border-radius:5px;padding:6px 9px;font-size:11px;color:#ffd9d9;">RBAC &amp;middot; 7-role hierarchy&lt;/span>
&lt;span style="background:#220d0d;border:1px solid #ff7a7a44;border-radius:5px;padding:6px 9px;font-size:11px;color:#ffd9d9;">SSO / OIDC + group mapping&lt;/span>
&lt;span style="background:#220d0d;border:1px solid #ff7a7a44;border-radius:5px;padding:6px 9px;font-size:11px;color:#ffd9d9;">Audit logging &amp;middot; S3 backups&lt;/span>
&lt;span style="background:#220d0d;border:1px solid #ff7a7a44;border-radius:5px;padding:6px 9px;font-size:11px;color:#ffd9d9;">Advanced GitOps &amp;middot; registries&lt;/span>
&lt;/div>
&lt;div style="font-size:9.5px;color:#c98b8b;margin-top:6px;line-height:1.4;">Free up to 3 nodes, then $99&amp;ndash;$199/mo&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:11px;display:flex;gap:11px;flex-wrap:wrap;">
&lt;div style="flex:1 1 150px;min-width:0;background:#241706;border:1px solid #f0a74240;border-radius:8px;padding:11px 12px;">&lt;span style="font-size:12.5px;font-weight:700;color:#ffe6c2;">Komodo&lt;/span>&lt;div style="font-size:11px;color:#e9c9a0;line-height:1.45;margin-top:4px;">No edition split. RBAC, uncapped multi-host, GitOps &amp;mdash; all in the free GPL-3.0 build.&lt;/div>&lt;/div>
&lt;div style="flex:1 1 150px;min-width:0;background:#0c1f16;border:1px solid #35d07f40;border-radius:8px;padding:11px 12px;">&lt;span style="font-size:12.5px;font-weight:700;color:#d7f5e6;">Dockge&lt;/span>&lt;div style="font-size:11px;color:#bfe6d1;line-height:1.45;margin-top:4px;">No line to draw. It omits RBAC and SSO by design, not by paywall &amp;mdash; everything it does is free.&lt;/div>&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="komodo-open-source-uncapped-more-to-run">Komodo: open-source, uncapped, more to run&lt;/h2>
&lt;p>&lt;a href="https://komo.do/" rel="noopener">Komodo&lt;/a> is the project most directly positioned against Portainer&amp;rsquo;s licensing. It&amp;rsquo;s &lt;strong>GPL-3.0&lt;/strong>, written mostly in &lt;strong>Rust&lt;/strong>, and its docs are blunt about it: &lt;em>&amp;ldquo;There is no limit to the number of servers you can connect… There is no limit to what API you can use for automation… No &amp;lsquo;business edition&amp;rsquo; here.&amp;rdquo;&lt;/em>&lt;/p>
&lt;p>Architecturally it&amp;rsquo;s a &lt;strong>Core + Periphery&lt;/strong> model: Komodo Core is the central service (and talks to a &lt;strong>database&lt;/strong> — MongoDB recommended, with FerretDB/Postgres as an alternative), and a lightweight, stateless &lt;strong>Periphery&lt;/strong> agent runs on every managed host, IP-whitelisted, reporting container status, logs, and system usage back to Core. You deploy it with Docker Compose. The payoff is real multi-host fleet management with Git-backed (GitOps) deployments, all free. The cost is operational: you&amp;rsquo;re now running a Rust service &lt;strong>plus a database plus an agent per server&lt;/strong> — more moving parts than a single container. That footprint is the one honest knock on Komodo in 2026: browse any migration thread and you&amp;rsquo;ll see &amp;ldquo;bloat&amp;rdquo; and &amp;ldquo;why does it need MongoDB?&amp;rdquo; alongside the praise. It&amp;rsquo;s a fair trade for uncapped fleet management, but go in expecting to run a database. At &lt;strong>~11.6k GitHub stars and a steady release cadence (v2.2 landed May 2026)&lt;/strong> it&amp;rsquo;s younger than Portainer but has strong momentum and an actively responsive maintainer.&lt;/p>
&lt;p>One practical gotcha to know before you commit: Komodo substitutes secrets and variables into compose files using &lt;strong>its own bracket syntax&lt;/strong>, not standard Compose interpolation. If you lean on &lt;code>.env&lt;/code> files or portable &lt;code>${VAR}&lt;/code> references, check that your workflow survives the move — it&amp;rsquo;s the single most-cited friction point from people coming off Portainer.&lt;/p>
&lt;h2 id="dockge-the-lightweight-compose-manager">Dockge: the lightweight Compose manager&lt;/h2>
&lt;p>&lt;a href="https://github.com/louislam/dockge" rel="noopener">Dockge&lt;/a> comes from &lt;strong>Louis Lam, the creator of Uptime Kuma&lt;/strong>, who built it after being frustrated with Portainer&amp;rsquo;s stack management (spinning loaders, unclear errors). It&amp;rsquo;s &lt;strong>MIT-licensed&lt;/strong> and deliberately narrow: it manages &lt;strong>Docker Compose&lt;/strong> and nothing fancier. The defining feature is that it &lt;strong>keeps your &lt;code>compose.yaml&lt;/code> editable on disk&lt;/strong> — it &amp;ldquo;won&amp;rsquo;t kidnap your compose files,&amp;rdquo; so they stay usable with normal &lt;code>docker compose&lt;/code> commands outside the UI. You get a reactive web editor, an interactive terminal, a &lt;code>docker run&lt;/code> → Compose converter, and &lt;strong>multi-agent support since v1.4&lt;/strong>.&lt;/p>
&lt;p>What it deliberately lacks: RBAC, OIDC, vulnerability scanning, and a REST API. That&amp;rsquo;s the point — it&amp;rsquo;s a clean UI over Compose, not a platform. At ~23.7k stars it&amp;rsquo;s the most popular of the three by a wide margin, reflecting how many self-hosters just want exactly this.&lt;/p>
&lt;p>The one caveat to weigh honestly in 2026: &lt;strong>Dockge&amp;rsquo;s development has gone quiet.&lt;/strong> The last tagged release, &lt;strong>v1.5, shipped in March 2025&lt;/strong> — well over a year ago — and the subreddit now has recurring &amp;ldquo;Dockge alternatives?&amp;rdquo; threads from people whose small gripes have piled up with no fixes landing. It still works, it&amp;rsquo;s simple, and MIT means it can&amp;rsquo;t be pulled out from under you, but if you want a tool under active iteration, that&amp;rsquo;s a real point for Komodo or the newer Arcane. If Dockge does exactly what you need today, its stability is a feature; if you were hoping the rough edges would get sanded down, temper that expectation.&lt;/p>
&lt;h2 id="portainer-vs-dockge-vs-komodo-head-to-head">Portainer vs Dockge vs Komodo: head-to-head&lt;/h2>
&lt;p>The profiles above cover each tool on its own. Here are the direct pairwise matchups people actually search for.&lt;/p>
&lt;h3 id="portainer-vs-dockge">Portainer vs Dockge&lt;/h3>
&lt;p>Portainer is a full platform (Docker, Swarm, Kubernetes, Podman, edge) with a heavier UI; Dockge is a focused Compose-only manager with a lighter one. The deciding factor is usually file ownership: Portainer&amp;rsquo;s editor tends to &lt;em>tie a stack to Portainer&lt;/em>, while Dockge leaves your &lt;code>compose.yaml&lt;/code> on disk and editable with plain &lt;code>docker compose&lt;/code>. If you run one or two hosts and live in Compose, Dockge wins on simplicity; if you need Kubernetes or Business Edition team features, Portainer wins on breadth.&lt;/p>
&lt;h3 id="portainer-vs-komodo">Portainer vs Komodo&lt;/h3>
&lt;p>Both do multi-host, but the split is licensing. Portainer gates RBAC, SSO/OIDC, and audit logging behind Business Edition (free only up to 3 nodes); Komodo is fully GPL-3.0 with no business edition, no server cap, and no API cap. Choose Komodo if you want uncapped fleet management and GitOps without a license meter, and accept running a database plus a per-host agent. Choose Portainer if you need its breadth (Kubernetes/Swarm/Podman) or fit inside the free 3-node BE tier.&lt;/p>
&lt;h3 id="komodo-vs-dockge">Komodo vs Dockge&lt;/h3>
&lt;p>Same open-source spirit — both are fully free — but very different scope. Dockge is a single Node service for Compose on one or two hosts; Komodo is a Rust Core plus a database plus a per-host Periphery agent, built for a fleet with Git-backed deployments. Pick Dockge for a tidy single-host UI, and Komodo when you&amp;rsquo;ve outgrown one host and want real multi-server automation.&lt;/p>
&lt;h2 id="which-should-you-run">Which should you run?&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>One or two hosts, you like Compose, you want it to stay portable →&lt;/strong> &lt;strong>Dockge.&lt;/strong> Lightest, simplest, your files stay yours.&lt;/li>
&lt;li>&lt;strong>A fleet of hosts, you want GitOps and uncapped management, and Portainer&amp;rsquo;s licensing annoyed you →&lt;/strong> &lt;strong>Komodo.&lt;/strong> Free and uncapped; accept running a database and per-host agents.&lt;/li>
&lt;li>&lt;strong>You genuinely need Kubernetes/Swarm/Podman breadth, or BE team features, and fit the 3-node free tier (or can pay) →&lt;/strong> &lt;strong>Portainer.&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>Community sentiment in 2026 trends &lt;strong>Komodo &amp;gt; Dockge &amp;gt; Portainer&lt;/strong> for self-hosters, but that ranking is use-case-dependent, not absolute. If you&amp;rsquo;re just standing up your first stacks, the &lt;a href="https://techfuelhq.com/tutorials/docker-compose-starter-stack-homelab-2026/">Docker Compose starter stack guide&lt;/a> pairs well with Dockge; if you&amp;rsquo;re managing Docker across multiple &lt;a href="https://techfuelhq.com/homelab/lxc-vs-vm-proxmox-2026/">Proxmox&lt;/a> nodes, Komodo&amp;rsquo;s fleet model is the natural fit.&lt;/p>
&lt;h2 id="moving-off-portainer-without-breaking-anything">Moving off Portainer without breaking anything&lt;/h2>
&lt;p>The single most common follow-up question — and one of the top searches on this exact topic — is &lt;em>how&lt;/em> to actually switch. The reassuring part: &lt;strong>Portainer never owned your containers.&lt;/strong> It only ever held its own view of the Docker engine, so migrating is additive, not a risky teardown. You install the new tool alongside Portainer and move stacks over one at a time.&lt;/p>
&lt;p>The cleanest path, whichever tool you land on, is to &lt;strong>get your compose files into Git first&lt;/strong> (or at least onto disk in a tidy folder tree). Once your stacks are plain &lt;code>compose.yaml&lt;/code> files you control, both alternatives adopt them directly and Portainer&amp;rsquo;s lock-in stops mattering.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>To Dockge&lt;/strong> is almost trivial: point Dockge at the directory holding your compose files and it picks them up as stacks — the files were already yours. This is why the &amp;ldquo;Portainer → Dockge → Komodo&amp;rdquo; path shows up so often in the community: Dockge is the low-friction first step off Portainer.&lt;/li>
&lt;li>&lt;strong>To Komodo&lt;/strong> takes more setup (stand up Core, a database, and a Periphery agent per host), but then you add each stack pointing at its compose file, ideally from your Git repo, and redeploy. Do it one stack at a time, confirm health, then move the next. Leave Portainer running until the last stack is across, then remove it.&lt;/li>
&lt;/ul>
&lt;p>The one gotcha that bites people: &lt;strong>secrets you injected through Portainer&amp;rsquo;s UI don&amp;rsquo;t come along.&lt;/strong> Portainer stores stack environment overrides in its own database, so those values live nowhere in your compose files. Before you decommission Portainer, export or re-note every override and re-add it as a Komodo variable (remember its bracket syntax) or a mounted &lt;code>.env&lt;/code>. Miss one and a stack redeploys with a blank password. Plan the secrets, and the rest of the move is genuinely low-drama.&lt;/p>
&lt;h2 id="other-portainer-alternatives-arcane-dockhand-coolify-and-yacht">Other Portainer alternatives: Arcane, Dockhand, Coolify, and Yacht&lt;/h2>
&lt;p>Komodo and Dockge are the two names that come up most, but the &amp;ldquo;Portainer alternatives&amp;rdquo; conversation in 2026 is wider. Four more are worth knowing, along with where each actually fits:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Arcane&lt;/strong> — a modern, mobile-friendly Docker UI written in &lt;strong>Go&lt;/strong>, so it ships as a single lean container. It&amp;rsquo;s BSD-3-Clause licensed with real-time metric graphs and GitOps, and it&amp;rsquo;s the newest name gaining serious momentum (~5k+ GitHub stars and active development). If you like Dockge but want container-level management and a nicer dashboard, Arcane is the one to try — it&amp;rsquo;s the tool behind the &lt;strong>Dockge vs Arcane&lt;/strong> searches.&lt;/li>
&lt;li>&lt;strong>Dockhand&lt;/strong> — a &lt;strong>security-focused&lt;/strong> manager (BSL 1.1) built around image vulnerability scanning and &lt;em>safe-pull&lt;/em> protection, which scans a new image before it swaps a running container. It&amp;rsquo;s newer and rougher than Arcane, but it&amp;rsquo;s the pick if update safety is your priority.&lt;/li>
&lt;li>&lt;strong>Coolify&lt;/strong> — worth calling out because it&amp;rsquo;s a &lt;em>different category&lt;/em>. Coolify is a self-hosted &lt;strong>PaaS&lt;/strong> (a Heroku/Vercel-style, Git-driven deploy platform with 280+ one-click services), not a container-management UI. If your goal is &amp;ldquo;push to Git and get a running app with SSL and a domain,&amp;rdquo; reach for Coolify; if it&amp;rsquo;s &amp;ldquo;see and control the containers I already run,&amp;rdquo; that&amp;rsquo;s Portainer/Dockge/Komodo territory. That category gap is the honest answer to &lt;strong>Portainer vs Coolify&lt;/strong>.&lt;/li>
&lt;li>&lt;strong>Yacht&lt;/strong> — a lightweight, template-driven Docker UI (Docker and Podman) built around simplicity. It&amp;rsquo;s fine for a single host, but it can&amp;rsquo;t match Portainer on multi-host management, team access, or Kubernetes — so &lt;strong>Portainer vs Yacht&lt;/strong> really comes down to &amp;ldquo;simple templates&amp;rdquo; vs &amp;ldquo;full platform.&amp;rdquo;&lt;/li>
&lt;/ul>
&lt;p>One more, for completeness: if you&amp;rsquo;re actually running &lt;strong>Kubernetes&lt;/strong>, &lt;strong>Rancher&lt;/strong> — not Portainer — is the enterprise-grade tool for that, and it&amp;rsquo;s overkill for a plain-Docker homelab.&lt;/p>
&lt;h2 id="the-honest-verdict">The honest verdict&lt;/h2>
&lt;p>There&amp;rsquo;s no single winner — there&amp;rsquo;s a right tool per situation. &lt;strong>Dockge&lt;/strong> is the easy recommendation for most single-host homelabs: light, open, and it respects your files. &lt;strong>Komodo&lt;/strong> is the answer when you&amp;rsquo;ve outgrown one host and don&amp;rsquo;t want a license meter on your own infrastructure. &lt;strong>Portainer&lt;/strong> remains the most capable platform and is fine if the free 3-node BE tier covers you or you need Kubernetes — just go in knowing which features are CE and which require paying.&lt;/p>
&lt;p>One thing I won&amp;rsquo;t fake: &lt;strong>resource footprint.&lt;/strong> There&amp;rsquo;s no reliable, current head-to-head RAM/CPU benchmark across all three, and it varies by version and how many stacks and agents you run. Dockge is lightest by design; Komodo has the largest baseline (Core + database + agents); Portainer is in between. If footprint decides it for you, run each for a day and watch &lt;code>docker stats&lt;/code> on your own hardware — and use our &lt;a href="https://techfuelhq.com/tools/docker-ram-planner/">Docker RAM planner&lt;/a> to size the host before you commit. That&amp;rsquo;s the only number that&amp;rsquo;s actually yours.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>Portainer CE vs BE comparison (RBAC, SSO/OIDC split): &lt;a href="https://www.portainer.io/blog/portainer-community-edition-ce-vs-portainer-business-edition-be-which-should-you-install" rel="noopener">https://www.portainer.io/blog/portainer-community-edition-ce-vs-portainer-business-edition-be-which-should-you-install&lt;/a>&lt;/li>
&lt;li>Portainer Business Edition pricing: &lt;a href="https://docs.portainer.io/faqs/licensing/what-is-the-pricing-for-business-edition" rel="noopener">https://docs.portainer.io/faqs/licensing/what-is-the-pricing-for-business-edition&lt;/a>&lt;/li>
&lt;li>Portainer 3-nodes-free Business Edition license: &lt;a href="https://www.portainer.io/take-3" rel="noopener">https://www.portainer.io/take-3&lt;/a>&lt;/li>
&lt;li>Portainer release lifecycle (LTS 2.39 / STS 2.43): &lt;a href="https://docs.portainer.io/start/lifecycle" rel="noopener">https://docs.portainer.io/start/lifecycle&lt;/a>&lt;/li>
&lt;li>Komodo project + docs: &lt;a href="https://komo.do/docs/setup" rel="noopener">https://komo.do/docs/setup&lt;/a> · &lt;a href="https://github.com/moghtech/komodo" rel="noopener">https://github.com/moghtech/komodo&lt;/a> (GPL-3.0, ~11.6k stars, v2.2, verified July 2026)&lt;/li>
&lt;li>Dockge repository: &lt;a href="https://github.com/louislam/dockge" rel="noopener">https://github.com/louislam/dockge&lt;/a> (MIT, ~23.7k stars, latest release v1.5 dated March 2025, verified July 2026)&lt;/li>
&lt;li>Portainer CE repository (stars/version): &lt;a href="https://github.com/portainer/portainer" rel="noopener">https://github.com/portainer/portainer&lt;/a>&lt;/li>
&lt;li>Arcane (Go Docker UI): &lt;a href="https://github.com/ofkm/arcane" rel="noopener">https://github.com/ofkm/arcane&lt;/a>&lt;/li>
&lt;li>Coolify (self-hosted PaaS): &lt;a href="https://coolify.io/" rel="noopener">https://coolify.io/&lt;/a>&lt;/li>
&lt;li>Portainer alternatives roundup (Arcane, Dockhand, Dockge, Komodo): &lt;a href="https://www.bitdoze.com/portainer-alternatives/" rel="noopener">https://www.bitdoze.com/portainer-alternatives/&lt;/a>&lt;/li>
&lt;li>Community migration sentiment (r/selfhosted, 2026): &amp;ldquo;Does it make sense to move from Portainer to Komodo?&amp;rdquo;, &amp;ldquo;Switched from Portainer to Dockge, and today to Komodo&amp;rdquo;, &amp;ldquo;Dockge alternatives?&amp;rdquo; threads&lt;/li>
&lt;/ul></description></item><item><title>Local LLM Speed Calculator: Estimate Tokens per Second</title><link>https://techfuelhq.com/tools/llm-speed-calculator/</link><pubDate>Wed, 17 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tools/llm-speed-calculator/</guid><description>&lt;h2 id="how-to-use-this-calculator">How to use this calculator&lt;/h2>
&lt;p>Enter the model&amp;rsquo;s size in billions of parameters, pick the quantization you&amp;rsquo;ll run, and choose your GPU (or enter a custom memory bandwidth). The calculator estimates the &lt;strong>generation speed in tokens per second&lt;/strong> — the speed you feel while the model is typing its reply — plus the weights size and a rough VRAM figure. The table compares common quant levels so you can see the speed-vs-quality trade for your exact hardware.&lt;/p>
&lt;p>If you&amp;rsquo;ve measured your real tokens/sec on a known model, nudge the &lt;strong>efficiency&lt;/strong> slider until the estimate matches — then its predictions for other models and quants on your rig get more accurate.&lt;/p>
&lt;h2 id="why-bandwidth-not-tflops-decides-speed">Why bandwidth, not TFLOPS, decides speed&lt;/h2>
&lt;p>Local LLM generation is &lt;strong>memory-bandwidth-bound&lt;/strong>. To produce each token, the GPU streams the model&amp;rsquo;s weights out of VRAM once and does comparatively little arithmetic per byte. So the limiting factor is how fast the card can read memory — its GB/s — not its raw compute. That&amp;rsquo;s why a memory-bandwidth number predicts token speed far better than a TFLOPS rating, and why the formula is simply:&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>tokens/sec ≈ (memory bandwidth ÷ weights size) × efficiency&lt;/strong>&lt;/p>&lt;/blockquote>
&lt;p>A 70B model at Q4_K_M is ~39 GB of weights; divide a card&amp;rsquo;s bandwidth by that and you&amp;rsquo;re in the right ballpark. Halve the weights (a lighter quant) and you roughly double the speed.&lt;/p>
&lt;h2 id="speed-vs-fit-two-different-questions">Speed vs. fit: two different questions&lt;/h2>
&lt;p>&amp;ldquo;How fast will it run?&amp;rdquo; and &amp;ldquo;will it even fit?&amp;rdquo; are separate problems. This tool answers the first. A model can fit comfortably in VRAM and still be slow (big model, modest bandwidth), or be fast in theory but not fit at all (not enough VRAM, forcing slow CPU offload). For the fit side — VRAM for weights &lt;strong>plus&lt;/strong> the KV cache at your context length — use the &lt;a href="https://techfuelhq.com/tools/llm-vram-calculator/">LLM VRAM Calculator&lt;/a>. Run both before you buy a card or pick a model.&lt;/p>
&lt;h2 id="picking-a-model-for-your-card">Picking a model for your card&lt;/h2>
&lt;p>If the estimated speed is comfortable (say 15+ tok/s for chat) and the model fits, you&amp;rsquo;re set. If it&amp;rsquo;s too slow, your levers are: a &lt;strong>lighter quant&lt;/strong> (faster and smaller, slight quality cost), a &lt;strong>smaller model&lt;/strong>, or a card with &lt;strong>more bandwidth&lt;/strong>. For which models actually fit each card in the first place, the &lt;a href="https://techfuelhq.com/articles/local-llm-by-gpu-vram-2026/">VRAM-tier guide to local LLMs by GPU&lt;/a> maps it tier by tier; for build-level guidance, see the &lt;a href="https://techfuelhq.com/tutorials/self-host-local-llm-rtx-5060-2026/">single-RTX-5060 local-LLM walkthrough&lt;/a> and the &lt;a href="https://techfuelhq.com/articles/1000-local-ai-workstation-rtx-5080-2026/">$1,000 local-AI workstation&lt;/a> for a tuned setup.&lt;/p>
&lt;h2 id="a-note-on-accuracy">A note on accuracy&lt;/h2>
&lt;p>These are estimates from the bandwidth-bound model, most reliable for larger models and short-to-medium contexts. Real numbers vary with context length (the KV cache grows and gets re-read), the inference backend, and whether the whole model fits in VRAM. Use the figure to compare GPUs and quants and to size expectations — not as a guaranteed benchmark.&lt;/p></description></item><item><title>Move a Proxmox VM to a New Host Without a Cluster (2026)</title><link>https://techfuelhq.com/tutorials/proxmox-migrate-vm-without-cluster-2026/</link><pubDate>Wed, 17 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tutorials/proxmox-migrate-vm-without-cluster-2026/</guid><description>&lt;p>Most homelabs aren&amp;rsquo;t clusters — they&amp;rsquo;re one Proxmox box, maybe two, running independently. (If you&amp;rsquo;d rather build an actual cluster with live migration and high availability instead, &lt;a href="https://techfuelhq.com/tutorials/proxmox-clustering-ha-2026/">Proxmox clustering and HA&lt;/a> is the guide for that path.) So when you buy new hardware and need to move your VMs and containers over, the cluster-only &lt;code>qm migrate&lt;/code> command doesn&amp;rsquo;t apply. The good news: you don&amp;rsquo;t need a cluster. There are three supported ways to move a guest between standalone Proxmox hosts, and this guide covers the exact commands and the pitfalls for each — drawn from the official &lt;code>qm&lt;/code>/&lt;code>pct&lt;/code> manpages and Proxmox&amp;rsquo;s backup documentation.&lt;/p>
&lt;img src="https://techfuelhq.com/images/tutorials/proxmox-migrate-vm-without-cluster-2026.svg" width="1200" height="760" loading="lazy" decoding="async" alt="Comparison of the three no-cluster methods to move a Proxmox VM to a new host — qm/pct remote-migrate, vzdump plus qmrestore, and Proxmox Backup Server — across downtime, whether they cross storage types, what each needs, live-migration support, and best fit; vzdump plus restore is the most reliable pick while remote-migrate is the only live but experimental option." style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;blockquote>
&lt;p>&lt;strong>Keep the source until the destination is verified.&lt;/strong> Whichever method you use, don&amp;rsquo;t delete the original guest until the new one boots, networks, and works. Every method below leaves you a fallback if you don&amp;rsquo;t rush the cleanup.&lt;/p>&lt;/blockquote>
&lt;h2 id="the-three-methods-at-a-glance">The three methods at a glance&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Method&lt;/th>
&lt;th scope="col">Downtime&lt;/th>
&lt;th scope="col">Crosses storage types?&lt;/th>
&lt;th scope="col">Needs&lt;/th>
&lt;th scope="col">Best for&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>qm/pct remote-migrate&lt;/code>&lt;/td>
&lt;td>Near-zero (with &lt;code>--online&lt;/code>)&lt;/td>
&lt;td>Only when online&lt;/td>
&lt;td>API token&lt;/td>
&lt;td>Minimal-downtime moves&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>vzdump&lt;/code> + &lt;code>qmrestore&lt;/code>&lt;/td>
&lt;td>Some (mode-dependent)&lt;/td>
&lt;td>&lt;strong>Yes&lt;/strong>&lt;/td>
&lt;td>File copy (scp/rsync)&lt;/td>
&lt;td>Most moves; mismatched storage&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Proxmox Backup Server&lt;/td>
&lt;td>Some (or &lt;code>--live-restore&lt;/code>)&lt;/td>
&lt;td>Yes&lt;/td>
&lt;td>Shared PBS&lt;/td>
&lt;td>If you already run PBS&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;h2 id="method-1-qm-remote-migrate-direct-supports-live">Method 1: &lt;code>qm remote-migrate&lt;/code> (direct, supports live)&lt;/h2>
&lt;p>This transfers a guest straight from one host to another, authenticated by an API token. It&amp;rsquo;s the &lt;strong>only no-cluster method that supports live (online) migration&lt;/strong>, but Proxmox still labels it an &lt;strong>EXPERIMENTAL feature&lt;/strong> (it landed in PVE 7.3, November 2022). Treat it as CLI-only and test before trusting it with something critical.&lt;/p>
&lt;p>&lt;strong>Syntax (VM):&lt;/strong>&lt;/p>
&lt;pre tabindex="0">&lt;code>qm remote-migrate &amp;lt;vmid&amp;gt; [&amp;lt;target-vmid&amp;gt;] &amp;lt;target-endpoint&amp;gt; \
--target-bridge &amp;lt;bridge&amp;gt; --target-storage &amp;lt;storage&amp;gt; [OPTIONS]
&lt;/code>&lt;/pre>&lt;p>The &lt;code>&amp;lt;target-endpoint&amp;gt;&lt;/code> is:&lt;/p>
&lt;pre tabindex="0">&lt;code>apitoken=PVEAPIToken=user@realm!token=SECRET,host=ADDRESS[,fingerprint=FP][,port=PORT]
&lt;/code>&lt;/pre>&lt;p>&lt;strong>A real example&lt;/strong> (move VM 134 to become VM 205 on &lt;code>pve-dest&lt;/code>, live):&lt;/p>
&lt;pre tabindex="0">&lt;code>qm remote-migrate 134 205 \
&amp;#39;apitoken=PVEAPIToken=root@pam!migrate_token=abc123,host=pve-dest,fingerprint=D4:9A:3F:...:CD&amp;#39; \
--target-bridge vmbr0 --target-storage local-lvm --online
&lt;/code>&lt;/pre>&lt;p>Useful options: &lt;code>--online&lt;/code> (live-migrate a running VM), &lt;code>--delete&lt;/code> (remove the source after success), &lt;code>--bwlimit&lt;/code>. For containers, use &lt;code>pct remote-migrate&lt;/code> with the same form plus &lt;code>--restart&lt;/code> (it restarts the CT on the destination). Passing the special value &lt;code>1&lt;/code> to &lt;code>--target-bridge&lt;/code>/&lt;code>--target-storage&lt;/code> maps each source item to a same-named target (identity mapping).&lt;/p>
&lt;p>&lt;strong>Set up the API token on the &lt;em>target&lt;/em> host:&lt;/strong> Datacenter → API Tokens → Add, user &lt;code>root@pam&lt;/code>. Either turn &lt;strong>off&lt;/strong> Privilege Separation (full account access) or keep it on and grant the token the &lt;strong>Administrator&lt;/strong> role on path &lt;code>/&lt;/code> (Datacenter → Permissions → Add → API Token Permission). Get the fingerprint with:&lt;/p>
&lt;pre tabindex="0">&lt;code>openssl x509 -fingerprint -sha256 -noout -in /etc/pve/nodes/$(hostname)/pve-ssl.pem
&lt;/code>&lt;/pre>&lt;p>&lt;strong>The two big limitations:&lt;/strong> remote-migrate &lt;strong>can&amp;rsquo;t move a guest that has snapshots&lt;/strong> (delete them first, or use backup/restore), and &lt;strong>offline&lt;/strong> migration can&amp;rsquo;t cross storage types — you&amp;rsquo;ll hit &lt;code>cannot migrate from storage type lvmthin to zfspool&lt;/code>. The workaround is to migrate while the VM is &lt;strong>running&lt;/strong> (online storage migration &lt;em>can&lt;/em> change storage type), or use Method 2.&lt;/p>
&lt;h2 id="method-2-vzdump--qmrestore--pct-restore-most-reliable">Method 2: &lt;code>vzdump&lt;/code> + &lt;code>qmrestore&lt;/code> / &lt;code>pct restore&lt;/code> (most reliable)&lt;/h2>
&lt;p>This is the storage-agnostic workhorse: back the guest up, copy the file, restore it on the new host. It works across mismatched storage types where remote-migrate refuses.&lt;/p>
&lt;p>&lt;strong>On the source:&lt;/strong>&lt;/p>
&lt;pre tabindex="0">&lt;code>vzdump 777 --mode snapshot --compress zstd --dumpdir /var/lib/vz/dump
&lt;/code>&lt;/pre>&lt;p>&lt;code>--mode snapshot&lt;/code> is the default and avoids downtime; use &lt;code>--mode stop&lt;/code> for maximum consistency (more downtime). &lt;code>zstd&lt;/code> is the fast modern compressor. You get a &lt;code>vzdump-qemu-777-….vma.zst&lt;/code> (VM) or &lt;code>vzdump-lxc-777-….tar.zst&lt;/code> (container).&lt;/p>
&lt;p>&lt;strong>Copy it to the new host:&lt;/strong>&lt;/p>
&lt;pre tabindex="0">&lt;code>rsync -avP /var/lib/vz/dump/vzdump-qemu-777-*.vma.zst root@pve-dest:/var/lib/vz/dump/
&lt;/code>&lt;/pre>&lt;p>&lt;strong>On the new host — restore&lt;/strong> (VM, then container):&lt;/p>
&lt;pre tabindex="0">&lt;code>qmrestore /var/lib/vz/dump/vzdump-qemu-777-*.vma.zst 500 --storage local-lvm --unique
pct restore 600 /var/lib/vz/dump/vzdump-lxc-777-*.tar.zst --storage local-lvm
&lt;/code>&lt;/pre>&lt;p>Pick a free target VMID (or pass &lt;code>--force&lt;/code> to overwrite an existing one), set &lt;code>--storage&lt;/code> to a pool that exists on the new host, and use &lt;code>--unique&lt;/code> to assign a fresh MAC so two copies don&amp;rsquo;t fight on the network.&lt;/p>
&lt;h2 id="method-3-proxmox-backup-server-if-you-already-run-it">Method 3: Proxmox Backup Server (if you already run it)&lt;/h2>
&lt;p>If you run &lt;a href="https://techfuelhq.com/tutorials/proxmox-backup-server-3-2-1-2026/">PBS for 3-2-1 backups&lt;/a>, it doubles as a migration path. Add the same PBS as storage on the new host (Datacenter → Storage → Add → Proxmox Backup Server), then select the guest&amp;rsquo;s backup in the storage tree and &lt;strong>Restore&lt;/strong>, or use &lt;code>qmrestore&lt;/code>/&lt;code>pct restore&lt;/code> against the PBS-backed storage. PBS deduplicates and only transfers changed chunks, so it&amp;rsquo;s efficient for repeated moves, and &lt;code>--live-restore&lt;/code> (PBS only) boots the VM immediately while the data restores in the background. One catch: for &lt;strong>encrypted&lt;/strong> backups you must supply the same encryption key on the new host or the restore fails.&lt;/p>
&lt;h2 id="the-pitfalls-that-bite">The pitfalls that bite&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Storage-type mismatch.&lt;/strong> Offline remote-migrate can&amp;rsquo;t cross types (lvmthin → zfspool). Use online migration or vzdump+restore with the right &lt;code>--storage&lt;/code>.&lt;/li>
&lt;li>&lt;strong>Bridge naming.&lt;/strong> The new host must have the bridge the guest expects (&lt;code>vmbr0&lt;/code>), or you map it with &lt;code>--target-bridge&lt;/code>. A guest that boots onto a non-existent bridge comes up with no network.&lt;/li>
&lt;li>&lt;strong>VMID conflicts.&lt;/strong> If the target ID is taken, pick a new target VMID, or use &lt;code>--force&lt;/code> (overwrite) / &lt;code>--unique&lt;/code> (fresh MAC) deliberately.&lt;/li>
&lt;li>&lt;strong>Snapshots block remote-migrate.&lt;/strong> Delete them first or take the backup/restore route.&lt;/li>
&lt;/ul>
&lt;h2 id="which-should-you-use">Which should you use?&lt;/h2>
&lt;p>For a &lt;strong>one-off move to new hardware&lt;/strong>, use &lt;strong>vzdump + restore&lt;/strong> — it&amp;rsquo;s the most reliable, crosses storage types, and leaves the original safe. For &lt;strong>minimal downtime&lt;/strong> on a running service, use &lt;strong>&lt;code>remote-migrate --online&lt;/code>&lt;/strong>, accepting its experimental status and testing first. If you &lt;strong>already run PBS&lt;/strong>, restoring from it is the least extra work. Whatever you choose, keep the source guest until the destination is verified — and if you&amp;rsquo;re moving because you&amp;rsquo;re rebuilding a host, read the &lt;a href="https://techfuelhq.com/tutorials/proxmox-ve-8-to-9-upgrade-2026/">PVE 8→9 upgrade gotchas&lt;/a> before you reinstall.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>Proxmox &lt;code>qm&lt;/code> manual (remote-migrate syntax): &lt;a href="https://pve.proxmox.com/pve-docs/qm.1.html" rel="noopener">https://pve.proxmox.com/pve-docs/qm.1.html&lt;/a>&lt;/li>
&lt;li>Proxmox &lt;code>pct&lt;/code> manual (container migration/restore): &lt;a href="https://pve.proxmox.com/pve-docs/pct.1.html" rel="noopener">https://pve.proxmox.com/pve-docs/pct.1.html&lt;/a>&lt;/li>
&lt;li>Proxmox vzdump documentation: &lt;a href="https://pve.proxmox.com/pve-docs/chapter-vzdump.html" rel="noopener">https://pve.proxmox.com/pve-docs/chapter-vzdump.html&lt;/a>&lt;/li>
&lt;li>Proxmox Backup and Restore wiki: &lt;a href="https://pve.proxmox.com/wiki/Backup_and_Restore" rel="noopener">https://pve.proxmox.com/wiki/Backup_and_Restore&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>PoE Power Budget Calculator: Will Your Switch Power It All?</title><link>https://techfuelhq.com/tools/poe-budget-calculator/</link><pubDate>Wed, 17 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tools/poe-budget-calculator/</guid><description>&lt;h2 id="how-to-use-this-calculator">How to use this calculator&lt;/h2>
&lt;p>Enter how many of each PoE device you have — access points, fixed cameras, PTZ cameras, VoIP phones, and anything else — with the wattage each draws. Set the average cable run length and a headroom percentage, and the calculator returns the &lt;strong>total switch PoE budget you should buy&lt;/strong>. Enter your switch&amp;rsquo;s actual budget too, and it tells you whether it fits with watts to spare or falls short.&lt;/p>
&lt;p>The defaults are typical values; for an accurate result, set each device&amp;rsquo;s real rated draw (it&amp;rsquo;s on the spec sheet or the device itself).&lt;/p>
&lt;h2 id="switch-budget-vs-device-draw">Switch budget vs. device draw&lt;/h2>
&lt;p>A PoE switch advertises a &lt;strong>total PoE budget&lt;/strong> — say 60 W or 250 W — which is the combined wattage it can deliver across all ports at once, measured at the switch (the PSE, power-sourcing equipment). Your devices (PDs, powered devices) are rated by what they consume, and the difference between the two is lost in the cable. So the budget you need isn&amp;rsquo;t just the sum of device labels: it&amp;rsquo;s that sum, plus cable losses, plus headroom. Size for the switch side, not the device side.&lt;/p>
&lt;h2 id="the-headroom-rule">The headroom rule&lt;/h2>
&lt;p>Always leave room. Power-on inrush, an AP that ramps up under a full client load, a camera switching on night-vision IR, and underestimated cable loss all push real draw above the nameplate sum. About &lt;strong>20% headroom&lt;/strong> keeps ports reliable and leaves space to add a device later. A switch run at 100% of budget will start dropping power to ports the moment something spikes — usually as a confusing, intermittent outage rather than a clean failure.&lt;/p>
&lt;h2 id="what-this-pairs-with">What this pairs with&lt;/h2>
&lt;p>Once you know the budget, the &lt;a href="https://techfuelhq.com/articles/best-homelab-networking-gear-under-200/">budget homelab networking gear guide&lt;/a> covers switches that hit common budget tiers, and the &lt;a href="https://techfuelhq.com/networking/mikrotik-crs305-review-2026/">MikroTik CRS305 review&lt;/a> is worth a look if you&amp;rsquo;re combining PoE with a 10GbE uplink. If your APs are the big draw, the &lt;a href="https://techfuelhq.com/networking/wifi-7-homelab-home-network-2026/">Wi-Fi 7 guide&lt;/a> covers which APs need PoE+/bt versus plain PoE.&lt;/p></description></item><item><title>Proxmox VE 8 to 9 Upgrade: The Gotchas to Know First (2026)</title><link>https://techfuelhq.com/tutorials/proxmox-ve-8-to-9-upgrade-2026/</link><pubDate>Wed, 17 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tutorials/proxmox-ve-8-to-9-upgrade-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-06-17 · Updated 2026-07-13 · ~8 min read · St. Louis County, MO&lt;/p>
&lt;p>Proxmox VE 9 has been out since August 2025, and the current release — &lt;strong>9.2&lt;/strong>, built on Debian 13.5 &amp;ldquo;Trixie&amp;rdquo; with &lt;strong>Linux kernel 7.0&lt;/strong> — is what a fresh in-place upgrade from 8 lands you on today. The 8-to-9 in-place upgrade is officially supported. It is also a real version jump, not a point release, and it ships a handful of breaking changes that can leave a node off the network or refusing to boot if you walk in unprepared.&lt;/p>
&lt;p>There&amp;rsquo;s a clock on it now, too: &lt;strong>Proxmox VE 8 reaches end of standard support in August 2026&lt;/strong>, which is why upgrade searches are climbing through the summer. This is the pre-flight guide: what to check before you start, the gotchas that actually bite, and the upgrade steps themselves — built from Proxmox&amp;rsquo;s official &lt;code>Upgrade_from_8_to_9&lt;/code> documentation and the issues the community has reported hitting. The mechanism is not scary. The preparation is the whole job.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Back up first, always.&lt;/strong> Proxmox&amp;rsquo;s own guidance is blunt: &lt;em>&amp;ldquo;A valid and tested backup is always required before starting the upgrade process.&amp;rdquo;&lt;/em> If you take one thing from this page, take that.&lt;/p>&lt;/blockquote>
&lt;img src="https://techfuelhq.com/images/tutorials/proxmox-ve-8-to-9-upgrade-2026.svg" alt="Proxmox VE 8 to 9 in-place upgrade flow: get every node to PVE 8.4.1 or later, run pve8to9 --full and clear every warning, take a tested backup, switch the repositories to Debian 13 Trixie, then dist-upgrade and reboot." width="1200" height="740" loading="lazy" decoding="async" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;div class="visual-block">
&lt;div style="background:#140f0a;padding:24px 20px 22px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#f0e9e2;">
&lt;div style="display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;">
&lt;div style="min-width:0;">&lt;div style="font-size:18px;font-weight:700;letter-spacing:-0.3px;color:#f6efe8;">Proxmox VE 8's support clock&lt;/div>&lt;div style="font-size:12px;color:#c1a894;margin-top:5px;line-height:1.55;max-width:440px;">The 8&amp;#8594;9 upgrade isn't urgent because 9 is shiny &amp;mdash; it's urgent because 8 runs out of official support. A homelab box keeps booting afterward, but with no more security or bug fixes.&lt;/div>&lt;/div>
&lt;div style="flex:0 0 auto;text-align:right;background:#3a1414;border:1px solid #7a2a2a;border-radius:8px;padding:9px 13px;">&lt;div style="font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:#f0916f;font-weight:700;">End of standard support&lt;/div>&lt;div style="font-size:22px;font-weight:900;color:#ff8a6b;line-height:1.1;margin-top:2px;">August 2026&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="display:flex;align-items:flex-end;margin-top:20px;font-size:10.5px;">&lt;span style="flex:1 1 auto;min-width:0;">&lt;/span>&lt;span style="flex:0 0 auto;color:#f4c542;font-weight:700;white-space:nowrap;">Jul 2026 &amp;mdash; you are here &amp;#9660;&lt;/span>&lt;span style="flex:0 0 26%;">&lt;/span>&lt;/div>
&lt;div style="display:flex;align-items:stretch;margin-top:4px;height:34px;border-radius:6px;overflow:hidden;">
&lt;div style="flex:0 0 66%;background:linear-gradient(90deg,#2f7d4f,#3ba064);display:flex;align-items:center;padding-left:12px;font-size:11px;font-weight:700;color:#eafff1;">Supported &amp;#183; since Jun 2023&lt;/div>
&lt;div style="flex:0 0 8%;background:linear-gradient(90deg,#c98a1e,#e0a92e);">&lt;/div>
&lt;div style="flex:0 0 26%;background:repeating-linear-gradient(45deg,#5a1f1f,#5a1f1f 7px,#701f1f 7px,#701f1f 14px);border-left:3px solid #ff5a4d;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#ffd9d2;">Unsupported&lt;/div>
&lt;/div>
&lt;div style="display:flex;justify-content:space-between;margin-top:8px;font-size:10.5px;color:#b7a08f;">
&lt;span>&amp;#9679; Jun 2023 &amp;mdash; PVE 8 released&lt;/span>
&lt;span style="color:#ff8a6b;font-weight:700;">Aug 2026 &amp;mdash; EOL &amp;#8594;&lt;/span>
&lt;/div>
&lt;div style="margin-top:16px;padding-top:12px;border-top:1px solid rgba(255,255,255,0.08);font-size:11px;color:#c1a894;line-height:1.6;">PVE 9 has been available since August 2025, so there's a mature 9.x line (now 9.2) to land on &amp;mdash; you're not an early adopter. Waiting for a point release you trust is still fine; just remember that wait now has a hard deadline a few weeks out.&lt;/div>
&lt;div style="text-align:right;margin-top:8px;font-size:10px;color:#6e5b4c;">techfuelhq.com &amp;#183; dates per Proxmox's official support-lifecycle table&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="the-short-version">The short version&lt;/h2>
&lt;ul>
&lt;li>Get every node to &lt;strong>PVE 8.4.1 or later&lt;/strong> first.&lt;/li>
&lt;li>Run &lt;strong>&lt;code>pve8to9 --full&lt;/code>&lt;/strong> and clear every warning before touching repositories.&lt;/li>
&lt;li>&lt;strong>Back up&lt;/strong> all VMs/containers (ideally a tested &lt;a href="https://techfuelhq.com/tutorials/proxmox-backup-server-3-2-1-2026/">3-2-1 backup&lt;/a>) and make sure you have &lt;strong>IPMI or physical console&lt;/strong> access.&lt;/li>
&lt;li>Switch repos from &lt;code>bookworm&lt;/code> to &lt;code>trixie&lt;/code>, &lt;code>apt update &amp;amp;&amp;amp; apt dist-upgrade&lt;/code>, reboot into the new kernel (7.0 on the current 9.2).&lt;/li>
&lt;li>On a &lt;strong>cluster: one node at a time, keep quorum&lt;/strong>, Ceph to Squid first.&lt;/li>
&lt;li>Expect possible &lt;strong>NIC renames&lt;/strong> and &lt;strong>LVM autoactivation&lt;/strong> changes — handle them &lt;em>before&lt;/em> you reboot.&lt;/li>
&lt;/ul>
&lt;h2 id="what-youre-actually-upgrading-to">What you&amp;rsquo;re actually upgrading to&lt;/h2>
&lt;p>When you point your repositories at Trixie and run &lt;code>apt dist-upgrade&lt;/code>, APT installs the &lt;em>current&lt;/em> Proxmox VE 9 packages — you don&amp;rsquo;t get to choose 9.0. As of mid-2026 that means you land directly on &lt;strong>Proxmox VE 9.2&lt;/strong> (released May 21, 2026), not the original 9.0 from August 2025. The stack underneath you becomes:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Debian 13.5 &amp;ldquo;Trixie&amp;rdquo;&lt;/strong> and &lt;strong>Linux kernel 7.0&lt;/strong> (up from the 6.14 that shipped with 9.0)&lt;/li>
&lt;li>&lt;strong>QEMU 11.0&lt;/strong>, &lt;strong>LXC 7.0&lt;/strong>, &lt;strong>ZFS 2.4&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Ceph Tentacle 20.2&lt;/strong> as the new default for hyperconverged clusters, with &lt;strong>Squid 19.2&lt;/strong> still available (you still upgrade &lt;em>existing&lt;/em> Ceph to Squid &lt;em>before&lt;/em> the PVE jump — see the cluster section)&lt;/li>
&lt;/ul>
&lt;p>The headline 9.2 additions over 9.0 are a &lt;strong>dynamic load balancer&lt;/strong> that migrates guests across a cluster from live CPU/RAM utilization while respecting your &lt;a href="https://techfuelhq.com/tutorials/proxmox-clustering-ha-2026/">HA rules&lt;/a>, native &lt;strong>WireGuard and BGP&lt;/strong> in the SDN stack, and &lt;strong>custom CPU model management&lt;/strong> in the web UI. None of this changes the upgrade procedure — but it&amp;rsquo;s worth knowing you jump straight to the current release, and that the newer kernel is what drives the NIC-rename and PCI-passthrough gotchas further down.&lt;/p>
&lt;h2 id="before-you-touch-anything">Before you touch anything&lt;/h2>
&lt;p>The prerequisites from the official guide:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Be on PVE 8.4.1+&lt;/strong> on every node. The &lt;code>pve8to9&lt;/code> checklist ships in the latest 8.4 packages.&lt;/li>
&lt;li>&lt;strong>Tested backups&lt;/strong> of every guest. Test a restore in a lab if you can.&lt;/li>
&lt;li>&lt;strong>At least 5 GB free&lt;/strong> on the root filesystem (10+ GB recommended) for the package transition.&lt;/li>
&lt;li>&lt;strong>Console access that isn&amp;rsquo;t the web GUI.&lt;/strong> Use IPMI/iKVM or a physical console, or SSH inside &lt;code>tmux&lt;/code>/&lt;code>screen&lt;/code> — never the GUI&amp;rsquo;s noVNC console, which dies with the services mid-upgrade.&lt;/li>
&lt;li>&lt;strong>Ceph users:&lt;/strong> upgrade Ceph to &lt;strong>19.2 Squid before&lt;/strong> upgrading Proxmox.&lt;/li>
&lt;li>&lt;strong>Co-installed Proxmox Backup Server:&lt;/strong> upgrade &lt;strong>PBS to version 4 first&lt;/strong>.&lt;/li>
&lt;/ul>
&lt;h2 id="run-the-checklist-pve8to9---full">Run the checklist: &lt;code>pve8to9 --full&lt;/code>&lt;/h2>
&lt;p>Before changing a single repository line, run:&lt;/p>
&lt;pre tabindex="0">&lt;code>pve8to9 --full
&lt;/code>&lt;/pre>&lt;p>It flags common incompatibilities — repository state, LVM, boot configuration, known package conflicts — but it does &lt;strong>not&lt;/strong> fix anything for you. Work through every warning, then run it again until it&amp;rsquo;s clean. This one command prevents the majority of failed upgrades.&lt;/p>
&lt;h2 id="the-gotchas-that-actually-bite">The gotchas that actually bite&lt;/h2>
&lt;p>These are the changes most likely to cause a bad day. Most are easy to handle &lt;em>if you handle them before the reboot&lt;/em>.&lt;/p>
&lt;h3 id="lvm-autoactivation-is-now-off-by-default">LVM autoactivation is now off by default&lt;/h3>
&lt;p>On Proxmox 9, &lt;strong>LVM autoactivation is disabled by default for new logical volumes&lt;/strong> in shared-LVM setups. Existing volumes keep their old behavior, but this trips people on shared storage. There&amp;rsquo;s a migration helper at &lt;code>/usr/share/pve-manager/migrations/pve-lvm-disable-autoactivation&lt;/code>, and some LVM thin pools need a manual repair afterward:&lt;/p>
&lt;pre tabindex="0">&lt;code>lvconvert --repair pve/data
&lt;/code>&lt;/pre>&lt;h3 id="network-interfaces-can-get-renamed">Network interfaces can get renamed&lt;/h3>
&lt;p>The newer kernel can recognize additional NIC hardware features, which &lt;strong>changes the predictable interface name&lt;/strong>. If your &lt;code>vmbr0&lt;/code> bridge points at the old name, the host boots with no network. Proxmox ships &lt;strong>&lt;code>pve-network-interface-pinning&lt;/code>&lt;/strong> to lock your current names in place — run it &lt;em>before&lt;/em> the upgrade, and keep console access handy just in case.&lt;/p>
&lt;p>If you run a &lt;strong>Ceph Full Mesh&lt;/strong> with &lt;code>post-up /usr/bin/systemctl restart frr.service&lt;/code>, that line will deadlock on 9 — switch it to a conditional restart.&lt;/p>
&lt;h3 id="boot-and-systemd-changes">Boot and systemd changes&lt;/h3>
&lt;ul>
&lt;li>Remove the &lt;strong>&lt;code>systemd-boot&lt;/code> meta-package&lt;/strong> where &lt;code>proxmox-boot-tool&lt;/code> manages booting (the upgrade notes call this out).&lt;/li>
&lt;li>&lt;strong>GRUB on LVM in UEFI mode&lt;/strong> can fail to install; the fix is &lt;code>[ -d /sys/firmware/efi ] &amp;amp;&amp;amp; apt install grub-efi-amd64&lt;/code>.&lt;/li>
&lt;li>&lt;strong>&lt;code>/etc/sysctl.conf&lt;/code> is no longer honored&lt;/strong> by systemd-sysctl — move any custom kernel tunables into &lt;code>/etc/sysctl.d/&amp;lt;NN&amp;gt;-name.conf&lt;/code>.&lt;/li>
&lt;/ul>
&lt;h3 id="containers-passthrough-and-migration">Containers, passthrough, and migration&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>cgroup v1 is removed.&lt;/strong> Containers running systemd older than 230 (CentOS 7, Ubuntu 16.04) won&amp;rsquo;t start — migrate those guests first.&lt;/li>
&lt;li>&lt;strong>PCI passthrough can break on the newer kernel&lt;/strong> (first widely reported on 6.14; the current 9.2 ships kernel 7.0). If a passthrough VM misbehaves, the known workaround is pinning an older kernel until it&amp;rsquo;s resolved.&lt;/li>
&lt;li>&lt;strong>Live migration between different CPU vendors&lt;/strong> (Intel↔AMD) can leave guests unresponsive — plan maintenance windows accordingly.&lt;/li>
&lt;li>&lt;strong>NVIDIA vGPU&lt;/strong> needs driver ≥570.158.02 (GRID 18.3+); &lt;strong>Veeam&lt;/strong> is incompatible with QEMU machine version ≥10.0.&lt;/li>
&lt;/ul>
&lt;div class="visual-block">
&lt;div style="background:#0b0f16;padding:24px 20px 22px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e6ebf2;">
&lt;div style="font-size:18px;font-weight:700;letter-spacing:-0.3px;color:#eef2f8;">Six green lights before you touch a repo&lt;/div>
&lt;div style="font-size:12px;color:#8b97ad;margin-top:5px;line-height:1.55;max-width:600px;">The 8&amp;#8594;9 mechanism is routine. These six pre-flight checks are where the whole risk lives. Get every lamp green before you run &lt;span style="color:#cdd6e6;font-family:ui-monospace,Menlo,Consolas,monospace;">apt dist-upgrade&lt;/span> &amp;mdash; no exceptions.&lt;/div>
&lt;div style="margin-top:18px;display:flex;flex-direction:column;gap:7px;">
&lt;div style="display:flex;align-items:flex-start;gap:11px;padding:10px 12px;background:#0f1622;border:1px solid rgba(255,255,255,0.055);border-radius:7px;">
&lt;span style="width:14px;height:14px;margin-top:3px;border-radius:50%;background:#35d07f;box-shadow:0 0 8px rgba(53,208,127,0.75);flex:0 0 auto;">&lt;/span>
&lt;div style="flex:1 1 auto;min-width:0;">&lt;div style="display:flex;justify-content:space-between;gap:8px;align-items:baseline;flex-wrap:wrap;">&lt;span style="font-size:13.5px;font-weight:700;color:#eef2f8;">1 &amp;middot; On PVE 8.4.1+, every node&lt;/span>&lt;span style="font-family:ui-monospace,Menlo,Consolas,monospace;font-size:10.5px;color:#7fb0ee;background:#0b1220;padding:2px 7px;border-radius:4px;white-space:nowrap;">pveversion&lt;/span>&lt;/div>&lt;div style="font-size:11px;color:#8b97ad;line-height:1.5;margin-top:3px;">The pve8to9 checker only ships in the latest 8.4 packages.&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="display:flex;align-items:flex-start;gap:11px;padding:10px 12px;background:#0f1622;border:1px solid rgba(255,255,255,0.055);border-radius:7px;">
&lt;span style="width:14px;height:14px;margin-top:3px;border-radius:50%;background:#35d07f;box-shadow:0 0 8px rgba(53,208,127,0.75);flex:0 0 auto;">&lt;/span>
&lt;div style="flex:1 1 auto;min-width:0;">&lt;div style="display:flex;justify-content:space-between;gap:8px;align-items:baseline;flex-wrap:wrap;">&lt;span style="font-size:13.5px;font-weight:700;color:#eef2f8;">2 &amp;middot; A tested backup of every guest&lt;/span>&lt;span style="font-family:ui-monospace,Menlo,Consolas,monospace;font-size:10.5px;color:#7fb0ee;background:#0b1220;padding:2px 7px;border-radius:4px;white-space:nowrap;">vzdump / PBS&lt;/span>&lt;/div>&lt;div style="font-size:11px;color:#8b97ad;line-height:1.5;margin-top:3px;">Not just taken &amp;mdash; restore-tested. It is your only real undo.&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="display:flex;align-items:flex-start;gap:11px;padding:10px 12px;background:#0f1622;border:1px solid rgba(255,255,255,0.055);border-radius:7px;">
&lt;span style="width:14px;height:14px;margin-top:3px;border-radius:50%;background:#35d07f;box-shadow:0 0 8px rgba(53,208,127,0.75);flex:0 0 auto;">&lt;/span>
&lt;div style="flex:1 1 auto;min-width:0;">&lt;div style="display:flex;justify-content:space-between;gap:8px;align-items:baseline;flex-wrap:wrap;">&lt;span style="font-size:13.5px;font-weight:700;color:#eef2f8;">3 &amp;middot; pve8to9 --full comes back clean&lt;/span>&lt;span style="font-family:ui-monospace,Menlo,Consolas,monospace;font-size:10.5px;color:#7fb0ee;background:#0b1220;padding:2px 7px;border-radius:4px;white-space:nowrap;">pve8to9 --full&lt;/span>&lt;/div>&lt;div style="font-size:11px;color:#8b97ad;line-height:1.5;margin-top:3px;">It only reports; you fix each warning, then re-run until it is zero.&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="display:flex;align-items:flex-start;gap:11px;padding:10px 12px;background:#0f1622;border:1px solid rgba(255,255,255,0.055);border-radius:7px;">
&lt;span style="width:14px;height:14px;margin-top:3px;border-radius:50%;background:#35d07f;box-shadow:0 0 8px rgba(53,208,127,0.75);flex:0 0 auto;">&lt;/span>
&lt;div style="flex:1 1 auto;min-width:0;">&lt;div style="display:flex;justify-content:space-between;gap:8px;align-items:baseline;flex-wrap:wrap;">&lt;span style="font-size:13.5px;font-weight:700;color:#eef2f8;">4 &amp;middot; NIC names pinned&lt;/span>&lt;span style="font-family:ui-monospace,Menlo,Consolas,monospace;font-size:10.5px;color:#7fb0ee;background:#0b1220;padding:2px 7px;border-radius:4px;white-space:nowrap;">NIC pinning&lt;/span>&lt;/div>&lt;div style="font-size:11px;color:#8b97ad;line-height:1.5;margin-top:3px;">The new kernel can rename interfaces; a stale vmbr0 comes up with no network.&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="display:flex;align-items:flex-start;gap:11px;padding:10px 12px;background:#0f1622;border:1px solid rgba(255,255,255,0.055);border-radius:7px;">
&lt;span style="width:14px;height:14px;margin-top:3px;border-radius:50%;background:#35d07f;box-shadow:0 0 8px rgba(53,208,127,0.75);flex:0 0 auto;">&lt;/span>
&lt;div style="flex:1 1 auto;min-width:0;">&lt;div style="display:flex;justify-content:space-between;gap:8px;align-items:baseline;flex-wrap:wrap;">&lt;span style="font-size:13.5px;font-weight:700;color:#eef2f8;">5 &amp;middot; Console that isn't the web GUI&lt;/span>&lt;span style="font-family:ui-monospace,Menlo,Consolas,monospace;font-size:10.5px;color:#7fb0ee;background:#0b1220;padding:2px 7px;border-radius:4px;white-space:nowrap;">IPMI / tmux&lt;/span>&lt;/div>&lt;div style="font-size:11px;color:#8b97ad;line-height:1.5;margin-top:3px;">The GUI's noVNC console dies with the services mid-upgrade. Use IPMI, physical, or SSH in tmux.&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="display:flex;align-items:flex-start;gap:11px;padding:10px 12px;background:#0f1622;border:1px solid rgba(255,255,255,0.055);border-radius:7px;">
&lt;span style="width:14px;height:14px;margin-top:3px;border-radius:50%;background:#35d07f;box-shadow:0 0 8px rgba(53,208,127,0.75);flex:0 0 auto;">&lt;/span>
&lt;div style="flex:1 1 auto;min-width:0;">&lt;div style="display:flex;justify-content:space-between;gap:8px;align-items:baseline;flex-wrap:wrap;">&lt;span style="font-size:13.5px;font-weight:700;color:#eef2f8;">6 &amp;middot; Ceph on 19.2 Squid (if hyperconverged)&lt;/span>&lt;span style="font-family:ui-monospace,Menlo,Consolas,monospace;font-size:10.5px;color:#7fb0ee;background:#0b1220;padding:2px 7px;border-radius:4px;white-space:nowrap;">ceph -v&lt;/span>&lt;/div>&lt;div style="font-size:11px;color:#8b97ad;line-height:1.5;margin-top:3px;">Upgrade Ceph to Squid before PVE. No Ceph? This one is a free pass.&lt;/div>&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:14px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 14px;background:#0e1520;border:1px solid rgba(120,200,120,0.28);border-radius:8px;">
&lt;span style="width:15px;height:15px;border-radius:50%;background:#35d07f;box-shadow:0 0 10px rgba(53,208,127,0.85);flex:0 0 auto;">&lt;/span>
&lt;span style="font-size:12.5px;color:#cfe7db;font-weight:800;white-space:nowrap;">All six green&lt;/span>
&lt;span style="color:#5f7089;font-size:14px;">&amp;#8594;&lt;/span>
&lt;span style="font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12.5px;color:#c8ff00;font-weight:700;background:#141a10;padding:4px 9px;border-radius:5px;white-space:nowrap;">apt dist-upgrade&lt;/span>
&lt;span style="font-size:11px;color:#8b97ad;line-height:1.5;flex:1 1 180px;min-width:0;">Miss one and the upgrade can still &amp;ldquo;succeed&amp;rdquo; &amp;mdash; then the node reboots onto no network, or won't boot at all. The checklist &lt;em>is&lt;/em> the job.&lt;/span>
&lt;/div>
&lt;div style="text-align:right;margin-top:9px;font-size:10px;color:#465073;">techfuelhq.com &amp;#183; prerequisites per Proxmox's official Upgrade_from_8_to_9 guide&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="the-upgrade-itself">The upgrade itself&lt;/h2>
&lt;p>Once &lt;code>pve8to9 --full&lt;/code> is clean and you&amp;rsquo;ve handled the gotchas above:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Migrate guests off&lt;/strong> the node you&amp;rsquo;re about to upgrade (on a cluster).&lt;/li>
&lt;li>&lt;strong>Point repositories at Trixie.&lt;/strong> Switch &lt;code>bookworm&lt;/code> → &lt;code>trixie&lt;/code> across your APT sources and the Proxmox repo (the deb822 &lt;code>.sources&lt;/code> format is recommended on 9). Update Ceph repos to Squid/trixie if applicable.&lt;/li>
&lt;li>&lt;strong>Upgrade:&lt;/strong>
&lt;pre tabindex="0">&lt;code>apt update
apt dist-upgrade
&lt;/code>&lt;/pre>Answer the config-file prompts deliberately — for &lt;code>/etc/lvm/lvm.conf&lt;/code> the maintainer version is recommended; for &lt;code>/etc/default/grub&lt;/code>, diff it if you&amp;rsquo;ve customized it.&lt;/li>
&lt;li>&lt;strong>Reboot&lt;/strong> into the new kernel — required (the current 9.2 ships kernel 7.0). Reboot even if you were already running a 6.x kernel on 8; the 9 kernel is rebuilt against the new compiler and ABI. Then confirm:
&lt;pre tabindex="0">&lt;code>pveversion # should report 9.x
&lt;/code>&lt;/pre>Hard-refresh the web UI (Ctrl+Shift+R) so you&amp;rsquo;re not staring at a cached 8.x interface.&lt;/li>
&lt;/ol>
&lt;h2 id="if-you-run-a-cluster">If you run a cluster&lt;/h2>
&lt;ul>
&lt;li>All nodes on &lt;strong>8.4.1+&lt;/strong> before you start.&lt;/li>
&lt;li>&lt;strong>One node at a time&lt;/strong>, maintaining &lt;strong>quorum&lt;/strong> throughout. Upgrade, reboot, confirm it rejoins healthy, then move on.&lt;/li>
&lt;li>&lt;strong>Ceph → 19.2 Squid first&lt;/strong> for hyperconverged setups.&lt;/li>
&lt;li>&lt;strong>HA groups are deprecated&lt;/strong> in favor of HA rules; the migration happens automatically once every node is on 9.0. If HA acts up, check &lt;code>journalctl -eu pve-ha-crm&lt;/code>.&lt;/li>
&lt;/ul>
&lt;p>If you lean on community automation for cluster nodes, give the &lt;a href="https://techfuelhq.com/homelab/proxmox-helper-scripts-safe-2026/">helper-scripts safety guide&lt;/a> a read first — running anything as root mid-migration deserves the same caution.&lt;/p>
&lt;h2 id="honest-verdict-upgrade-now-or-wait">Honest verdict: upgrade now, or wait?&lt;/h2>
&lt;p>If your Proxmox 8 setup is doing its job and you don&amp;rsquo;t need anything specific in 9, &lt;strong>waiting for a point release you trust is perfectly reasonable&lt;/strong> — let the edge cases settle. The one thing that&amp;rsquo;s new in 2026: PVE 8 reaches end of standard support in &lt;strong>August 2026&lt;/strong>, so &amp;ldquo;wait&amp;rdquo; now means &amp;ldquo;wait a few weeks, not indefinitely.&amp;rdquo; Being a release behind on a homelab is fine; sitting on an unsupported, unpatched hypervisor is a different call. There&amp;rsquo;s plenty of runway on the mature 9.2 line to land on before the cutoff.&lt;/p>
&lt;p>When you do upgrade, the deciding factor isn&amp;rsquo;t timing, it&amp;rsquo;s &lt;strong>preparation&lt;/strong>: a tested backup, a clean &lt;code>pve8to9 --full&lt;/code>, pinned NIC names, real console access, and a read of the official release notes for &lt;em>your&lt;/em> hardware. The upgrades that go sideways are almost always the ones that skipped the checklist — old GPUs, PCI passthrough, and shared-LVM storage are the usual suspects. Do the pre-flight, keep a &lt;a href="https://techfuelhq.com/tutorials/proxmox-backup-server-3-2-1-2026/">solid backup&lt;/a> you can fall back to, and the jump to 9 is routine.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>Proxmox VE official upgrade guide — Upgrade from 8 to 9: &lt;a href="https://pve.proxmox.com/wiki/Upgrade_from_8_to_9" rel="noopener">https://pve.proxmox.com/wiki/Upgrade_from_8_to_9&lt;/a>&lt;/li>
&lt;li>Proxmox VE roadmap / 9.x release notes: &lt;a href="https://pve.proxmox.com/wiki/Roadmap" rel="noopener">https://pve.proxmox.com/wiki/Roadmap&lt;/a>&lt;/li>
&lt;li>Proxmox VE support lifecycle and end-of-life dates (FAQ): &lt;a href="https://pve.proxmox.com/wiki/FAQ" rel="noopener">https://pve.proxmox.com/wiki/FAQ&lt;/a>&lt;/li>
&lt;li>Proxmox VE 9.2 release announcement (Debian 13.5, kernel 7.0, dynamic load balancer, WireGuard SDN): &lt;a href="https://proxmox.com/en/about/company-details/press-releases/proxmox-virtual-environment-9-2" rel="noopener">https://proxmox.com/en/about/company-details/press-releases/proxmox-virtual-environment-9-2&lt;/a>&lt;/li>
&lt;li>Proxmox forum — PVE 8 to 9 in-place upgrade reports: &lt;a href="https://forum.proxmox.com/threads/pve-8-to-9-in-place-upgrade.170013/" rel="noopener">https://forum.proxmox.com/threads/pve-8-to-9-in-place-upgrade.170013/&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>SSD Endurance Calculator: How Long Will Your SSD Last?</title><link>https://techfuelhq.com/tools/ssd-endurance-calculator/</link><pubDate>Wed, 17 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tools/ssd-endurance-calculator/</guid><description>&lt;h2 id="how-to-use-this-calculator">How to use this calculator&lt;/h2>
&lt;p>Enter your drive&amp;rsquo;s &lt;strong>capacity&lt;/strong> and its &lt;strong>endurance rating&lt;/strong> — either as &lt;strong>TBW&lt;/strong> (terabytes written, common on consumer SSDs) or as &lt;strong>DWPD&lt;/strong> (drive writes per day, common on enterprise drives) plus the warranty period. Then set how much you write per day (pick a workload preset or enter your own) and, optionally, a &lt;strong>write amplification factor&lt;/strong>. The calculator returns the &lt;strong>estimated lifespan in years&lt;/strong>, your effective write rate in DWPD, and how much endurance you burn per year.&lt;/p>
&lt;p>The defaults model a 1 TB TLC SSD (600 TBW) on a moderate homelab load. For an accurate result, use your drive&amp;rsquo;s real rated TBW or DWPD from its spec sheet.&lt;/p>
&lt;h2 id="tbw-vs-dwpd--same-rating-two-units">TBW vs. DWPD — same rating, two units&lt;/h2>
&lt;p>Manufacturers express SSD endurance two ways. &lt;strong>TBW&lt;/strong> is the total terabytes you can write over the warranty; &lt;strong>DWPD&lt;/strong> is how many full-capacity overwrites per day the drive tolerates for the warranty period. They&amp;rsquo;re interchangeable:&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>TBW = DWPD × capacity (TB) × 365 × warranty years&lt;/strong>&lt;/p>&lt;/blockquote>
&lt;p>So a 1 TB drive at 0.3 DWPD over a 5-year warranty is rated for 0.3 × 1 × 365 × 5 ≈ &lt;strong>548 TBW&lt;/strong>. Consumer drives usually quote TBW; datacenter drives quote DWPD because they&amp;rsquo;re built for constant rewriting. This tool accepts either and shows both.&lt;/p>
&lt;h2 id="write-amplification--the-homelab-multiplier">Write amplification — the homelab multiplier&lt;/h2>
&lt;p>Your endurance is consumed by what the &lt;strong>NAND flash&lt;/strong> actually writes, not what your OS reports. Because flash erases in large blocks, a small logical write can force a larger physical one — that ratio is the &lt;strong>write amplification factor (WAF)&lt;/strong>. Plain desktop use sits near 1; &lt;strong>copy-on-write filesystems (ZFS, Btrfs), databases, and chatty logging&lt;/strong> push it to 2–10x. A WAF of 3 burns your TBW three times faster, so set it if you run &lt;a href="https://techfuelhq.com/homelab/lxc-vs-vm-proxmox-2026/">ZFS or VM workloads on Proxmox&lt;/a> — it&amp;rsquo;s the difference between &amp;ldquo;lasts decades&amp;rdquo; and &amp;ldquo;lasts a few years.&amp;rdquo;&lt;/p>
&lt;h2 id="what-this-pairs-with">What this pairs with&lt;/h2>
&lt;p>If your big write load is video, the &lt;a href="https://techfuelhq.com/tools/frigate-nvr-storage-calculator/">Frigate NVR storage calculator&lt;/a> estimates the GB/day a camera setup writes — plug that number in here to size an endurance-appropriate drive. And if you&amp;rsquo;re protecting that data, the &lt;a href="https://techfuelhq.com/tutorials/proxmox-backup-server-3-2-1-2026/">Proxmox Backup Server 3-2-1 guide&lt;/a> covers doing it right.&lt;/p></description></item><item><title>Subnet &amp; CIDR Calculator: IP Ranges, Masks, Hosts</title><link>https://techfuelhq.com/tools/subnet-cidr-calculator/</link><pubDate>Wed, 17 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tools/subnet-cidr-calculator/</guid><description>&lt;h2 id="how-to-use-this-calculator">How to use this calculator&lt;/h2>
&lt;p>Type an IPv4 address and choose a CIDR prefix (the &lt;code>/24&lt;/code> part). The calculator instantly shows the &lt;strong>network address&lt;/strong>, &lt;strong>broadcast address&lt;/strong>, the &lt;strong>usable host range&lt;/strong>, total and usable &lt;strong>host counts&lt;/strong>, the &lt;strong>subnet mask&lt;/strong>, and the &lt;strong>wildcard mask&lt;/strong> — and tells you whether the address is private, public, or special-use. To plan VLANs or segments, set a longer &lt;strong>split prefix&lt;/strong> and it lists every child subnet.&lt;/p>
&lt;p>Everything runs in your browser; nothing is sent anywhere. The result is encoded in the URL, so you can copy a link to a specific calculation.&lt;/p>
&lt;h2 id="what-cidr-notation-actually-means">What CIDR notation actually means&lt;/h2>
&lt;p>CIDR (Classless Inter-Domain Routing) describes a network by how many leading bits are fixed. &lt;code>/24&lt;/code> means the first 24 of 32 bits are the network, leaving 8 for hosts — 256 addresses, 254 usable. Each extra bit halves the block: &lt;code>/25&lt;/code> = 128, &lt;code>/26&lt;/code> = 64, &lt;code>/27&lt;/code> = 32. It replaced the rigid Class A/B/C system, so you size a network to what you need instead of jumping in huge steps.&lt;/p>
&lt;p>The two addresses you never assign to a device are the &lt;strong>network address&lt;/strong> (first, all host bits 0) and the &lt;strong>broadcast address&lt;/strong> (last, all host bits 1) — which is why usable hosts is total minus 2 (except &lt;code>/31&lt;/code> point-to-point links and &lt;code>/32&lt;/code> single hosts).&lt;/p>
&lt;h2 id="private-vs-public-ranges">Private vs. public ranges&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Range&lt;/th>
&lt;th scope="col">CIDR&lt;/th>
&lt;th scope="col">Use&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>10.0.0.0 – 10.255.255.255&lt;/td>
&lt;td>&lt;code>10.0.0.0/8&lt;/code>&lt;/td>
&lt;td>Private (RFC 1918)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>172.16.0.0 – 172.31.255.255&lt;/td>
&lt;td>&lt;code>172.16.0.0/12&lt;/code>&lt;/td>
&lt;td>Private (RFC 1918)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>192.168.0.0 – 192.168.255.255&lt;/td>
&lt;td>&lt;code>192.168.0.0/16&lt;/code>&lt;/td>
&lt;td>Private (RFC 1918)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>100.64.0.0 – 100.127.255.255&lt;/td>
&lt;td>&lt;code>100.64.0.0/10&lt;/code>&lt;/td>
&lt;td>Carrier-grade NAT&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>169.254.0.0 – 169.254.255.255&lt;/td>
&lt;td>&lt;code>169.254.0.0/16&lt;/code>&lt;/td>
&lt;td>Link-local (APIPA)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>127.0.0.0 – 127.255.255.255&lt;/td>
&lt;td>&lt;code>127.0.0.0/8&lt;/code>&lt;/td>
&lt;td>Loopback&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Home and homelab networks live in the RFC 1918 ranges — most consumer routers default to a &lt;code>192.168.x.0/24&lt;/code>. If you&amp;rsquo;re segmenting a homelab into VLANs, the split feature above makes carving a &lt;code>/24&lt;/code> into per-VLAN &lt;code>/26&lt;/code>s or &lt;code>/27&lt;/code>s straightforward.&lt;/p>
&lt;h2 id="what-this-pairs-with">What this pairs with&lt;/h2>
&lt;p>Planning the physical side of the network too? The &lt;a href="https://techfuelhq.com/tools/poe-budget-calculator/">PoE power budget calculator&lt;/a> sizes a switch for your APs and cameras, the &lt;a href="https://techfuelhq.com/networking/wifi-7-homelab-home-network-2026/">Wi-Fi 7 homelab guide&lt;/a> covers the wireless layer, and the &lt;a href="https://techfuelhq.com/articles/best-homelab-networking-gear-under-200/">budget networking gear guide&lt;/a> rounds up switches and routers worth buying.&lt;/p></description></item><item><title>Which Local LLM Fits Your GPU in 2026? VRAM Tiers</title><link>https://techfuelhq.com/articles/local-llm-by-gpu-vram-2026/</link><pubDate>Wed, 17 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/local-llm-by-gpu-vram-2026/</guid><description>&lt;img src="https://techfuelhq.com/images/articles/local-llm-by-gpu-vram-2026.svg" width="1200" height="800" loading="lazy" decoding="async" alt="VRAM tier ladder for local LLMs in 2026 at Q4_K_M: 8GB runs 7-8B dense models (Qwen3-8B is a 5.03GB file) plus small-active MoE via RAM offload, 12GB runs 8B plus 14B, 16GB runs 14B plus gpt-oss-20B, 24GB is the sweet spot up to a 27-32B dense model (Gemma-3-27B Q4_K_M is 16.55GB), and 48GB-plus runs a dense 70B needing about 45-50GB." style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p style="font-size:0.85rem;color:#9a9ab5;margin:0 0 1rem 0;">Updated July 3, 2026 &amp;middot; file sizes verified against official Hugging Face model cards and GGUF repo listings.&lt;/p>
&lt;p>&amp;ldquo;What&amp;rsquo;s the best model I can actually run on my card?&amp;rdquo; is the most-asked question in local AI, and it resets every time a new GPU or model drops. The answer is almost always decided by one number: &lt;strong>VRAM&lt;/strong>. Get the tier right and a local LLM is fast and private; get it wrong and you&amp;rsquo;re either offloading to system RAM at a crawl or running a model too small to be useful. Here&amp;rsquo;s the 2026 map, tier by tier, with real GGUF file sizes and the memory math behind them.&lt;/p>
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR &amp;middot; What fits your card at Q4_K_M&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>8GB (3060 8GB / 4060 / 5060):&lt;/strong> a 7-8B dense model like Qwen3-8B (5.03GB file). Add 32GB system RAM and a small-active MoE model can offload to RAM and run above its weight.&lt;/li>
&lt;li>&lt;strong>12GB (3060 12GB / 5070):&lt;/strong> an 8B with long context, or a 14B at Q4.&lt;/li>
&lt;li>&lt;strong>16GB (4060 Ti 16GB / 4080 / 5080):&lt;/strong> a 14B comfortably, plus gpt-oss-20B (built to run in 16GB). A dense 27B spills to RAM here.&lt;/li>
&lt;li>&lt;strong>24GB (3090 / 4090 / 7900 XTX):&lt;/strong> the sweet spot. A 27B dense (Gemma-3-27B Q4_K_M is 16.55GB) with context, or a 32B.&lt;/li>
&lt;li>&lt;strong>48GB+ (2x 24GB / workstation / big unified memory):&lt;/strong> the only home path to a dense 70B (needs ~45-50GB).&lt;/li>
&lt;/ul>
&lt;p style="margin:0.75rem 0 0 0;font-size:0.9rem;color:#a0a0b8;">Rule of thumb: total memory = weights (set by quant) + KV cache (grows with context) + compute buffers (~fixed). Default to Q4_K_M and match the model to the tier.&lt;/p>
&lt;/div>
&lt;h2 id="the-rule-of-thumb-weights--kv-cache--overhead">The rule of thumb: weights + KV cache + overhead&lt;/h2>
&lt;p>Total VRAM for inference breaks into three parts, and it helps to think about all three rather than a single number. The primary &lt;a href="https://github.com/ggml-org/llama.cpp/discussions/15396" rel="noopener">llama.cpp discussion on memory estimation&lt;/a> lays it out cleanly: &lt;strong>model data&lt;/strong> (the weights, fixed by quantization), a &lt;strong>KV cache&lt;/strong> that grows with how many tokens of context you hold, and &lt;strong>compute buffers&lt;/strong> that are roughly fixed. In its worked example, gpt-oss-20B needs &lt;strong>12.0GB of weights + 2.7GB of compute buffers + roughly 0.2GB of KV cache per 8,192 tokens of context — about 14.9GB at 8k, ~15.5GB at 32k, and ~17.9GB at the full 131,072 tokens&lt;/strong> — the same model, heavier purely from a longer context window. That KV-cache creep is the single most common reason a model that &amp;ldquo;fits&amp;rdquo; on paper still runs out of memory in practice.&lt;/p>
&lt;p>For the weights themselves, the shorthand is:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>~2 GB per billion parameters at FP16&lt;/strong> (full precision).&lt;/li>
&lt;li>&lt;strong>~0.5 GB per billion at 4-bit&lt;/strong>, then add headroom for the KV cache and compute buffers on top.&lt;/li>
&lt;/ul>
&lt;p>One nuance worth internalizing: &lt;strong>Q4_K_M isn&amp;rsquo;t true 4-bit.&lt;/strong> It&amp;rsquo;s mixed precision averaging about &lt;strong>4.83 bits per weight&lt;/strong>, so real GGUF files run a little larger than the clean 0.5 GB/B estimate — but it&amp;rsquo;s the &lt;strong>everyday default&lt;/strong>, roughly half the memory of FP16 for a small quality drop. That&amp;rsquo;s why the tables below quote actual file sizes rather than the estimate. For a given card, fitting a &lt;em>bigger&lt;/em> model at Q4_K_M usually beats a &lt;em>smaller&lt;/em> one at Q8.&lt;/p>
&lt;p>There&amp;rsquo;s one more concept that reshaped the 2026 tiers: &lt;strong>Mixture-of-Experts (MoE)&lt;/strong>. An MoE model activates only a slice of its parameters per token, so it &lt;em>computes&lt;/em> like a small model but must still &lt;em>fit&lt;/em> like a large one. OpenAI&amp;rsquo;s &lt;a href="https://huggingface.co/openai/gpt-oss-20b" rel="noopener">gpt-oss-20b card&lt;/a> states 21B total parameters with only 3.6B active, natively MXFP4-quantized, and &amp;ldquo;designed to run within 16GB of memory.&amp;rdquo; Meta&amp;rsquo;s &lt;a href="https://huggingface.co/meta-llama/Llama-4-Scout-17B-16E-Instruct" rel="noopener">Llama 4 Scout card&lt;/a> is starker: 17B active but 109B total across 16 experts — so its VRAM footprint is 70B-class despite the tiny active count. The takeaway for fit: &lt;strong>MoE needs total params in memory, not active.&lt;/strong> The escape hatch is that llama.cpp can offload the inactive expert layers to system RAM (&lt;code>--n-cpu-moe&lt;/code>), keeping the small active set on a modest GPU.&lt;/p>
&lt;p>For an exact figure including your context length, run the numbers through the &lt;a href="https://techfuelhq.com/tools/llm-vram-calculator/">LLM VRAM Calculator&lt;/a>; for how &lt;em>fast&lt;/em> it&amp;rsquo;ll generate, the &lt;a href="https://techfuelhq.com/tools/llm-speed-calculator/">LLM Speed Calculator&lt;/a>.&lt;/p>
&lt;h2 id="the-tiers-all-at-q4_k_m-unless-noted">The tiers (all at Q4_K_M unless noted)&lt;/h2>
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;padding:28px 16px 20px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;">
&lt;div style="text-align:center;margin-bottom:20px;">
&lt;div style="font-size:18px;font-weight:600;letter-spacing:-0.3px;">VRAM tier ladder for local LLMs, 2026&lt;/div>
&lt;div style="font-size:12px;color:#9a9ab5;margin-top:4px;">Real GGUF file sizes at Q4_K_M &amp;middot; add KV cache + overhead on top&lt;/div>
&lt;/div>
&lt;div style="overflow-x:auto;">
&lt;table style="width:100%;max-width:860px;margin:0 auto;border-collapse:collapse;font-size:13px;">
&lt;thead>
&lt;tr>
&lt;th style="text-align:left;padding:12px 10px;border-bottom:2px solid rgba(255,255,255,0.1);color:#7a7a96;font-weight:500;font-size:11px;min-width:90px;">VRAM&lt;/th>
&lt;th style="text-align:left;padding:12px 10px;border-bottom:2px solid rgba(255,255,255,0.1);color:#7a7a96;font-weight:500;font-size:11px;min-width:150px;">Example cards&lt;/th>
&lt;th style="text-align:left;padding:12px 10px;border-bottom:2px solid rgba(93,202,122,0.4);color:#5dca7a;font-weight:600;min-width:130px;">Comfortable pick&lt;/th>
&lt;th style="text-align:left;padding:12px 10px;border-bottom:2px solid rgba(255,255,255,0.1);color:#7a7a96;font-weight:500;font-size:11px;min-width:170px;">Q4_K_M file size (anchor)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">
&lt;td style="padding:10px;color:#e0e0f0;font-weight:600;">8 GB&lt;/td>
&lt;td style="padding:10px;color:#9090a8;">RTX 3060 8GB, 4060, 5060&lt;/td>
&lt;td style="padding:10px;color:#5dca7a;">Qwen3-8B (dense)&lt;/td>
&lt;td style="padding:10px;color:#c0c0d8;">Qwen3-8B = 5.03 GB&lt;/td>
&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">
&lt;td style="padding:10px;color:#e0e0f0;font-weight:600;">12 GB&lt;/td>
&lt;td style="padding:10px;color:#9090a8;">RTX 3060 12GB, 5070&lt;/td>
&lt;td style="padding:10px;color:#5dca7a;">8B long-context, or a 14B&lt;/td>
&lt;td style="padding:10px;color:#c0c0d8;">Qwen3-8B Q8_0 = 8.71 GB&lt;/td>
&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">
&lt;td style="padding:10px;color:#e0e0f0;font-weight:600;">16 GB&lt;/td>
&lt;td style="padding:10px;color:#9090a8;">4060 Ti 16GB, 4080, 5080&lt;/td>
&lt;td style="padding:10px;color:#5dca7a;">14B, or gpt-oss-20B (MoE)&lt;/td>
&lt;td style="padding:10px;color:#c0c0d8;">gpt-oss-20B ~14.9 GB @ 8k ctx&lt;/td>
&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">
&lt;td style="padding:10px;color:#e0e0f0;font-weight:600;">24 GB&lt;/td>
&lt;td style="padding:10px;color:#9090a8;">RTX 3090, 4090, 7900 XTX&lt;/td>
&lt;td style="padding:10px;color:#5dca7a;">27B dense, up to a 32B&lt;/td>
&lt;td style="padding:10px;color:#c0c0d8;">Gemma-3-27B = 16.55 GB&lt;/td>
&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">
&lt;td style="padding:10px;color:#e0e0f0;font-weight:600;">32 GB&lt;/td>
&lt;td style="padding:10px;color:#9090a8;">RTX 5090&lt;/td>
&lt;td style="padding:10px;color:#5dca7a;">27-32B at higher quant / long ctx&lt;/td>
&lt;td style="padding:10px;color:#c0c0d8;">27B at Q6/Q8 + context&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="padding:10px;color:#e0e0f0;font-weight:600;">48 GB+&lt;/td>
&lt;td style="padding:10px;color:#9090a8;">2x 24GB, workstation, unified&lt;/td>
&lt;td style="padding:10px;color:#5dca7a;">Dense 70B&lt;/td>
&lt;td style="padding:10px;color:#c0c0d8;">Llama-3.3-70B = 42.52 GB&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;div style="text-align:right;margin-top:10px;font-size:10px;color:#44445a;">techfuelhq.com &amp;middot; July 2026 &amp;middot; sizes from bartowski GGUF repo listings&lt;/div>
&lt;/div>
&lt;/div>
&lt;h3 id="8-gb--entry-rtx-3060-8gb-4060-5060">8 GB — entry (RTX 3060 8GB, 4060, 5060)&lt;/h3>
&lt;p>&lt;strong>A 7-8B dense model.&lt;/strong> &lt;a href="https://huggingface.co/Qwen/Qwen3-8B" rel="noopener">Qwen3-8B&lt;/a> is a dense 8.2B model per its official card, and the &lt;a href="https://huggingface.co/bartowski/Qwen_Qwen3-8B-GGUF" rel="noopener">bartowski Qwen3-8B GGUF listing&lt;/a> puts Q4_K_M at &lt;strong>5.03 GB&lt;/strong>; with the KV cache and overhead it lands ~6-7 GB, comfortable at moderate context. This is the fast-8B-chat-and-coding tier.&lt;/p>
&lt;p>The change since 2025 is the MoE-offload path. A small-active MoE model (like gpt-oss-20B, 3.6B active) keeps its active layers on the 8GB card and pushes the rest to system RAM via &lt;code>--n-cpu-moe&lt;/code>, so with &lt;strong>32GB of system RAM&lt;/strong> an 8GB card can run models it could never fit whole. It&amp;rsquo;s slower than pure-GPU, but usable — and it&amp;rsquo;s the community&amp;rsquo;s default trick for stretching an 8GB card in 2026.&lt;/p>
&lt;h3 id="12-gb--comfortable-small-rtx-3060-12gb-5070">12 GB — comfortable small (RTX 3060 12GB, 5070)&lt;/h3>
&lt;p>&lt;strong>8B with room for long context, or a 14B at Q4.&lt;/strong> The extra 4GB over the 8GB tier mostly buys KV-cache headroom: you can hold a much longer context on an 8B, or step up to a dense 14B like &lt;a href="https://huggingface.co/microsoft/Phi-4" rel="noopener">Phi-4&lt;/a> (14B, though note its 16K context is short next to the Qwen/Gemma peers). The 3060 12GB is a genuinely good LLM card for its price precisely because capacity, not raw speed, decides what fits here.&lt;/p>
&lt;h3 id="16-gb--the-mid-tier-rtx-4060-ti-16gb-4080-5080">16 GB — the mid tier (RTX 4060 Ti 16GB, 4080, 5080)&lt;/h3>
&lt;p>&lt;strong>A 14B comfortably, plus gpt-oss-20B.&lt;/strong> OpenAI&amp;rsquo;s &lt;a href="https://huggingface.co/openai/gpt-oss-20b" rel="noopener">gpt-oss-20b&lt;/a> is explicitly &amp;ldquo;designed to run within 16GB of memory&amp;rdquo; — it&amp;rsquo;s an MoE with only 3.6B active params, natively MXFP4-quantized, about 14.9GB total at 8k context (rising to ~15.5GB at 32k) per the llama.cpp worked example. Cap the context to stay inside 16GB. A &lt;strong>dense 27B does not fit&lt;/strong> here and spills to system RAM, which collapses throughput, so treat a 16GB card as a strong 14B / MoE-20B machine rather than a 27B one.&lt;/p>
&lt;h3 id="24-gb--the-sweet-spot-rtx-3090-4090-7900-xtx">24 GB — the sweet spot (RTX 3090, 4090, 7900 XTX)&lt;/h3>
&lt;p>&lt;strong>A 27B dense model, up to a 32B.&lt;/strong> &lt;a href="https://huggingface.co/google/gemma-3-27b-it" rel="noopener">Gemma-3-27B-it&lt;/a> is a dense 27B with a 128K context window per its card, and the &lt;a href="https://huggingface.co/bartowski/google_gemma-3-27b-it-GGUF" rel="noopener">bartowski Gemma-3-27B GGUF listing&lt;/a> puts Q4_K_M at &lt;strong>16.55 GB&lt;/strong>, leaving real headroom for KV cache. &lt;a href="https://huggingface.co/mistralai/Mistral-Small-3.2-24B-Instruct-2506" rel="noopener">Mistral-Small-3.2-24B&lt;/a> is another dense pick that fits here. This is the best single-card tier for serious local work. What it &lt;em>can&amp;rsquo;t&lt;/em> do comfortably is a dense 70B at Q4 — that needs ~45-50GB.&lt;/p>
&lt;h3 id="32-gb--headroom-rtx-5090">32 GB — headroom (RTX 5090)&lt;/h3>
&lt;p>&lt;strong>A 27-32B at higher quant (Q5/Q6) or with a long context&lt;/strong>, and gpt-oss-20B with room to spare. This is the tier where a dense 27B stops spilling under real workloads and you can run it productively without fighting for every megabyte. A dense 70B at Q4 (~45-50GB) still doesn&amp;rsquo;t fit a single 32GB card — you&amp;rsquo;d be offloading — but for a comfortable 27B or several smaller models at once, this is plenty.&lt;/p>
&lt;h3 id="48-gb--the-70b-club-2x-24gb-workstation-cards-big-unified-memory">48 GB+ — the 70B club (2x 24GB, workstation cards, big unified memory)&lt;/h3>
&lt;p>&lt;strong>A dense 70B at Q4_K_M&lt;/strong> needs roughly &lt;strong>45-50GB&lt;/strong>. The &lt;a href="https://huggingface.co/bartowski/Llama-3.3-70B-Instruct-GGUF" rel="noopener">bartowski Llama-3.3-70B GGUF listing&lt;/a> puts Q4_K_M weights at &lt;strong>42.52 GB&lt;/strong> (marked the recommended default), and KV cache plus overhead push the working total higher. So the paths are: two 24GB GPUs (48GB), a 48GB-or-larger workstation card, or a large unified-memory machine (Apple Silicon or similar) that treats system RAM as model memory and trades raw speed for capacity. The genuinely huge MoE models — &lt;a href="https://huggingface.co/deepseek-ai/DeepSeek-V3.1" rel="noopener">DeepSeek-V3.1&lt;/a> at 671B total (37B active) — are data-center territory, useful mainly as the ceiling reference: even at low quant, the &lt;em>total&lt;/em> must fit.&lt;/p>
&lt;h2 id="the-models-worth-running-in-2026">The models worth running in 2026&lt;/h2>
&lt;p>The first-party-confirmed open-weights lineup, by class:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>~4B:&lt;/strong> &lt;a href="https://huggingface.co/Qwen/Qwen3-4B" rel="noopener">Qwen3-4B&lt;/a> (dense, 4.0B) and Gemma 3 4B — both fit even 4-6GB cards; Qwen3-4B Q4_K_M is 2.50 GB per its &lt;a href="https://huggingface.co/bartowski/Qwen_Qwen3-4B-GGUF" rel="noopener">GGUF listing&lt;/a>.&lt;/li>
&lt;li>&lt;strong>7-9B:&lt;/strong> Qwen3-8B (dense, 8.2B) — the 8GB workhorse.&lt;/li>
&lt;li>&lt;strong>12-14B:&lt;/strong> &lt;a href="https://huggingface.co/microsoft/Phi-4" rel="noopener">Phi-4&lt;/a> (dense, 14B) and Gemma 3 12B.&lt;/li>
&lt;li>&lt;strong>24-32B:&lt;/strong> Mistral-Small-3.2-24B and Gemma-3-27B, both dense — the 24GB-tier models.&lt;/li>
&lt;li>&lt;strong>MoE:&lt;/strong> gpt-oss-20b (21B total / 3.6B active, runs in 16GB) and Llama 4 Scout (17B active / 109B total).&lt;/li>
&lt;/ul>
&lt;p>What changed since 2025 — the freshness moat: the &lt;a href="https://huggingface.co/google/gemma-3-27b-it" rel="noopener">Gemma 3 family&lt;/a> ships in 1B/4B/12B/27B with 128K context on the larger sizes, gpt-oss brought a genuinely 16GB-friendly MoE, and Meta&amp;rsquo;s Llama 4 moved to native MoE. Qwen&amp;rsquo;s newer generations are live too — the &lt;a href="https://huggingface.co/Qwen/Qwen3.5-27B" rel="noopener">Qwen3.5-27B&lt;/a> and &lt;a href="https://huggingface.co/Qwen/Qwen3.6-27B" rel="noopener">Qwen3.6-27B&lt;/a> cards are 27B-class &lt;em>multimodal&lt;/em> models (image-text-to-text) using a hybrid attention + sparse-MoE architecture, with a 262K native context window — a real KV-cache consideration on top of the weights, and a different fit profile than the plain dense text models above. Beyond that, community users on the low-VRAM tiers increasingly reach for small-active-param MoE models offloaded to RAM as the way to run bigger-feeling models on modest cards; treat the newest community model names as usage signal and verify the exact card before you commit VRAM to it.&lt;/p>
&lt;p>A useful pattern holds across all of them: &lt;strong>MoE models punch above their size for speed&lt;/strong> because only a few billion parameters activate per token — but they still occupy their &lt;em>full&lt;/em> size in memory, so plan the fit around total params, not active.&lt;/p>
&lt;h2 id="fit-is-half-the-question--speed-is-the-other">Fit is half the question — speed is the other&lt;/h2>
&lt;p>A model fitting in VRAM doesn&amp;rsquo;t mean it runs &lt;em>fast&lt;/em>. Generation speed is bound by memory bandwidth (each token reads the active weights once), so a big model on a modest card can fit yet feel sluggish, and the same reason is why a dedicated GPU beats CPU or unified memory on throughput even when all three technically &amp;ldquo;fit&amp;rdquo; the model. Check both before you commit to a model or a card: the &lt;a href="https://techfuelhq.com/tools/llm-vram-calculator/">VRAM calculator&lt;/a> for fit and the &lt;a href="https://techfuelhq.com/tools/llm-speed-calculator/">speed calculator&lt;/a> for tokens/sec. And if you&amp;rsquo;re building around a specific card, the &lt;a href="https://techfuelhq.com/tutorials/self-host-local-llm-rtx-5060-2026/">single-RTX-5060 local-LLM walkthrough&lt;/a> shows the full setup end to end, with real tokens/sec on one card, and the &lt;a href="https://techfuelhq.com/articles/1000-local-ai-workstation-rtx-5080-2026/">$1,000 local-AI workstation build&lt;/a> pairs a parts list to the 16GB tier with the cloud-vs-local cost math. For the bigger picture beyond chat models — image generation, speech, and coding assistants — see the &lt;a href="https://techfuelhq.com/articles/self-hosted-ai-stack-2026/">self-hosted AI stack overview&lt;/a>.&lt;/p>
&lt;h2 id="bottom-line">Bottom line&lt;/h2>
&lt;p>For most homelab GPUs, the practical pick is simple: an &lt;strong>8B at Q4_K_M&lt;/strong> on 8-12GB cards (with a small-active MoE offloaded to system RAM when you want more), a &lt;strong>14B-20B&lt;/strong> on 16GB, and a &lt;strong>27-32B at Q4_K_M&lt;/strong> on a 24GB card — the single-card sweet spot. Reach for 48GB+ only when a dense 70B is genuinely worth the cost and complexity. Match the model to the VRAM tier, remember that weights + KV cache + overhead all count, default to Q4_K_M, and you&amp;rsquo;ll get fast, private inference without fighting your hardware.&lt;/p>
&lt;footer style="margin-top:40px;padding-top:24px;border-top:1px solid rgba(255,255,255,0.06);">
&lt;p>&lt;em>Model classes, parameter counts, and context windows verified against official Hugging Face model cards (Qwen3-4B/8B, Gemma-3-27B, Phi-4, Mistral-Small-3.2-24B, gpt-oss-20b, Llama-4-Scout, DeepSeek-V3.1, Qwen3.5/3.6-27B). GGUF file sizes are actual repo listings from the bartowski quant repos. The weights + KV-cache + compute-buffer breakdown and the gpt-oss-20B context example are from the primary llama.cpp memory-estimation discussion. No first-party benchmarks were run; for tokens/sec on a real card see the linked RTX 5060 tutorial. Current as of July 2026.&lt;/em>&lt;/p>
&lt;/footer>
&lt;h2 id="sources-and-methodology">Sources and methodology&lt;/h2>
&lt;p>Every model name, size, and file figure above is grounded in the page that carries it — an official model card or a GGUF quant repo file listing — rather than a release announcement or a rehost.&lt;/p>
&lt;p>&lt;strong>Primary sources cited:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://huggingface.co/Qwen/Qwen3-4B" rel="noopener">Qwen3-4B card&lt;/a> and &lt;a href="https://huggingface.co/Qwen/Qwen3-8B" rel="noopener">Qwen3-8B card&lt;/a> — dense parameter counts and context windows&lt;/li>
&lt;li>&lt;a href="https://huggingface.co/google/gemma-3-27b-it" rel="noopener">Gemma-3-27B-it card&lt;/a> — Gemma 3 family sizes (1B/4B/12B/27B) and 128K context&lt;/li>
&lt;li>&lt;a href="https://huggingface.co/microsoft/Phi-4" rel="noopener">Phi-4 card&lt;/a> — dense 14B, 16K context&lt;/li>
&lt;li>&lt;a href="https://huggingface.co/mistralai/Mistral-Small-3.2-24B-Instruct-2506" rel="noopener">Mistral-Small-3.2-24B card&lt;/a> — dense 24B&lt;/li>
&lt;li>&lt;a href="https://huggingface.co/openai/gpt-oss-20b" rel="noopener">gpt-oss-20b card&lt;/a> — 21B total / 3.6B active MoE, MXFP4, &amp;ldquo;runs within 16GB&amp;rdquo;&lt;/li>
&lt;li>&lt;a href="https://huggingface.co/meta-llama/Llama-4-Scout-17B-16E-Instruct" rel="noopener">Llama 4 Scout card&lt;/a> — 17B active / 109B total MoE&lt;/li>
&lt;li>&lt;a href="https://huggingface.co/deepseek-ai/DeepSeek-V3.1" rel="noopener">DeepSeek-V3.1 card&lt;/a> — 671B total / 37B active (ceiling reference)&lt;/li>
&lt;li>&lt;a href="https://huggingface.co/Qwen/Qwen3.5-27B" rel="noopener">Qwen3.5-27B&lt;/a> and &lt;a href="https://huggingface.co/Qwen/Qwen3.6-27B" rel="noopener">Qwen3.6-27B&lt;/a> cards — 2026 27B-class multimodal (image-text-to-text), hybrid attention + sparse MoE, 262K native context&lt;/li>
&lt;li>GGUF file-size anchors from the bartowski quant repos: &lt;a href="https://huggingface.co/bartowski/Qwen_Qwen3-4B-GGUF" rel="noopener">Qwen3-4B&lt;/a> (Q4_K_M 2.50GB), &lt;a href="https://huggingface.co/bartowski/Qwen_Qwen3-8B-GGUF" rel="noopener">Qwen3-8B&lt;/a> (Q4_K_M 5.03GB, Q8_0 8.71GB), &lt;a href="https://huggingface.co/bartowski/google_gemma-3-27b-it-GGUF" rel="noopener">Gemma-3-27B&lt;/a> (Q4_K_M 16.55GB), &lt;a href="https://huggingface.co/bartowski/Qwen_Qwen3-32B-GGUF" rel="noopener">Qwen3-32B&lt;/a> (Q4_K_M 19.76GB), &lt;a href="https://huggingface.co/bartowski/Llama-3.3-70B-Instruct-GGUF" rel="noopener">Llama-3.3-70B&lt;/a> (Q4_K_M 42.52GB)&lt;/li>
&lt;li>&lt;a href="https://github.com/ggml-org/llama.cpp/discussions/15396" rel="noopener">llama.cpp memory-estimation discussion&lt;/a> — weights + KV cache + compute buffers breakdown; gpt-oss-20B 14.9GB @ 8k (12.0 + 2.7 + ~0.2 KV per 8k tokens) rising to 17.9GB @ 131k context; &lt;code>--n-cpu-moe&lt;/code> offload&lt;/li>
&lt;/ul>
&lt;p>Email corrections to &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a>.
&lt;/content>
&lt;/invoke>&lt;/p></description></item><item><title>Home Assistant Automations: A Practical Guide (2026)</title><link>https://techfuelhq.com/tutorials/home-assistant-automations-guide-2026/</link><pubDate>Tue, 16 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tutorials/home-assistant-automations-guide-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-16 · ~15 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/tutorials/home-assistant-automations-guide-2026.svg" alt="Home Assistant automation flow diagram: a Trigger stage (sun, time, state, zone platforms) leads into a Condition gate (state, sun, numeric_state, template), then an Action stage calling services like light.turn_on, climate.set_temperature, scene.turn_on, notify and tts.speak; below are reusable building blocks (choose branches and scripts) and a debug strip covering Traces, the Template tool, and Logbook." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>Home Assistant automations follow a consistent structure: something happens (trigger), check if conditions are met (conditions), then do things (actions). Once you understand that structure, you can write almost any automation. This guide is examples-first — real working YAML for the automations that actually matter.&lt;/p>
&lt;p>If you haven&amp;rsquo;t set up Home Assistant yet, the &lt;a href="https://techfuelhq.com/tutorials/home-assistant-proxmox-2026/">Home Assistant on Proxmox guide&lt;/a> covers the install. For Zigbee/Z-Wave devices, the &lt;a href="https://techfuelhq.com/tutorials/home-assistant-zigbee-zwave-2026/">integration guide&lt;/a> covers pairing.&lt;/p>
&lt;h2 id="the-automation-structure">The automation structure&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">automation&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">alias&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;My Automation Name&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">trigger&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">platform&lt;/span>: &lt;span style="color:#ae81ff">&amp;lt;trigger_type&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># trigger-specific fields&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">condition&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">condition&lt;/span>: &lt;span style="color:#ae81ff">&amp;lt;condition_type&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># condition-specific fields&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">action&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">service&lt;/span>: &lt;span style="color:#ae81ff">&amp;lt;domain.service&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">target&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">entity_id&lt;/span>: &lt;span style="color:#ae81ff">&amp;lt;entity_id&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">data&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># service-specific data&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Trigger:&lt;/strong> what initiates the automation (state change, time, zone entry, webhook, etc.)
&lt;strong>Condition:&lt;/strong> optional guards — the automation only proceeds if all conditions pass
&lt;strong>Action:&lt;/strong> what happens when the trigger fires and conditions pass&lt;/p>
&lt;h2 id="lighting-automations">Lighting automations&lt;/h2>
&lt;h3 id="turn-on-lights-at-sunset">Turn on lights at sunset&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">automation&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">alias&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Living Room — Lights On at Sunset&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">trigger&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">platform&lt;/span>: &lt;span style="color:#ae81ff">sun&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">event&lt;/span>: &lt;span style="color:#ae81ff">sunset&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">offset&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;-00:30:00&amp;#34;&lt;/span> &lt;span style="color:#75715e"># 30 minutes before actual sunset&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">action&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">service&lt;/span>: &lt;span style="color:#ae81ff">light.turn_on&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">target&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">entity_id&lt;/span>: &lt;span style="color:#ae81ff">light.living_room&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">data&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">brightness_pct&lt;/span>: &lt;span style="color:#ae81ff">60&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">color_temp&lt;/span>: &lt;span style="color:#ae81ff">400&lt;/span> &lt;span style="color:#75715e"># warm color temperature (mireds)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The &lt;code>offset&lt;/code> field accepts positive or negative durations. &lt;code>-00:30:00&lt;/code> means 30 minutes before the event.&lt;/p>
&lt;h3 id="adaptive-lighting-dim-at-night">Adaptive lighting: dim at night&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">automation&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">alias&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Bedroom — Dim Lights After 10 PM&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">trigger&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">platform&lt;/span>: &lt;span style="color:#ae81ff">time&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">at&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;22:00:00&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">condition&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">condition&lt;/span>: &lt;span style="color:#ae81ff">state&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">entity_id&lt;/span>: &lt;span style="color:#ae81ff">light.bedroom&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">state&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;on&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">action&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">service&lt;/span>: &lt;span style="color:#ae81ff">light.turn_on&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">target&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">entity_id&lt;/span>: &lt;span style="color:#ae81ff">light.bedroom&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">data&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">brightness_pct&lt;/span>: &lt;span style="color:#ae81ff">20&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">color_temp&lt;/span>: &lt;span style="color:#ae81ff">500&lt;/span> &lt;span style="color:#75715e"># very warm&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">transition&lt;/span>: &lt;span style="color:#ae81ff">10&lt;/span> &lt;span style="color:#75715e"># 10-second transition&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The &lt;code>condition&lt;/code> here prevents the automation from triggering the bedroom lights if they&amp;rsquo;re already off — you don&amp;rsquo;t want the lights turning on at 10 PM just to dim them.&lt;/p>
&lt;h3 id="motion-triggered-lights-with-timeout">Motion-triggered lights with timeout&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">automation&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">alias&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Hallway — Motion Light&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">trigger&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">platform&lt;/span>: &lt;span style="color:#ae81ff">state&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">entity_id&lt;/span>: &lt;span style="color:#ae81ff">binary_sensor.hallway_motion&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">to&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;on&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">action&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">service&lt;/span>: &lt;span style="color:#ae81ff">light.turn_on&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">target&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">entity_id&lt;/span>: &lt;span style="color:#ae81ff">light.hallway&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">delay&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;00:05:00&amp;#34;&lt;/span> &lt;span style="color:#75715e"># wait 5 minutes&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">condition&lt;/span>: &lt;span style="color:#ae81ff">state &lt;/span> &lt;span style="color:#75715e"># only turn off if still no motion&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">entity_id&lt;/span>: &lt;span style="color:#ae81ff">binary_sensor.hallway_motion&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">state&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;off&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">service&lt;/span>: &lt;span style="color:#ae81ff">light.turn_off&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">target&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">entity_id&lt;/span>: &lt;span style="color:#ae81ff">light.hallway&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>For more reliable motion timeout behavior, use the &lt;code>wait_for_trigger&lt;/code> action instead of &lt;code>delay&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">action&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">service&lt;/span>: &lt;span style="color:#ae81ff">light.turn_on&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">target&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">entity_id&lt;/span>: &lt;span style="color:#ae81ff">light.hallway&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">wait_for_trigger&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">platform&lt;/span>: &lt;span style="color:#ae81ff">state&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">entity_id&lt;/span>: &lt;span style="color:#ae81ff">binary_sensor.hallway_motion&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">to&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;off&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">for&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;00:05:00&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">service&lt;/span>: &lt;span style="color:#ae81ff">light.turn_off&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">target&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">entity_id&lt;/span>: &lt;span style="color:#ae81ff">light.hallway&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;code>wait_for_trigger&lt;/code> pauses the action sequence until the trigger fires, then continues. If the motion sensor never clears, the action sequence waits indefinitely (use &lt;code>timeout:&lt;/code> to cap it).&lt;/p>
&lt;h2 id="presence-based-automations">Presence-based automations&lt;/h2>
&lt;h3 id="welcome-home-scene">Welcome home scene&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">automation&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">alias&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Welcome Home — Set Living Room Scene&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">trigger&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">platform&lt;/span>: &lt;span style="color:#ae81ff">zone&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">entity_id&lt;/span>: &lt;span style="color:#ae81ff">person.lk&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">zone&lt;/span>: &lt;span style="color:#ae81ff">zone.home&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">event&lt;/span>: &lt;span style="color:#ae81ff">enter&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">condition&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">condition&lt;/span>: &lt;span style="color:#ae81ff">sun&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">after&lt;/span>: &lt;span style="color:#ae81ff">sunset&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">before&lt;/span>: &lt;span style="color:#ae81ff">sunrise&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">action&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">service&lt;/span>: &lt;span style="color:#ae81ff">scene.turn_on&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">target&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">entity_id&lt;/span>: &lt;span style="color:#ae81ff">scene.living_room_evening&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">service&lt;/span>: &lt;span style="color:#ae81ff">climate.set_temperature&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">target&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">entity_id&lt;/span>: &lt;span style="color:#ae81ff">climate.main_thermostat&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">data&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">temperature&lt;/span>: &lt;span style="color:#ae81ff">70&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The &lt;code>sun&lt;/code> condition ensures the welcome home lighting only triggers after dark. Arriving home at noon doesn&amp;rsquo;t need the lights on.&lt;/p>
&lt;h3 id="everyone-left--eco-mode">Everyone left — eco mode&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">automation&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">alias&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;All Away — Energy Saving Mode&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">trigger&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">platform&lt;/span>: &lt;span style="color:#ae81ff">state&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">entity_id&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">person.lk&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">person.partner &lt;/span> &lt;span style="color:#75715e"># list multiple people&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">to&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;not_home&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">condition&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">condition&lt;/span>: &lt;span style="color:#ae81ff">state&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">entity_id&lt;/span>: &lt;span style="color:#ae81ff">person.lk&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">state&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;not_home&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">condition&lt;/span>: &lt;span style="color:#ae81ff">state&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">entity_id&lt;/span>: &lt;span style="color:#ae81ff">person.partner&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">state&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;not_home&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">action&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">service&lt;/span>: &lt;span style="color:#ae81ff">climate.set_temperature&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">target&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">entity_id&lt;/span>: &lt;span style="color:#ae81ff">climate.main_thermostat&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">data&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">temperature&lt;/span>: &lt;span style="color:#ae81ff">65&lt;/span> &lt;span style="color:#75715e"># setback temperature&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">service&lt;/span>: &lt;span style="color:#ae81ff">light.turn_off&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">target&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">area_id&lt;/span>: &lt;span style="color:#ae81ff">living_room&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">service&lt;/span>: &lt;span style="color:#ae81ff">notify.mobile_app_phone&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">data&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">message&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Away mode activated.&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The trigger fires when any person changes to &lt;code>not_home&lt;/code>. The conditions verify that ALL tracked people are away before applying eco mode — so the trigger fires but conditions gate it until the last person leaves.&lt;/p>
&lt;h2 id="notification-automations">Notification automations&lt;/h2>
&lt;h3 id="dishwasher-done">Dishwasher done&lt;/h3>
&lt;p>This works with a smart plug that measures wattage (Zigbee or Z-Wave smart outlet):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">automation&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">alias&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Dishwasher — Done Notification&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">trigger&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">platform&lt;/span>: &lt;span style="color:#ae81ff">numeric_state&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">entity_id&lt;/span>: &lt;span style="color:#ae81ff">sensor.dishwasher_power&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">below&lt;/span>: &lt;span style="color:#ae81ff">5&lt;/span> &lt;span style="color:#75715e"># watts — below this = cycle complete&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">for&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;00:02:00&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">condition&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">condition&lt;/span>: &lt;span style="color:#ae81ff">numeric_state&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">entity_id&lt;/span>: &lt;span style="color:#ae81ff">sensor.dishwasher_power&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">above&lt;/span>: &lt;span style="color:#ae81ff">0.1&lt;/span> &lt;span style="color:#75715e"># was actually running (not just idle/off)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">action&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">service&lt;/span>: &lt;span style="color:#ae81ff">notify.mobile_app_phone&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">data&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">title&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Dishwasher Done&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">message&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Cycle complete.&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The &lt;code>for: &amp;quot;00:02:00&amp;quot;&lt;/code> on the trigger prevents false positives from mid-cycle power dips — the wattage has to stay below 5W for two minutes before triggering.&lt;/p>
&lt;h3 id="low-battery-alert">Low battery alert&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">automation&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">alias&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Low Battery — All Devices&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">trigger&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">platform&lt;/span>: &lt;span style="color:#ae81ff">numeric_state&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">entity_id&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">sensor.front_door_lock_battery&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">sensor.bedroom_motion_battery&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">sensor.thermostat_battery&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">sensor.smoke_detector_battery&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">below&lt;/span>: &lt;span style="color:#ae81ff">20&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">action&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">service&lt;/span>: &lt;span style="color:#ae81ff">notify.mobile_app_phone&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">data&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">title&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Low Battery&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">message&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;{{ trigger.to_state.name }} is at {{ trigger.to_state.state }}%&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The template &lt;code>{{ trigger.to_state.name }}&lt;/code> and &lt;code>{{ trigger.to_state.state }}&lt;/code> pull the entity&amp;rsquo;s display name and current value from the trigger context — so one automation handles multiple devices and tells you specifically which one is low.&lt;/p>
&lt;h2 id="template-based-automations">Template-based automations&lt;/h2>
&lt;h3 id="door-left-open-warning">Door left open warning&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">automation&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">alias&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Front Door — Left Open Alert&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">trigger&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">platform&lt;/span>: &lt;span style="color:#ae81ff">state&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">entity_id&lt;/span>: &lt;span style="color:#ae81ff">binary_sensor.front_door&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">to&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;on&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">for&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;00:10:00&amp;#34;&lt;/span> &lt;span style="color:#75715e"># open for 10 minutes&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">condition&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">condition&lt;/span>: &lt;span style="color:#ae81ff">template&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">value_template&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;{{ states(&amp;#39;person.lk&amp;#39;) == &amp;#39;home&amp;#39; }}&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">action&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">service&lt;/span>: &lt;span style="color:#ae81ff">notify.mobile_app_phone&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">data&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">message&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Front door has been open for 10 minutes.&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">service&lt;/span>: &lt;span style="color:#ae81ff">tts.speak&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">target&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">entity_id&lt;/span>: &lt;span style="color:#ae81ff">media_player.kitchen_speaker&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">data&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">message&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;The front door is still open.&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The template condition checks that someone is home before sending the alert — no point in notifying if no one is there to close it.&lt;/p>
&lt;h3 id="thermostat-override-protection">Thermostat override protection&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">automation&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">alias&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Thermostat — Override Detection&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">trigger&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">platform&lt;/span>: &lt;span style="color:#ae81ff">state&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">entity_id&lt;/span>: &lt;span style="color:#ae81ff">climate.main_thermostat&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">attribute&lt;/span>: &lt;span style="color:#ae81ff">temperature&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">condition&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">condition&lt;/span>: &lt;span style="color:#ae81ff">template&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">value_template&lt;/span>: &amp;gt;&lt;span style="color:#e6db74">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> {{ trigger.to_state.attributes.temperature | float &amp;gt; 78 and
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> now().hour &amp;gt;= 1 and now().hour &amp;lt; 6 }}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">action&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">service&lt;/span>: &lt;span style="color:#ae81ff">climate.set_temperature&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">target&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">entity_id&lt;/span>: &lt;span style="color:#ae81ff">climate.main_thermostat&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">data&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">temperature&lt;/span>: &lt;span style="color:#ae81ff">70&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">service&lt;/span>: &lt;span style="color:#ae81ff">notify.mobile_app_phone&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">data&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">message&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Thermostat was set above 78°F at night — reset to 70°F.&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="choose-blocks-conditional-action-branching">Choose blocks: conditional action branching&lt;/h2>
&lt;p>When you need the automation to do different things based on a condition, use &lt;code>choose&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">automation&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">alias&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Motion — Lighting by Time of Day&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">trigger&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">platform&lt;/span>: &lt;span style="color:#ae81ff">state&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">entity_id&lt;/span>: &lt;span style="color:#ae81ff">binary_sensor.living_room_motion&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">to&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;on&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">action&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">choose&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">conditions&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">condition&lt;/span>: &lt;span style="color:#ae81ff">time&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">after&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;06:00:00&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">before&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;20:00:00&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">sequence&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">service&lt;/span>: &lt;span style="color:#ae81ff">light.turn_on&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">target&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">entity_id&lt;/span>: &lt;span style="color:#ae81ff">light.living_room&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">data&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">brightness_pct&lt;/span>: &lt;span style="color:#ae81ff">90&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">color_temp&lt;/span>: &lt;span style="color:#ae81ff">250&lt;/span> &lt;span style="color:#75715e"># cooler, daytime&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">conditions&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">condition&lt;/span>: &lt;span style="color:#ae81ff">time&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">after&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;20:00:00&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">before&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;23:00:00&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">sequence&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">service&lt;/span>: &lt;span style="color:#ae81ff">light.turn_on&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">target&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">entity_id&lt;/span>: &lt;span style="color:#ae81ff">light.living_room&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">data&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">brightness_pct&lt;/span>: &lt;span style="color:#ae81ff">40&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">color_temp&lt;/span>: &lt;span style="color:#ae81ff">500&lt;/span> &lt;span style="color:#75715e"># warm, evening&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">default&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">service&lt;/span>: &lt;span style="color:#ae81ff">light.turn_on&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">target&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">entity_id&lt;/span>: &lt;span style="color:#ae81ff">light.living_room&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">data&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">brightness_pct&lt;/span>: &lt;span style="color:#ae81ff">10&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">color_temp&lt;/span>: &lt;span style="color:#ae81ff">600&lt;/span> &lt;span style="color:#75715e"># very warm, late night&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="scripts-reusable-action-sequences">Scripts: reusable action sequences&lt;/h2>
&lt;p>Put repeated action sequences in scripts:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># configuration.yaml&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">script&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">good_morning&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">alias&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Good Morning Routine&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">sequence&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">service&lt;/span>: &lt;span style="color:#ae81ff">light.turn_on&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">target&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">area_id&lt;/span>: &lt;span style="color:#ae81ff">bedroom&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">data&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">brightness_pct&lt;/span>: &lt;span style="color:#ae81ff">30&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">color_temp&lt;/span>: &lt;span style="color:#ae81ff">200&lt;/span> &lt;span style="color:#75715e"># cool/bright&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">transition&lt;/span>: &lt;span style="color:#ae81ff">120&lt;/span> &lt;span style="color:#75715e"># 2-minute sunrise&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">service&lt;/span>: &lt;span style="color:#ae81ff">climate.set_temperature&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">target&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">entity_id&lt;/span>: &lt;span style="color:#ae81ff">climate.main_thermostat&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">data&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">temperature&lt;/span>: &lt;span style="color:#ae81ff">70&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">delay&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;00:02:00&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">service&lt;/span>: &lt;span style="color:#ae81ff">light.turn_on&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">target&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">entity_id&lt;/span>: &lt;span style="color:#ae81ff">light.kitchen&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">data&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">brightness_pct&lt;/span>: &lt;span style="color:#ae81ff">80&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Call this script from any automation or button press:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">action&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">service&lt;/span>: &lt;span style="color:#ae81ff">script.good_morning&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="debugging-automations">Debugging automations&lt;/h2>
&lt;p>&lt;strong>Trace view:&lt;/strong> Settings → Automations → open automation → Traces. Shows every firing with the trigger value, each condition result (pass/fail with values), and each action outcome.&lt;/p>
&lt;p>&lt;strong>Template testing:&lt;/strong> Developer Tools → Template. Paste any Jinja2 expression and see it evaluate against current state in real time. Use this to test conditions before putting them in an automation.&lt;/p>
&lt;p>&lt;strong>Entity history:&lt;/strong> Developer Tools → States. See the current value and last-changed time for any entity. Useful when an automation isn&amp;rsquo;t triggering — check if the entity state is actually what you think it is.&lt;/p>
&lt;p>&lt;strong>Logbook:&lt;/strong> Settings → Logbook. Shows state changes and automation fires in chronological order. Filter by entity to see exactly when something changed.&lt;/p>
&lt;h2 id="best-practices">Best practices&lt;/h2>
&lt;p>&lt;strong>Use &lt;code>for:&lt;/code> on state triggers&lt;/strong> to avoid automations firing on momentary state changes (a sensor flickering, a button double-press).&lt;/p>
&lt;p>&lt;strong>Avoid complex logic in a single automation&lt;/strong> — break it into an automation that calls a script, with multiple scripts for different conditions. Simpler automations are easier to debug.&lt;/p>
&lt;p>&lt;strong>Version control your config&lt;/strong> — store your &lt;code>configuration.yaml&lt;/code> and automation files in a Gitea repository. The &lt;a href="https://techfuelhq.com/tutorials/docker-compose-starter-stack-homelab-2026/">Docker Compose starter stack&lt;/a> includes Gitea for exactly this.&lt;/p>
&lt;p>&lt;strong>Use areas and labels&lt;/strong> — Home Assistant&amp;rsquo;s area grouping lets you target all lights in a room without listing entity IDs. &lt;code>area_id: living_room&lt;/code> in a target covers everything in that area, including devices added later.&lt;/p>
&lt;hr>
&lt;p>&lt;em>This guide extends the setup work from the &lt;a href="https://techfuelhq.com/tutorials/home-assistant-proxmox-2026/">Home Assistant on Proxmox guide&lt;/a> and the &lt;a href="https://techfuelhq.com/tutorials/home-assistant-zigbee-zwave-2026/">Zigbee/Z-Wave integration guide&lt;/a>. The automations here assume your devices are already paired and showing correct state in HA.&lt;/em>&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://www.home-assistant.io/docs/automation/" rel="noopener">Home Assistant: Automating Home Assistant&lt;/a> &amp;ndash; official overview of the trigger/condition/action automation model.&lt;/li>
&lt;li>&lt;a href="https://www.home-assistant.io/docs/automation/trigger/" rel="noopener">Home Assistant: Automation triggers&lt;/a> &amp;ndash; official reference for state, time, sun, zone, and numeric_state triggers.&lt;/li>
&lt;li>&lt;a href="https://www.home-assistant.io/docs/scripts/conditions/" rel="noopener">Home Assistant: Conditions&lt;/a> &amp;ndash; official reference for state, numeric_state, template, time, and sun conditions.&lt;/li>
&lt;li>&lt;a href="https://www.home-assistant.io/docs/scripts/" rel="noopener">Home Assistant: Script syntax&lt;/a> &amp;ndash; official reference for action sequences, choose blocks, delay, and wait_for_trigger.&lt;/li>
&lt;li>&lt;a href="https://www.home-assistant.io/docs/configuration/templating/" rel="noopener">Home Assistant: Templating&lt;/a> &amp;ndash; official reference for the Jinja2 templates used in value_template and action data.&lt;/li>
&lt;/ul></description></item><item><title>LLM VRAM Calculator</title><link>https://techfuelhq.com/tools/llm-vram-calculator/</link><pubDate>Tue, 16 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tools/llm-vram-calculator/</guid><description>&lt;p>Pick your GPU, the model size you want to run, a quantization level, and a context length. The calculator estimates total VRAM as three parts: the model weights, the KV cache that holds your context, and a small runtime overhead. Here is how to read those numbers.&lt;/p>
&lt;p>&lt;strong>Weights are the big, predictable cost.&lt;/strong> A model&amp;rsquo;s weight memory is just its parameter count times the bits-per-weight of the quantization, divided by eight. An 8B model at FP16 is about 16 GB; the same model at Q4_K_M is about 4.8 GB. This is why quantization is the first lever to reach for when a model does not fit.&lt;/p>
&lt;p>&lt;strong>The KV cache scales with context, not parameters.&lt;/strong> Every token in your context window is cached per layer, so a long context can quietly cost more memory than the weights on a small model. The tool estimates the cache from the attention shape of modern GQA models and lets you quantize it (Q8 or Q4) to claw back room.&lt;/p>
&lt;p>&lt;strong>Headroom matters.&lt;/strong> The verdict bands leave a margin: a model that needs 92 percent of your VRAM is marked tight, not safe, because runtimes, the desktop, and transient spikes all want a slice. Size for the green band and you avoid out-of-memory errors mid-generation.&lt;/p>
&lt;p>These are planning estimates that assume a llama.cpp / GGUF-style setup. Your exact numbers depend on the specific model, the runtime, and how much you batch.&lt;/p></description></item><item><title>MikroTik CRS305 Review 2026: The $80 10GbE Homelab Switch</title><link>https://techfuelhq.com/networking/mikrotik-crs305-review-2026/</link><pubDate>Tue, 16 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/networking/mikrotik-crs305-review-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-16 · ~9 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/networking/mikrotik-crs305-review-2026.svg" alt="MikroTik CRS305-1G-4S+IN review card rated 4.5 out of 5, listing key specs: four SFP+ ports at 1/2.5/10 Gbps, one gigabit RJ45 management port, 9.1W max power, 6.5 to 7.1W idle, passive fanless cooling, and RouterOS 7 or SwOS firmware." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>&lt;strong>Rating: 4.5 / 5&lt;/strong>&lt;/p>
&lt;p>The CRS305 is the switch that comes up in every homelab 10GbE conversation, consistently, because nothing else at its price point makes as much sense. Four SFP+ ports, one 1GbE copper management port, a MikroTik-documented idle draw of 6.5–7.1W, and an $80–100 street price with no software subscription fees. That&amp;rsquo;s the case for it.&lt;/p>
&lt;p>The case against: RouterOS has a learning curve that surprises people coming from consumer switches, and the web interface looks like it was designed in 2009 (it was). These are real considerations, not negligible footnotes.&lt;/p>
&lt;p>Still deciding whether 10GbE is even worth it over 2.5GbE for your homelab? Start with &lt;a href="https://techfuelhq.com/networking/25gbe-vs-10gbe-homelab-2026/">2.5GbE vs 10GbE: which to buy&lt;/a> — this review assumes you&amp;rsquo;ve already landed on 10GbE.&lt;/p>
&lt;p>Here&amp;rsquo;s the full picture.&lt;/p>
&lt;h2 id="what-youre-actually-buying">What you&amp;rsquo;re actually buying&lt;/h2>
&lt;p>&lt;strong>Hardware:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>4× SFP+ ports at 1/2.5/10 Gbps&lt;/li>
&lt;li>1× RJ45 Gigabit Ethernet (management)&lt;/li>
&lt;li>Desktop/rack mount (no ears included, MikroTik sells a bracket kit)&lt;/li>
&lt;li>External 24V passive PoE power supply (included)&lt;/li>
&lt;li>No fan — passively cooled chassis&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Firmware options:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>RouterOS 7 (default): full networking OS with Winbox GUI, CLI, web interface&lt;/li>
&lt;li>SwOS: simplified switch-mode firmware, browser-only, for pure Layer 2 operation&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Published specs (MikroTik product page, accessed 2026-06):&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Max power consumption: 9.1W&lt;/li>
&lt;li>Idle power: 6.5–7.1W (measured by third parties; MikroTik doesn&amp;rsquo;t publish idle separately)&lt;/li>
&lt;li>Dimensions: 113 × 89 × 28 mm (fits on a shelf, not just in a rack)&lt;/li>
&lt;li>Operating temperature: 0–55°C&lt;/li>
&lt;/ul>
&lt;h2 id="who-this-switch-is-for">Who this switch is for&lt;/h2>
&lt;p>The CRS305 makes sense if:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>You have 2-4 machines that need 10GbE connectivity.&lt;/strong> The sweet spot: two mini PCs + a NAS. Three SFP+ ports cover all three devices, the fourth port goes to your router or another switch for uplink.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Your runs are under 5 meters.&lt;/strong> Passive DAC cables (SFP+ Direct Attach Copper) work perfectly at this distance, cost $15–20 each, draw less than 0.5W, and have zero transceiver compatibility issues on the CRS305.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>You care about power consumption.&lt;/strong> 7W total for a 10GbE switch is exceptional. The QNap QSW-308S (8× SFP+) pulls 20–25W. The Ubiquiti USW-Pro-Max 16 (16-port 10GbE) pulls 30–40W. The CRS305 is the most efficient 10GbE switch option in 2026 at its port count.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>You don&amp;rsquo;t need PoE on the 10G ports.&lt;/strong> SFP+ ports don&amp;rsquo;t do PoE. If you need PoE (for APs, cameras, phones), you need a separate switch — the CRS305 is pure data.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h2 id="setup-path-swos-for-most-homelab-users">Setup path: SwOS for most homelab users&lt;/h2>
&lt;p>When the switch arrives, it runs RouterOS. For a pure homelab switch (no routing), SwOS is the better choice — it&amp;rsquo;s a simpler web UI that does exactly what you need.&lt;/p>
&lt;p>Switch to SwOS:&lt;/p>
&lt;ol>
&lt;li>Connect a laptop to the 1GbE management port via RJ45&lt;/li>
&lt;li>Set your laptop&amp;rsquo;s IP to 192.168.88.2 /24 (the CRS305 defaults to 192.168.88.1)&lt;/li>
&lt;li>Navigate to 192.168.88.1 in a browser → log in with admin/no-password&lt;/li>
&lt;li>Go to System → RouterBOOT → Boot OS → select SwOS → Apply → reboot&lt;/li>
&lt;/ol>
&lt;p>After reboot, access 192.168.88.1 in a browser — you&amp;rsquo;re now in SwOS. The interface shows all ports and lets you configure VLANs, aggregation, and mirror ports from a single page.&lt;/p>
&lt;p>&lt;strong>VLAN setup in SwOS&lt;/strong> — for a typical homelab with separate IoT and trusted VLANs:&lt;/p>
&lt;ol>
&lt;li>In SwOS → VLANs tab: add VLAN IDs (e.g., 10 for trusted, 20 for IoT, 99 for management)&lt;/li>
&lt;li>For each port: set VLAN mode (access or trunk), tagged VLANs (for trunk ports to router/Proxmox), and default VLAN ID (for access ports)&lt;/li>
&lt;li>Port 5 (the 1GbE copper port) becomes the management interface&lt;/li>
&lt;/ol>
&lt;p>Full VLAN config walkthrough is in the &lt;a href="https://techfuelhq.com/tutorials/vlans-homelab-2026/">VLANs for the Homelab guide&lt;/a>.&lt;/p>
&lt;h2 id="the-routeros-path-more-power-more-complexity">The RouterOS path: more power, more complexity&lt;/h2>
&lt;p>If you want the CRS305 to handle routing alongside switching — running DHCP for your LAN, NAT, or acting as a firewall — RouterOS is appropriate. RouterOS on the CRS305 supports:&lt;/p>
&lt;ul>
&lt;li>Full L3 routing between subnets&lt;/li>
&lt;li>Firewall rules (stateful, connection tracking)&lt;/li>
&lt;li>DHCP server with static leases&lt;/li>
&lt;li>OSPF and BGP (yes, on this $80 switch)&lt;/li>
&lt;li>Traffic shaping and queuing&lt;/li>
&lt;/ul>
&lt;p>The Winbox desktop application (Windows/Mac/Linux via Wine) is the most ergonomic way to configure RouterOS — it connects directly over Layer 2 MAC address, so you can configure the switch even if you mess up the IP settings. The web interface is functional but slow. The CLI via SSH is identical to Cisco-style IOS if you&amp;rsquo;re used to that workflow.&lt;/p>
&lt;p>&lt;strong>Realistic use case for RouterOS:&lt;/strong> a 2-node homelab where the CRS305 handles both 10GbE switching between nodes and routes traffic from a DSL/cable modem to the nodes without a separate router box. Not a configuration I&amp;rsquo;d recommend for complex VLANs or firewall rules — OPNsense on a mini PC handles that better — but it works for minimal setups.&lt;/p>
&lt;h2 id="power-draw-in-practice">Power draw in practice&lt;/h2>
&lt;p>The published 9.1W max and community-measured 6.5–7.1W idle figures hold up. In a typical homelab setup with two DAC-connected nodes active:&lt;/p>
&lt;ul>
&lt;li>Idle (switch powered, no traffic): 6.5–7W&lt;/li>
&lt;li>Active traffic (NAS backup, file transfers): 7–8W&lt;/li>
&lt;li>Max under sustained load: ~8.5W (consistent with the published 9.1W ceiling)&lt;/li>
&lt;/ul>
&lt;p>At $0.13/kWh running 24/7, the CRS305 adds ~$8/year to your electricity bill. It&amp;rsquo;s not a consideration. Compare to a used Cisco SG350-28 at 35–50W for a 28-port managed switch — the Cisco costs $35–50/year in electricity for a homelab with 8 active ports.&lt;/p>
&lt;h2 id="what-the-crs305-doesnt-do-well">What the CRS305 doesn&amp;rsquo;t do well&lt;/h2>
&lt;p>&lt;strong>Port count.&lt;/strong> Four SFP+ ports means four 10GbE connections plus the 1GbE management. If you need 6+ 10GbE devices, you&amp;rsquo;re looking at the CRS309-1G-8S+ (8× SFP+, ~$180) or the CRS312-4C+8XG (mixed copper + SFP+, ~$280).&lt;/p>
&lt;p>&lt;strong>PoE.&lt;/strong> None. The SFP+ standard doesn&amp;rsquo;t carry DC power. If your homelab includes Unifi APs, IP cameras, or VoIP phones that need PoE, add a dedicated PoE switch for those devices — a $35 TP-Link TL-SG108PE handles 8 PoE devices at up to 64W total PoE budget.&lt;/p>
&lt;p>&lt;strong>RouterOS UI.&lt;/strong> If you&amp;rsquo;ve never used MikroTik equipment, RouterOS feels like it predates every modern network management interface. The Winbox application has been the primary configuration tool for 20 years and it shows. Winbox works, it&amp;rsquo;s stable, and the MikroTik documentation is comprehensive — but expect 30–60 minutes of learning before a typical VLAN configuration feels natural.&lt;/p>
&lt;p>&lt;strong>No SFP (1GbE SFP) ports.&lt;/strong> The CRS305&amp;rsquo;s four ports are SFP+ only. You can plug standard 1GbE SFP modules into SFP+ ports — they negotiate down — but the module costs money and uses a 10GbE slot. The CRS305 is optimized for 10GbE devices.&lt;/p>
&lt;h2 id="price-and-where-to-buy">Price and where to buy&lt;/h2>
&lt;p>Street price: $80–100 USD as of mid-2026. Check MikroTik&amp;rsquo;s authorized distributor page for the nearest warehouse-stocked source — resellers in the US include Baltic Networks, Streakwave, and Winncom. Amazon carries it but usually at $95–110 and sold through third parties.&lt;/p>
&lt;p>There&amp;rsquo;s no used market pricing consideration with MikroTik the way there is with Cisco — MikroTik hardware holds value because there&amp;rsquo;s no licensing distinction between new and used units (RouterOS is perpetually licensed to the hardware, not an account).&lt;/p>
&lt;h2 id="verdict">Verdict&lt;/h2>
&lt;p>The CRS305-1G-4S+IN is the correct answer for most homelab 10GbE setups in 2026. The four SFP+ ports cover the typical 2–3 node + NAS topology, the passive cooling and 7W idle make it the most power-efficient 10GbE option at its port count, and the open SFP+ standard means no vendor module lock-in.&lt;/p>
&lt;p>RouterOS has a learning curve, but it&amp;rsquo;s a one-time investment — once you&amp;rsquo;ve configured your VLAN and port setup, you set it and forget it. The CRS305 doesn&amp;rsquo;t need firmware updates more than a couple of times per year, and MikroTik&amp;rsquo;s release cadence is methodical rather than aggressive.&lt;/p>
&lt;p>Buy it. If you outgrow four SFP+ ports, the CRS309 is the natural upgrade.&lt;/p>
&lt;hr>
&lt;p>&lt;em>For the full 10GbE homelab setup — NIC selection, DAC vs. fiber, and three budget tiers — see the &lt;a href="https://techfuelhq.com/networking/10gbe-home-networking-budget-2026/">10GbE Homelab Networking guide&lt;/a>. For VLAN configuration on this switch (and integration with OPNsense + Proxmox), the &lt;a href="https://techfuelhq.com/tutorials/vlans-homelab-2026/">VLANs for the Homelab guide&lt;/a> has exact commands for MikroTik SwOS. The &lt;a href="https://techfuelhq.com/articles/best-homelab-networking-gear-under-200/">Homelab Networking Gear Under $200 roundup&lt;/a> puts this switch in context alongside routers and wireless APs.&lt;/em>&lt;/p></description></item><item><title>Network Transfer Time Calculator</title><link>https://techfuelhq.com/tools/transfer-time-calculator/</link><pubDate>Tue, 16 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tools/transfer-time-calculator/</guid><description>&lt;p>Enter how much data you&amp;rsquo;re moving, the connection, and the drives at each end. The calculator gives you the realistic transfer time, not the marketing one. Here&amp;rsquo;s the logic behind it.&lt;/p>
&lt;p>&lt;strong>Effective speed is the slower of the link and the disk, minus overhead.&lt;/strong> A transfer can only go as fast as its slowest part. If your 10GbE link can carry 1,250 MB/s but the source is a single hard drive that reads at 180 MB/s, you move data at 180 MB/s. The tool takes the lower of the two, then trims it by a real-world efficiency factor for protocol overhead.&lt;/p>
&lt;p>&lt;strong>The bottleneck readout is the useful part.&lt;/strong> It tells you whether spending money on faster networking would actually help. If the drive is the limit, a 10GbE card changes nothing until you add disks or switch to SSDs. If the link is the limit, faster networking pays off directly.&lt;/p>
&lt;p>&lt;strong>Time is just size divided by speed.&lt;/strong> Once the effective speed is set, the math is exact: a 1 TB file at 280 MB/s takes about an hour. The per-link table shows the same transfer across every common Ethernet speed so you can see where the gains flatten out for your storage.&lt;/p>
&lt;p>Sizes use decimal units (1 TB = 1,000 GB) to match how both drives and network speeds are quoted.&lt;/p></description></item><item><title>Proxmox Cluster Setup: 2-Node and 3-Node HA (2026)</title><link>https://techfuelhq.com/tutorials/proxmox-clustering-ha-2026/</link><pubDate>Tue, 16 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tutorials/proxmox-clustering-ha-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-16 · ~18 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/tutorials/proxmox-clustering-ha-2026.svg" alt="Architecture diagram of a 2-node Proxmox HA cluster: Node 1 and Node 2 each hold one corosync vote linked over a dedicated --link0 network, a QDevice (Raspberry Pi or mini PC) casts a tie-breaking third vote so quorum is 2 of 3 votes and survives one node failing; both nodes attach to shared storage (NFS, iSCSI, or Ceph) for live migration and HA failover, with IPMI or softdog watchdog fencing to prevent split-brain." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>A single Proxmox node is fine until it isn&amp;rsquo;t. The drive fails. The NIC dies. You need to reboot for a kernel update and everything goes down. A Proxmox cluster solves this — two or more nodes that share cluster state, can migrate VMs between them, and optionally restart VMs automatically when a node fails.&lt;/p>
&lt;p>This guide covers building a cluster from scratch: the correct 2-node architecture with a QDevice, the cleaner 3-node architecture that doesn&amp;rsquo;t need one, shared storage options, live migration, HA groups, and the fencing question you can&amp;rsquo;t skip.&lt;/p>
&lt;h2 id="what-a-proxmox-cluster-actually-gives-you">What a Proxmox cluster actually gives you&lt;/h2>
&lt;p>Proxmox clustering has two distinct features that people sometimes conflate:&lt;/p>
&lt;p>&lt;strong>1. Cluster management (no shared storage required)&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Unified web UI: manage all nodes from one panel&lt;/li>
&lt;li>Centralized user and permission management&lt;/li>
&lt;li>Pool-based resource allocation across nodes&lt;/li>
&lt;li>Live migration between nodes (with shared storage)&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>2. High Availability (HA) — requires shared storage + fencing&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Automatic VM restart on surviving node when a node fails&lt;/li>
&lt;li>HA watchdog groups with priority ordering&lt;/li>
&lt;li>Fencing to prevent split-brain and data corruption&lt;/li>
&lt;/ul>
&lt;p>You can run a cluster for live migration and unified management without HA. HA is the more complex addition and has specific hardware requirements (shared storage, fencing).&lt;/p>
&lt;h2 id="architecture-2-node-vs-3-node">Architecture: 2-node vs 3-node&lt;/h2>
&lt;h3 id="3-node-cluster-recommended">3-node cluster (recommended)&lt;/h3>
&lt;p>Three nodes each have a vote in corosync. Quorum is 2 votes (majority). If any single node fails:&lt;/p>
&lt;ul>
&lt;li>2 surviving nodes form quorum&lt;/li>
&lt;li>Cluster continues operating&lt;/li>
&lt;li>HA restarts VMs on surviving nodes&lt;/li>
&lt;/ul>
&lt;p>This is the clean architecture. No workarounds, no QDevice, straightforward HA.&lt;/p>
&lt;h3 id="2-node-cluster-with-qdevice">2-node cluster with QDevice&lt;/h3>
&lt;p>Two nodes cannot hold quorum on their own — each losing the other would leave one node alone, and one vote does not equal majority of two. The solution is a QDevice: a third machine running &lt;code>corosync-qdevice&lt;/code> that provides a tie-breaking vote.&lt;/p>
&lt;pre tabindex="0">&lt;code>Node 1 (vote) + Node 2 (vote) + QDevice (vote) = 3 votes total
Quorum = 2 votes required
&lt;/code>&lt;/pre>&lt;p>If Node 1 fails: Node 2 + QDevice = 2 votes → quorum → cluster continues.
If the QDevice fails: Node 1 + Node 2 = 2 votes → quorum maintained (QDevice is just a tiebreaker).
If Node 1 + QDevice both fail: Node 2 alone = 1 vote → no quorum → node fences itself.&lt;/p>
&lt;p>The QDevice can be anything running Debian/Ubuntu with a network connection — a Raspberry Pi, an LXC on a third server, even a VM on a NAS. It requires minimal resources: 256MB RAM, a few hundred MB of disk, and a stable network connection to both nodes.&lt;/p>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;p>For a 2-node + QDevice cluster:&lt;/p>
&lt;ul>
&lt;li>2 Proxmox hosts (any hardware, same or different specs)&lt;/li>
&lt;li>1 QDevice host (Raspberry Pi, mini PC, or any Debian/Ubuntu system)&lt;/li>
&lt;li>All three on the same network (or VLANs with routing between them)&lt;/li>
&lt;li>&lt;strong>No existing Proxmox clusters&lt;/strong> on any node — clusters can only be created, not merged&lt;/li>
&lt;/ul>
&lt;p>For HA (optional, beyond basic clustering):&lt;/p>
&lt;ul>
&lt;li>Shared storage accessible from all nodes (NFS, iSCSI, or Ceph)&lt;/li>
&lt;li>Fencing mechanism (IPMI, BMC, or kernel watchdog)&lt;/li>
&lt;/ul>
&lt;h2 id="step-1-create-the-cluster-on-node-1">Step 1: Create the cluster on node 1&lt;/h2>
&lt;p>Log into node 1&amp;rsquo;s Proxmox web UI or SSH in:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Create the cluster (run on node 1 only)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>pvecm create mycluster --link0 &amp;lt;node1-ip&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Verify the cluster is created:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>pvecm status
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Should show: Quorum information, Node ID 1, Member count 1&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="step-2-join-node-2-to-the-cluster">Step 2: Join node 2 to the cluster&lt;/h2>
&lt;p>From node 2, join the existing cluster:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Run on node 2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>pvecm add &amp;lt;node1-ip&amp;gt; --link0 &amp;lt;node2-ip&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This prompts for node 1&amp;rsquo;s root password. After joining, verify from node 1:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>pvecm nodes
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Should show both nodes listed&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>At this point, both nodes appear in the web UI under Datacenter. The cluster exists but has no quorum capability — with 2 nodes and 2 votes needed for quorum, losing either node means no quorum.&lt;/p>
&lt;h2 id="step-3-set-up-the-qdevice">Step 3: Set up the QDevice&lt;/h2>
&lt;p>On the QDevice machine (Debian/Ubuntu):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>apt update &lt;span style="color:#f92672">&amp;amp;&amp;amp;&lt;/span> apt install -y corosync-qdevice
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>On node 1, configure the QDevice:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>pvecm qdevice setup &amp;lt;qdevice-ip&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This copies the cluster SSH key to the QDevice and configures corosync on all nodes to include the QDevice vote. Verify:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>pvecm status
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Quorate: Yes&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Total votes: 3 (node1 + node2 + qdevice)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Expected votes: 2 (quorum threshold)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="step-4-configure-shared-storage-required-for-live-migration-and-ha">Step 4: Configure shared storage (required for live migration and HA)&lt;/h2>
&lt;h3 id="nfs-easiest-for-homelab">NFS (easiest for homelab)&lt;/h3>
&lt;p>If you have a TrueNAS or any NFS server:&lt;/p>
&lt;p>In Proxmox web UI: Datacenter → Storage → Add → NFS&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Setting&lt;/th>
&lt;th scope="col">Value&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>ID&lt;/td>
&lt;td>&lt;code>nfs-shared&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Server&lt;/td>
&lt;td>&lt;code>192.168.1.x&lt;/code> (NFS server IP)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Export&lt;/td>
&lt;td>&lt;code>/mnt/pool/proxmox&lt;/code> (your NFS export path)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Content&lt;/td>
&lt;td>&lt;code>Disk image, CT template, ISO image, VZDump backup file&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Nodes&lt;/td>
&lt;td>All (select all cluster nodes)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>After adding, both nodes should see the same NFS storage in their storage list.&lt;/p>
&lt;p>&lt;strong>Verify from both nodes:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># On both node1 and node2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ls /mnt/pve/nfs-shared/
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Both should show the same directory contents&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="iscsi">iSCSI&lt;/h3>
&lt;p>For better performance than NFS, an iSCSI target (TrueNAS, OpenMediaVault, or a dedicated SAN):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Discover iSCSI targets&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>iscsiadm -m discovery -t st -p &amp;lt;iscsi-server-ip&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Log in to target&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>iscsiadm -m node -T &amp;lt;target-name&amp;gt; -p &amp;lt;iscsi-server-ip&amp;gt; --login
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Add in Proxmox UI: Datacenter → Storage → Add → iSCSI. Wrap it in LVM-thin for thin-provisioned VM disks.&lt;/p>
&lt;h3 id="ceph-advanced-distributed-storage">Ceph (advanced, distributed storage)&lt;/h3>
&lt;p>Ceph runs on the Proxmox nodes themselves — each node contributes disks to a distributed object store. No separate NAS required.&lt;/p>
&lt;p>Ceph requires:&lt;/p>
&lt;ul>
&lt;li>3+ Proxmox nodes (Ceph needs an odd number of OSDs for quorum)&lt;/li>
&lt;li>A dedicated disk per node for Ceph OSD (separate from the OS disk)&lt;/li>
&lt;li>Low-latency network between nodes (10GbE strongly recommended)&lt;/li>
&lt;/ul>
&lt;p>Set up via Proxmox web UI: Datacenter → Ceph → Install → follow wizard. Ceph is powerful but adds complexity; for a 2-node homelab, NFS is simpler.&lt;/p>
&lt;h2 id="step-5-live-migration">Step 5: Live migration&lt;/h2>
&lt;p>With shared storage, you can migrate running VMs between nodes. In the web UI:&lt;/p>
&lt;ol>
&lt;li>Select a VM&lt;/li>
&lt;li>Right-click → Migrate&lt;/li>
&lt;li>Target node: select the other node&lt;/li>
&lt;li>Check &amp;ldquo;Online&amp;rdquo; for zero-downtime live migration (requires VM disk on shared storage)&lt;/li>
&lt;li>Click Migrate&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>From the CLI:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Live migrate VM ID 100 to node2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>qm migrate &lt;span style="color:#ae81ff">100&lt;/span> node2 --online
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Migration over 10GbE takes 10–30 seconds for a typical VM. On 1GbE with a large-memory VM, plan for several minutes.&lt;/p>
&lt;h2 id="step-6-enable-high-availability">Step 6: Enable High Availability&lt;/h2>
&lt;p>HA requires fencing configured before enabling. Without fencing, HA is dangerous — if a node becomes unreachable (not actually down), the surviving node might try to restart VMs while the original node is still running them, potentially causing data corruption on shared storage.&lt;/p>
&lt;h3 id="fencing-option-1-ipmiiloidrac-recommended-for-production">Fencing option 1: IPMI/iLO/iDRAC (recommended for production)&lt;/h3>
&lt;p>If your servers have IPMI (most enterprise/workstation boards):&lt;/p>
&lt;p>Datacenter → HA → Groups → Resources → Fencing:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># /etc/pve/ha/resources.cfg example:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>vm: &lt;span style="color:#ae81ff">100&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> group: ha-group
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> max_restart: &lt;span style="color:#ae81ff">3&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> max_relocate: &lt;span style="color:#ae81ff">3&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>IPMI fencing configuration:
Datacenter → HA → Fencing → Add IPMI fence agent with IP, username, password for each node&amp;rsquo;s IPMI interface.&lt;/p>
&lt;h3 id="fencing-option-2-kernel-watchdog-homelab-without-ipmi">Fencing option 2: Kernel watchdog (homelab without IPMI)&lt;/h3>
&lt;p>The Linux kernel watchdog causes a node to self-reboot if it loses cluster communication. It&amp;rsquo;s not hardware fencing, but it prevents split-brain.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># On each Proxmox node:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>echo &lt;span style="color:#e6db74">&amp;#34;softdog&amp;#34;&lt;/span> &amp;gt;&amp;gt; /etc/modules
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>modprobe softdog
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Verify&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ls /dev/watchdog
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Configure in &lt;code>/etc/pve/ha/resources.cfg&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>watchdog-mux: yes
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="enable-ha-for-a-vm">Enable HA for a VM&lt;/h3>
&lt;p>Once fencing is configured:&lt;/p>
&lt;ol>
&lt;li>Web UI → Select VM → More → Manage HA&lt;/li>
&lt;li>Click &amp;ldquo;Add HA&amp;rdquo;&lt;/li>
&lt;li>Set Group (optional: assign to a specific HA group)&lt;/li>
&lt;li>Max Restart: 3 (restart attempts before abandoning)&lt;/li>
&lt;li>Max Relocate: 3 (move attempts to another node)&lt;/li>
&lt;/ol>
&lt;p>Or CLI:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>ha-manager add vm:100 --state started --max_restart &lt;span style="color:#ae81ff">3&lt;/span> --max_relocate &lt;span style="color:#ae81ff">3&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Check HA status:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>ha-manager status
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Shows: vm:100 in state started, node: node1&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>When node1 fails, HA manager on node2 detects the node timeout, confirms fencing (node has powered off or watchdog-rebooted), and starts VM 100 on node2.&lt;/p>
&lt;h2 id="step-7-ha-groups-and-priorities">Step 7: HA groups and priorities&lt;/h2>
&lt;p>HA groups let you prefer specific VMs on specific nodes while allowing failover to others:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Create a group that prefers node1 but allows node2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ha-manager groupadd ha-group1 --nodes node1:2,node2:1 --restricted &lt;span style="color:#ae81ff">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># node1:2 = priority 2 (preferred), node2:1 = priority 1 (failover)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># restricted 0 = allow running on any listed node&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Assign VMs to the group:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>ha-manager set vm:100 --group ha-group1
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>With this config, VM 100 will preferably run on node1. If node1 fails, it migrates to node2. When node1 comes back, it migrates back (if &lt;code>--nofailback 0&lt;/code>, the default).&lt;/p>
&lt;h2 id="monitoring-cluster-health">Monitoring cluster health&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Overall cluster status&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>pvecm status
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Node status &lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>pvecm nodes
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># HA manager status&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ha-manager status
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Corosync ring status (network health between nodes)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>corosync-cfgtool -s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Check for quorum issues&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>corosync-quorumtool
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>In the web UI: Datacenter → Summary shows all nodes with CPU/RAM/disk graphs and cluster status.&lt;/p>
&lt;h2 id="common-issues">Common issues&lt;/h2>
&lt;p>&lt;strong>&amp;ldquo;Cluster not quorate&amp;rdquo;&lt;/strong> — Usually means the QDevice is unreachable or a node went offline without fencing. Check &lt;code>corosync-cfgtool -s&lt;/code> for ring status. Confirm QDevice is running &lt;code>systemctl status corosync-qdevice&lt;/code>.&lt;/p>
&lt;p>&lt;strong>Live migration fails with &amp;ldquo;node already contains this VM&amp;rdquo;&lt;/strong> — The VM disk is on local storage, not shared storage. Move the disk to shared storage first: VM → Hardware → Disk → Move Disk → Target shared storage.&lt;/p>
&lt;p>&lt;strong>HA manager won&amp;rsquo;t start VMs&lt;/strong> — Check &lt;code>ha-manager status&lt;/code> for fencing errors. If fencing isn&amp;rsquo;t configured correctly, HA manager refuses to start VMs on surviving nodes (correct behavior — without fencing, it can&amp;rsquo;t safely assume the failed node is truly offline).&lt;/p>
&lt;p>&lt;strong>Corosync ring 0 errors&lt;/strong> — Network instability between nodes. Check physical connectivity, switch port speed (ensure both nodes are at full duplex), and that the corosync network isn&amp;rsquo;t saturated. Corosync is very sensitive to dropped packets.&lt;/p>
&lt;h2 id="network-recommendations">Network recommendations&lt;/h2>
&lt;ul>
&lt;li>Dedicate a network interface or VLAN for corosync (&lt;code>--link0&lt;/code> parameter)&lt;/li>
&lt;li>VM traffic on a separate interface or VLAN from cluster communication&lt;/li>
&lt;li>10GbE between nodes for live migration (1GbE works but migration is slow)&lt;/li>
&lt;li>Storage traffic on a third interface if possible&lt;/li>
&lt;/ul>
&lt;p>The &lt;a href="https://techfuelhq.com/tutorials/vlans-homelab-2026/">VLANs for the homelab guide&lt;/a> covers network segmentation for cluster + storage + VM traffic with OPNsense and managed switches.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Cluster storage architecture connects to ZFS. The &lt;a href="https://techfuelhq.com/tutorials/zfs-proxmox-pool-setup-arc-tuning-2026/">ZFS on Proxmox guide&lt;/a> covers local storage pool creation; for cluster scenarios, set up local ZFS before joining nodes to the cluster. For backup strategy across a cluster, the &lt;a href="https://techfuelhq.com/tutorials/proxmox-backup-server-3-2-1-2026/">Proxmox Backup Server guide&lt;/a> covers PBS with cluster-aware storage repos.&lt;/em>&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://pve.proxmox.com/wiki/Cluster_Manager" rel="noopener">Proxmox VE Cluster Manager&lt;/a> &amp;ndash; official wiki for pvecm, corosync, quorum, and QDevice setup.&lt;/li>
&lt;li>&lt;a href="https://pve.proxmox.com/wiki/High_Availability" rel="noopener">Proxmox VE High Availability&lt;/a> &amp;ndash; official docs for ha-manager, groups, fencing, and the watchdog.&lt;/li>
&lt;li>&lt;a href="https://pve.proxmox.com/wiki/Storage" rel="noopener">Proxmox VE Storage&lt;/a> &amp;ndash; official reference for NFS, iSCSI, and other shared storage used by HA and live migration.&lt;/li>
&lt;li>&lt;a href="https://pve.proxmox.com/wiki/Deploy_Hyper-Converged_Ceph_Cluster" rel="noopener">Deploy Hyper-Converged Ceph Cluster&lt;/a> &amp;ndash; official wiki for the Ceph distributed storage option run on cluster nodes.&lt;/li>
&lt;/ul></description></item><item><title>Wi-Fi 7 for the Homelab and Home Network in 2026: Is It Worth It?</title><link>https://techfuelhq.com/networking/wifi-7-homelab-home-network-2026/</link><pubDate>Tue, 16 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/networking/wifi-7-homelab-home-network-2026/</guid><description>&lt;p>Every Wi-Fi 7 router box prints a number that no device on your network will ever hit. The marketing says 46 Gbps. Your laptop will see a few. That gap is the whole story of whether Wi-Fi 7 is worth it in 2026, and the honest answer depends almost entirely on what you actually run.&lt;/p>
&lt;p>For a homelab the wireless generation barely matters, because the gear you care about is wired. For a busy house with multi-gig internet and a stack of latency-sensitive clients, the new standard earns its price for one feature that has nothing to do with the headline speed. Here is where each case lands.&lt;/p>
&lt;img src="https://techfuelhq.com/images/networking/wifi-7-homelab-home-network-2026.svg" width="1200" height="720" loading="lazy" decoding="async" alt="Four 2026 Wi-Fi 7 router tiers compared: entry dual-band under $100 that omits 6 GHz and 320 MHz, the mid-range tri-band sweet spot at $200 to $350 with 6 GHz, MLO, and multi-gig ports, traditional flagships at $500 to $600 with dual 10GbE, and Wi-Fi 7 mesh kits at $1,000 to $1,800 that need wired backhaul, with the mid-range tri-band tier flagged as the recommended pick." style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;h2 id="what-wi-fi-7-80211be-actually-is-and-when-it-shipped">What Wi-Fi 7 (802.11be) actually is, and when it shipped&lt;/h2>
&lt;h3 id="the-extremely-high-throughput-standard-and-the-january-2024-launch">The &amp;ldquo;Extremely High Throughput&amp;rdquo; standard and the January 2024 launch&lt;/h3>
&lt;p>Wi-Fi 7 is the IEEE 802.11be standard, branded Extremely High Throughput (EHT). The Wi-Fi Alliance launched its Wi-Fi CERTIFIED 7 interoperability program on January 8, 2024 in Austin, Texas. That date is when the ecosystem got a stamp that one vendor&amp;rsquo;s Wi-Fi 7 router and another vendor&amp;rsquo;s Wi-Fi 7 client are supposed to talk to each other correctly. The Alliance projected 233 million Wi-Fi 7 devices shipping in 2024, growing to 2.1 billion by 2028, so this is the generation most new phones, laptops, and routers ship with now whether or not you went looking for it.&lt;/p>
&lt;h3 id="the-three-real-upgrades-320-mhz-channels-4k-qam-and-multi-link-operation">The three real upgrades: 320 MHz channels, 4K-QAM, and Multi-Link Operation&lt;/h3>
&lt;p>There are three headline features over Wi-Fi 6E, and they are worth understanding because two of them are conditional and one of them is the reason to buy in.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>320 MHz channels&lt;/strong> — double Wi-Fi 6E&amp;rsquo;s 160 MHz, but available only where regulators have opened the 6 GHz band. This is where the big peak numbers come from, and it only exists at 6 GHz.&lt;/li>
&lt;li>&lt;strong>4K-QAM (4096-QAM)&lt;/strong> — a denser modulation that achieves 20% higher transmission rates than the 1024-QAM used in Wi-Fi 6. It needs a clean, strong signal to hold, so it helps most close to the access point.&lt;/li>
&lt;li>&lt;strong>Multi-Link Operation (MLO)&lt;/strong> — simultaneous transmit and receive over multiple links. This is the feature that actually changes how the network feels, and I will come back to it.&lt;/li>
&lt;/ul>
&lt;p>Per the Wi-Fi Alliance, 320 MHz channels raise the peak modulation-coding-scheme data rate from 2.409 Gbps in Wi-Fi 6 to 5.7648 Gbps for a two-spatial-stream (2x2) device. Hold onto that 5.76 Gbps number — it is the honest ceiling for a normal client.&lt;/p>
&lt;h2 id="marketing-peak-numbers-vs-real-world-throughput">Marketing peak numbers vs real-world throughput&lt;/h2>
&lt;h3 id="where-the-46-gbps-headline-comes-from">Where the 46 Gbps headline comes from&lt;/h3>
&lt;p>Wi-Fi 7&amp;rsquo;s theoretical maximum data rate is about 46 Gbps, versus roughly 9.6 Gbps for Wi-Fi 6/6E. That figure assumes a high-end multi-antenna access point running every band at once under ideal conditions. It describes the whole AP&amp;rsquo;s aggregate capacity, not what a single client pulls down. No phone, no laptop, no anything you own gets near it. It is the headline on the box and nothing more.&lt;/p>
&lt;h3 id="the-honest-2x2-client-ceiling-and-the-6-ghz-requirement">The honest 2x2-client ceiling and the 6 GHz requirement&lt;/h3>
&lt;p>A realistic 2x2 client device supporting 320 MHz channels, 4096-QAM, and MLO has a theoretical maximum of 5.76 Gbps — far below the 46 Gbps quoted for whole-AP capacity. And even that requires the 320 MHz channels that exist only in the 6 GHz band. On 2.4 GHz and 5 GHz the headline throughput is simply unachievable, and most client devices will not see the theoretical figures regardless. If a client lacks 6 GHz, or sits in a region where wide 6 GHz channels are not available, the top rates are off the table before you start.&lt;/p>
&lt;h3 id="what-field-trials-and-benchmarks-actually-measured">What field trials and benchmarks actually measured&lt;/h3>
&lt;p>The real numbers are good, just not magic. An earlier Wireless Broadband Alliance residential Wi-Fi 7 field trial measured real-world throughput consistently above 3.5 Gbps — well below theoretical peaks but a strong result for wireless. Independent benchmarking lines up with that: Wi-Fi 7 sustained over 1 Gbps up to 40 feet from the AP in the 6 GHz band, hit up to about 3.7 Gbps downlink at close range with a 320 MHz channel, and held 2+ Gbps across the same floor as the AP.&lt;/p>
&lt;p>So the mental model is: a few hundred MB/s to roughly 450 MB/s at close range under good conditions, dropping to gigabit-class at distance. That is a real upgrade over a high-speed Wi-Fi 6 router, which typically maxes practical throughput around 1 Gbps. It is not a 46 Gbps anything.&lt;/p>
&lt;h2 id="multi-link-operation-the-feature-that-matters-most">Multi-Link Operation: the feature that matters most&lt;/h2>
&lt;h3 id="how-mlo-aggregates-bands-and-cuts-latency">How MLO aggregates bands and cuts latency&lt;/h3>
&lt;p>MLO lets one client and AP establish multiple band links — for example 5 GHz plus 6 GHz — simultaneously under a single association. Instead of being stuck on one band at a time and re-associating when conditions change, the connection aggregates throughput across links and, more usefully, routes traffic over whichever link is cleaner at that instant. That is what lowers latency and smooths out jitter.&lt;/p>
&lt;h3 id="field-trial-latency-numbers-and-what-wired-like-means">Field-trial latency numbers and what &amp;ldquo;wired-like&amp;rdquo; means&lt;/h3>
&lt;p>This is where the recent data is genuinely interesting. In the Wireless Broadband Alliance / CableLabs / Intel Phase 2 residential field trial, completed February 26, 2026 in a 4,500 sq ft home, Wi-Fi 7 MLO doubled throughput under interference and cut application-layer latency by 35-48%, with up to a 40% reduction in MAC-layer jitter — delivering wired-like determinism.&lt;/p>
&lt;p>For a competitive gamer or anyone living on video calls, that consistency matters more than a higher peak download number ever will. A connection that holds steady under interference is the upgrade you feel; a bigger ceiling you never reach is the one you only read about. If your edge router is the bottleneck for that traffic, the &lt;a href="https://techfuelhq.com/networking/homelab-firewall-router-stack-2026/">homelab firewall and router stack comparison&lt;/a> covers where routing and WireGuard throughput actually cap out.&lt;/p>
&lt;h2 id="does-wi-fi-7-help-a-homelab-mostly-no-with-caveats">Does Wi-Fi 7 help a homelab? Mostly no, with caveats&lt;/h2>
&lt;h3 id="servers-and-nas-are-wired--the-wireless-gen-rarely-touches-them">Servers and NAS are wired — the wireless gen rarely touches them&lt;/h3>
&lt;p>Here is the part vendors will not put on the box: for a homelab, the priority is a strong wired Ethernet backbone, because servers and NAS boxes are wired. Your Proxmox host, your TrueNAS box, your hypervisor cluster — none of them talk over Wi-Fi, and the traffic you care about most never touches the wireless radio. Spending on the wireless generation to speed up a homelab is solving the wrong problem.&lt;/p>
&lt;p>The money is better spent on the wired side. 2.5GbE is widely viewed as the 2026 sweet spot, while 10GbE is justified mainly for editing 4K off a NAS, large simultaneous backups, moving terabytes, or VM storage over the network. I broke that tradeoff down in detail in &lt;a href="https://techfuelhq.com/networking/25gbe-vs-10gbe-homelab-2026/">2.5GbE vs 10GbE for the homelab&lt;/a>, and the short version holds here: moving to 10GbE means upgrading every device in the chain, a 10GbE switch can cost roughly three times a gigabit switch with the same port count, and NAS performance is often capped by mechanical hard drives long before 10GbE is saturated. None of that changes because a new Wi-Fi standard exists.&lt;/p>
&lt;h3 id="where-wi-fi-7-does-help-the-homelab">Where Wi-Fi 7 does help the homelab&lt;/h3>
&lt;p>The caveat is real, though. Wi-Fi 7 helps your homelab at the edge: the laptop you administer from, the phone running dashboards, roaming clients that move around the house, and dense IoT environments where a lot of small devices contend for airtime. If you back up a laptop to the NAS over wireless, or pull large files to a tablet, the higher ceiling and MLO consistency show up there. Just keep it in proportion — that is the client experience, not the core of the lab.&lt;/p>
&lt;h2 id="the-wired-backhaul-reality-25gbe-vs-10gbe">The wired backhaul reality: 2.5GbE vs 10GbE&lt;/h2>
&lt;h3 id="why-a-wi-fi-7-router-needs-multi-gig-ports-to-mean-anything">Why a Wi-Fi 7 router needs multi-gig ports to mean anything&lt;/h3>
&lt;p>A Wi-Fi 7 client can exceed 2 Gbps. If the router it connects to has only gigabit Ethernet ports, that router is a fast engine on a narrow straw — the wired uplink and any wired devices are bottlenecked back down to a single gigabit. This is why Wi-Fi 7 routers commonly include multi-gig Ethernet (2.5G, 5G, or 10G) on WAN and LAN. Without a multi-gig backbone, the wireless ceiling is academic. Look for at least a 2.5GbE WAN/LAN port; flagships add 10GbE.&lt;/p>
&lt;h3 id="mesh-backhaul-the-1gbe-trap">Mesh backhaul: the 1GbE trap&lt;/h3>
&lt;p>Mesh is where this bites hardest. Most mesh nodes still use only 1GbE wired backhaul, which caps wired-backhauled throughput to gigabit. A Wi-Fi 7 mesh cannot show its full capability without 2.5GbE-or-faster backhaul, and wiring at least one node back to the gateway materially improves mesh performance. If you are buying a Wi-Fi 7 mesh kit and running it on gigabit backhaul, you paid for a ceiling you capped yourself.&lt;/p>
&lt;h3 id="25gbe-as-the-2026-sweet-spot-vs-the-cost-of-going-10gbe">2.5GbE as the 2026 sweet spot vs the cost of going 10GbE&lt;/h3>
&lt;p>For most homes and homelabs, 2.5GbE is the right backbone in 2026: it runs on existing cabling, it is cheap, and it clears the gigabit bottleneck that makes Wi-Fi 7 pointless. 10GbE is the answer only for the specific NAS and VM workloads above. If you want concrete gear picks, &lt;a href="https://techfuelhq.com/articles/best-homelab-networking-gear-under-200/">the best homelab networking gear under $200&lt;/a> and the &lt;a href="https://techfuelhq.com/networking/10gbe-home-networking-budget-2026/">budget 10GbE home networking guide&lt;/a> both cover switches and NICs that pair with a Wi-Fi 7 router without overspending.&lt;/p>
&lt;h2 id="client-support-and-availability-reality-in-2026">Client-support and availability reality in 2026&lt;/h2>
&lt;h3 id="chipsets-youll-actually-encounter">Chipsets you&amp;rsquo;ll actually encounter&lt;/h3>
&lt;p>The client chip decides what you actually get. In smartphones, Qualcomm&amp;rsquo;s FastConnect 7800 is the widely used Wi-Fi 7 client chip in flagship phones. Intel dominates Wi-Fi 7 laptop modules — the BE200, BE201, and BE202 — and Broadcom powers most high-end routers. Intel&amp;rsquo;s BE200 (Gale Peak 2) is the common one you will find in a laptop or as an add-in card: it supports MLO, 4096-QAM, and 320 MHz channels, with 6 GHz at 320 MHz rated at 5800 Mbps and a maximum PHY rate up to 8774 Mbps.&lt;/p>
&lt;h3 id="the-amd-platform-and-320-mhz-gotchas">The AMD-platform and 320 MHz gotchas&lt;/h3>
&lt;p>Two traps worth knowing before you buy a card. First, many BE200 cards are limited to Intel CPU platforms and do not support AMD — if you are putting one in an AMD desktop or laptop, check compatibility first, because plenty of people have bought one and found it would not initialize. Second, the top speeds require 320 MHz channels, which exist only in the 6 GHz band; only three 320 MHz channels fit in the US 6 GHz band, and US 6 GHz operation has to coexist with tens of thousands of incumbent licensed users between 5.925 and 7.125 GHz. The practical effect is that 320 MHz is a best-case, close-range, clean-spectrum scenario, not a guarantee.&lt;/p>
&lt;h2 id="should-you-upgrade-or-stay-on-wi-fi-6--6e">Should you upgrade, or stay on Wi-Fi 6 / 6E?&lt;/h2>
&lt;p>This is the decision section. Sort yourself into one of these and the answer falls out. One thing to rule out first: if your complaint is a connection that keeps &lt;em>dropping&lt;/em> rather than one that is merely slow, no router generation fixes that — work through &lt;a href="https://techfuelhq.com/articles/wifi-keeps-disconnecting-2026/">Wi-Fi that keeps disconnecting&lt;/a> before you spend anything.&lt;/p>
&lt;p>&lt;strong>Stay on Wi-Fi 6/6E if:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>You have gigabit-or-slower internet. Even high-speed Wi-Fi 6 routers typically max practical throughput around 1 Gbps, and your plan is the limit, not your radio.&lt;/li>
&lt;li>Your core is all-wired — servers, NAS, desktop on Ethernet.&lt;/li>
&lt;li>You have no 6 GHz clients. Without 6 GHz, the marquee Wi-Fi 7 features do not apply, and the practical gain is small.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Upgrade to Wi-Fi 7 if:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>You have multi-gig internet. ISPs increasingly offer multi-gig plans — AT&amp;amp;T and Frontier at 5 Gbps, Ziply Fiber at 10 Gbps — and that is exactly where Wi-Fi 7&amp;rsquo;s higher ceiling becomes useful.&lt;/li>
&lt;li>You have a busy, dense client environment — a household full of phones, laptops, TVs, and IoT all contending at once.&lt;/li>
&lt;li>You are latency-sensitive: competitive gaming, heavy video conferencing, anything where consistent latency beats peak download speed.&lt;/li>
&lt;/ul>
&lt;p>Wi-Fi 7 is most worth it for multi-gig internet, busy households, gamers, and work-from-home users who value consistent latency — the same households, incidentally, most likely to run into a monthly data cap, which the &lt;a href="https://techfuelhq.com/tools/data-usage-calculator/">data usage calculator&lt;/a> will size for you. On a standard gigabit-or-slower plan, the gains are mainly better multi-device handling and lower latency rather than dramatically faster top speed — and that may still be enough reason on its own, just go in knowing that is what you are buying.&lt;/p>
&lt;h2 id="pricing-snapshot-for-2026">Pricing snapshot for 2026&lt;/h2>
&lt;p>Wi-Fi 7 router pricing in 2026 spans a wide range, and the right tier depends on whether you need 6 GHz and multi-gig ports at all.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Tier&lt;/th>
&lt;th scope="col">Price&lt;/th>
&lt;th scope="col">Notes&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Entry dual-band&lt;/td>
&lt;td>Under $100&lt;/td>
&lt;td>e.g. TP-Link Archer BE3600 — omits 6 GHz, so no 320 MHz&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Mid-range tri-band&lt;/td>
&lt;td>~$200–$350&lt;/td>
&lt;td>The sweet spot: 6 GHz, MLO, usually multi-gig ports&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Traditional flagship&lt;/td>
&lt;td>~$500–$600&lt;/td>
&lt;td>e.g. Archer BE800 (~$599) with dual 10GbE&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Wi-Fi 7 mesh kit&lt;/td>
&lt;td>~$1,000–$1,800&lt;/td>
&lt;td>e.g. eero Max 7, Orbi 970&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The entry tier is the trap. A sub-$100 dual-band Wi-Fi 7 router that omits 6 GHz cannot do 320 MHz channels, so you are paying for the label without the feature that justifies it. If you are going to buy in, the mid-range tri-band tier around $200–$350 is where the actual Wi-Fi 7 experience starts, and it usually includes the 2.5GbE port you need for it to matter. The mesh kits only make sense if you also wire the backhaul.&lt;/p>
&lt;h2 id="bottom-line-who-wi-fi-7-is-genuinely-for-in-2026">Bottom line: who Wi-Fi 7 is genuinely for in 2026&lt;/h2>
&lt;p>For a homelab, Wi-Fi 7 is not a priority — put that money into a 2.5GbE wired backbone and a router that can route. For a home network, the answer turns on two things: do you have multi-gig internet or a wired path that can feed it, and do you have the kind of busy, latency-sensitive client mix that MLO actually helps. If yes to both, the mid-range tri-band tier is a real upgrade and MLO is the reason. If your internet is gigabit, your core is wired, and you have no 6 GHz clients, stay where you are — Wi-Fi 6E already does almost everything you would feel, and the 46 Gbps on the box was never coming home.&lt;/p></description></item><item><title>$1,000 Local AI Workstation: RTX 5080-Class Build Guide (2026)</title><link>https://techfuelhq.com/articles/1000-local-ai-workstation-rtx-5080-2026/</link><pubDate>Mon, 15 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/1000-local-ai-workstation-rtx-5080-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-15 · ~15 min read · St. Louis County, MO&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Current cost — June 2026 (shortage-adjusted).&lt;/strong> The 2026 AI-driven DRAM/NAND shortage has hit this build&amp;rsquo;s memory and storage hard since these tables were priced: the &lt;strong>64GB DDR5-6000 kit now runs ~$600+&lt;/strong> (was $130) and &lt;strong>32GB ~$420–$460&lt;/strong> (was $75), and the 1TB NVMe drives have roughly doubled (&lt;del>$120–$160). That pushes the real totals to roughly **&lt;/del>$2,800 for the Maximum build and ~$1,550 for the Value build** &lt;em>(64GB figure per &lt;a href="https://www.tomshardware.com/pc-components/ram/ram-price-index-2026-lowest-price-on-ddr5-and-ddr4-memory-of-all-capacities" rel="noopener">Tom&amp;rsquo;s Hardware&amp;rsquo;s RAM price tracker&lt;/a>; 32GB live Amazon, June 2026)&lt;/em>. The build tables below are the &lt;strong>pre-shortage reference&lt;/strong> — every non-memory/storage part is about what it was. See the &lt;a href="https://techfuelhq.com/articles/ram-ssd-price-crisis-2026/">2026 RAM and SSD price crisis&lt;/a> for why, and the &lt;a href="https://techfuelhq.com/pc-builds/budget-am5-1080p-gaming-pc-2026/">budget AM5 build&lt;/a> for a fully current-priced build.&lt;/p>&lt;/blockquote>
&lt;img src="https://techfuelhq.com/images/articles/1000-local-ai-workstation-rtx-5080-2026.svg" alt="Side-by-side comparison of two local AI workstation builds: the ~$1,180 Value Inference build (RTX 5060 Ti 16GB, Ryzen 5 7600X, 32GB DDR5) versus the ~$2,250 Maximum Performance build (ROG Astral RTX 5080 OC, Ryzen 7 7800X3D, 64GB DDR5) — both sharing 16GB VRAM for the same 8B-24B model tier, with cloud break-even in 4 months at 20M tokens/day." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>The inflection point for local AI inference happened somewhere around late 2024. Quantized versions of capable large language models started fitting in 16GB of VRAM. Inference libraries matured to where CPU→GPU bottlenecks largely vanished. And cloud API costs for heavy users got expensive enough that the math started working in local hardware&amp;rsquo;s favor.&lt;/p>
&lt;p>This is what a well-reasoned local AI workstation looks like at the $1,000–1,500 price point in 2026, what you can actually run on it, and an honest answer to whether it makes financial sense versus paying per token.&lt;/p>
&lt;h2 id="what-local-ai-workstation-means-here">What &amp;ldquo;local AI workstation&amp;rdquo; means here&lt;/h2>
&lt;p>A dedicated machine (or a homelab node) running an open-weight LLM via llama.cpp, Ollama, LM Studio, or a similar inference runtime — available to you at zero per-token cost, with full privacy, no internet dependency, and the latency of your local network.&lt;/p>
&lt;p>This is not a training rig. Training LLMs requires far more VRAM and takes weeks on consumer hardware. This is inference — loading and running a pre-trained model — which is tractable on consumer GPUs with the right quantization.&lt;/p>
&lt;h2 id="the-gpu-is-the-only-constraint-that-matters">The GPU is the only constraint that matters&lt;/h2>
&lt;p>For local AI inference, VRAM is the primary constraint. Model performance scales with VRAM — not CPU speed, not RAM speed (mostly), not storage IO. The entire model weights need to fit in GPU VRAM for full-speed inference. If they don&amp;rsquo;t, layers fall back to system RAM or disk, and throughput drops by 5–20× depending on how much spills over. Two calculators take the guesswork out of this: the &lt;a href="https://techfuelhq.com/tools/llm-vram-calculator/">LLM VRAM calculator&lt;/a> shows whether a given model and quantization fit your card, and the &lt;a href="https://techfuelhq.com/tools/llm-speed-calculator/">LLM speed calculator&lt;/a> estimates the tokens/sec you&amp;rsquo;ll get from your GPU&amp;rsquo;s memory bandwidth.&lt;/p>
&lt;p>&lt;strong>RTX 5080: 16GB GDDR7.&lt;/strong> At 4-bit quantization (Q4_K_M, the standard for quality/size tradeoff — roughly 0.6 bytes per parameter, per the VRAM calculator), 16GB fits:&lt;/p>
&lt;ul>
&lt;li>Llama 3.1 8B — ~4.9GB, runs fast with giant context windows&lt;/li>
&lt;li>Phi-4 14B / Qwen2.5 14B — ~9GB, the current sweet spot for quality per gigabyte&lt;/li>
&lt;li>Mistral Small 24B — ~14GB, the largest class that fits with real context headroom&lt;/li>
&lt;li>Gemma 3 27B — the ceiling case: ~16GB at Q4_K_M, so it needs a Q3-class quant or partial offload&lt;/li>
&lt;li>What does NOT fit: the 70B class. Llama 3.3 70B at Q4_K_M is a ~42GB file, Qwen2.5 72B ~47GB, and Mixtral 8x7B ~26GB. Those run only with most layers offloaded to system RAM, at single-digit tokens/second.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>RTX 5060 Ti 16GB: same VRAM, 60% of the throughput&lt;/strong> on large models. At current pricing (RTX 5060 Ti 16GB ~$450–500, RTX 5080 ~$1,000–1,100), the 5060 Ti has a dramatically better AI inference $/GB-VRAM ratio. The 5080 makes sense if you also game at 4K, run video production work, or want the absolute fastest inference. Both are 16GB cards, so both live in the same VRAM tier for what fits; for the full map of which models each capacity actually runs — 8GB through 48GB+, with real GGUF file sizes — see &lt;a href="https://techfuelhq.com/articles/local-llm-by-gpu-vram-2026/">which local LLM fits your GPU by VRAM&lt;/a>.&lt;/p>
&lt;h2 id="component-build">Component build&lt;/h2>
&lt;p>This is the build I run: Ryzen 7 7800X3D + ROG Astral RTX 5080 OC. Not the most cost-efficient for pure inference, but the 7800X3D&amp;rsquo;s cache benefits gaming when the GPU isn&amp;rsquo;t running inference, and the 5080 handles everything I throw at it. Prices are approximate as of June 2026 and shift week to week.&lt;/p>
&lt;p>&lt;strong>Maximum performance build (~$2,800 today / ~$2,250 pre-shortage, GPU-heavy):&lt;/strong>&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Component&lt;/th>
&lt;th scope="col">Part&lt;/th>
&lt;th scope="col">~Price&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>CPU&lt;/td>
&lt;td>AMD Ryzen 7 7800X3D&lt;/td>
&lt;td>$350&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Motherboard&lt;/td>
&lt;td>ASUS ROG STRIX B650-A WiFi&lt;/td>
&lt;td>$220&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>RAM&lt;/td>
&lt;td>64GB DDR5-6000 (2×32GB)&lt;/td>
&lt;td>$130&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GPU&lt;/td>
&lt;td>ASUS ROG Astral RTX 5080 OC&lt;/td>
&lt;td>$1,100&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Storage&lt;/td>
&lt;td>Samsung 980 Pro 1TB NVMe&lt;/td>
&lt;td>$90&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>PSU&lt;/td>
&lt;td>EVGA SuperNOVA 1000 GT&lt;/td>
&lt;td>$140&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>CPU Cooler&lt;/td>
&lt;td>NZXT Kraken 360 AIO&lt;/td>
&lt;td>$120&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Case&lt;/td>
&lt;td>Fractal North / Meshify C&lt;/td>
&lt;td>$100&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Total (pre-shortage ref.)&lt;/strong>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;strong>~$2,250&lt;/strong> · &lt;em>~$2,800 at current RAM/SSD prices&lt;/em>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>This is literally the system I&amp;rsquo;m running. The 7800X3D is overkill for inference — it&amp;rsquo;s there for gaming. A Ryzen 5 7600X at $200 would perform identically for LLM inference. To verify PSU sizing for your specific component selection, the &lt;a href="https://techfuelhq.com/tools/psu-wattage-calculator/">PSU Wattage Calculator&lt;/a> shows peak draw and efficiency headroom at a glance.&lt;/p>
&lt;p>&lt;strong>Value inference build (~$1,550 today / ~$1,180 pre-shortage):&lt;/strong>&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Component&lt;/th>
&lt;th scope="col">Part&lt;/th>
&lt;th scope="col">~Price&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>CPU&lt;/td>
&lt;td>AMD Ryzen 5 7600X&lt;/td>
&lt;td>$190&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Motherboard&lt;/td>
&lt;td>MSI B650 Tomahawk WiFi&lt;/td>
&lt;td>$170&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>RAM&lt;/td>
&lt;td>32GB DDR5-5200 (2×16GB)&lt;/td>
&lt;td>$75&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GPU&lt;/td>
&lt;td>RTX 5060 Ti 16GB&lt;/td>
&lt;td>$480&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Storage&lt;/td>
&lt;td>WD Blue SN580 1TB NVMe&lt;/td>
&lt;td>$65&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>PSU&lt;/td>
&lt;td>Corsair RM750e&lt;/td>
&lt;td>$90&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>CPU Cooler&lt;/td>
&lt;td>Thermalright Peerless Assassin 120&lt;/td>
&lt;td>$40&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Case&lt;/td>
&lt;td>Fractal Pop Air&lt;/td>
&lt;td>$70&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Total (pre-shortage ref.)&lt;/strong>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;strong>~$1,180&lt;/strong> · &lt;em>~$1,550 at current RAM/SSD prices&lt;/em>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The 5060 Ti 16GB is the correct choice here. Same VRAM as the 5080, handles all the same models — just at about half the token rate (448 vs ~960 GB/s bandwidth): roughly 25–35 tokens/second on a 14B Q4 model against the 5080&amp;rsquo;s 50–65. For interactive use, you won&amp;rsquo;t feel the difference in a real conversation. For batch processing thousands of requests, you will.&lt;/p>
&lt;h2 id="what-to-install">What to install&lt;/h2>
&lt;p>&lt;strong>Ollama&lt;/strong> is the fastest path to a working inference server. It handles model downloads, VRAM allocation, and exposes a local API compatible with OpenAI&amp;rsquo;s format:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Install&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>curl -fsSL https://ollama.com/install.sh | sh
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Pull and run Qwen2.5 14B (Q4_K_M by default — a ~9GB fit in 16GB VRAM)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ollama pull qwen2.5:14b
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Start inference server&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ollama serve
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Ollama listens on port 11434. The OpenAI-compatible API endpoint is at &lt;code>/v1/chat/completions&lt;/code> — configure any OpenAI SDK to point at &lt;code>http://localhost:11434/v1&lt;/code> and it works without code changes.&lt;/p>
&lt;p>&lt;strong>llama.cpp&lt;/strong> for more control over quantization, batch size, and GPU layers:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Build with CUDA support&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>git clone https://github.com/ggerganov/llama.cpp
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cd llama.cpp
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cmake -B build -DLLAMA_CUDA&lt;span style="color:#f92672">=&lt;/span>ON
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cmake --build build -j&lt;span style="color:#66d9ef">$(&lt;/span>nproc&lt;span style="color:#66d9ef">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Run with full GPU offload&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>./build/bin/llama-server &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> -m /models/mistral-small-24b-Q4_K_M.gguf &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --n-gpu-layers &lt;span style="color:#ae81ff">999&lt;/span> &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --ctx-size &lt;span style="color:#ae81ff">8192&lt;/span> &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --host 0.0.0.0 --port &lt;span style="color:#ae81ff">8080&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The &lt;code>--n-gpu-layers 999&lt;/code> flag loads all layers to the GPU. If you exceed VRAM, layers fall back to CPU automatically — the number just means &amp;ldquo;as many as fit.&amp;rdquo;&lt;/p>
&lt;p>&lt;strong>Open WebUI&lt;/strong> for a ChatGPT-like interface over your local Ollama:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>docker run -d --gpus all &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> -p 3000:8080 &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> -v open-webui:/app/backend/data &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --add-host&lt;span style="color:#f92672">=&lt;/span>host.docker.internal:host-gateway &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> ghcr.io/open-webui/open-webui:cuda
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Open &lt;code>http://localhost:3000&lt;/code>, connect to Ollama at &lt;code>http://host.docker.internal:11434&lt;/code>.&lt;/p>
&lt;h2 id="the-financial-math">The financial math&lt;/h2>
&lt;p>Cloud API pricing as of June 2026 (approximate, check current pricing):&lt;/p>
&lt;ul>
&lt;li>OpenAI GPT-4o: ~$2.50/1M input tokens, ~$10/1M output tokens&lt;/li>
&lt;li>Anthropic Claude 3.5 Haiku: ~$0.80/1M input, ~$4/1M output&lt;/li>
&lt;li>Meta Llama 3.3 via Groq: ~$0.59/1M tokens&lt;/li>
&lt;/ul>
&lt;p>For comparison: a local open-weight model (the 8B–24B class this card actually fits) at zero marginal cost per token.&lt;/p>
&lt;p>&lt;strong>Break-even analysis at different usage levels:&lt;/strong>&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Daily usage&lt;/th>
&lt;th scope="col">Cloud cost/month (Llama via API ~$0.60/1M)&lt;/th>
&lt;th scope="col">Local electricity/month&lt;/th>
&lt;th scope="col">Break-even on $1,200 build&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>100K tokens&lt;/td>
&lt;td>~$1.80&lt;/td>
&lt;td>~$15–20&lt;/td>
&lt;td>Never (cloud cheaper)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>1M tokens&lt;/td>
&lt;td>~$18&lt;/td>
&lt;td>~$15–20&lt;/td>
&lt;td>Effectively never — electricity alone eats the savings&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>5M tokens&lt;/td>
&lt;td>~$90&lt;/td>
&lt;td>~$15–20&lt;/td>
&lt;td>17 months&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>20M tokens&lt;/td>
&lt;td>~$360&lt;/td>
&lt;td>~$15–20&lt;/td>
&lt;td>4 months&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The tipping point is somewhere around 2–3M tokens per day for a non-GPU-optimized cloud model. If you&amp;rsquo;re running summarization pipelines, document processing, coding assistants, or anything generating volume, local inference wins quickly.&lt;/p>
&lt;p>&lt;strong>Privacy factor.&lt;/strong> If your workload involves sensitive documents — contracts, medical records, proprietary code, personal communications — local inference isn&amp;rsquo;t just cheaper past the break-even point; it&amp;rsquo;s the only option that keeps data off external servers. That value is real even if you can&amp;rsquo;t put a dollar figure on it.&lt;/p>
&lt;h2 id="power-cost-over-3-years">Power cost over 3 years&lt;/h2>
&lt;p>Using the &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">Power &amp;amp; Cost Calculator&lt;/a> for the full build:&lt;/p>
&lt;ul>
&lt;li>Idle (no inference): ~85W&lt;/li>
&lt;li>Under inference load: ~280–380W depending on model size, batch size, and GPU utilization&lt;/li>
&lt;li>At 4 hours/day inference load + 20 hours idle, $0.13/kWh: roughly $10–14/month&lt;/li>
&lt;/ul>
&lt;p>Over 3 years: ~$360–500 in electricity for the GPU workstation. That&amp;rsquo;s the operating cost to factor into your break-even calculation. At $1,200 hardware + $480 electricity = $1,680 total 3-year cost. Compare to how much you&amp;rsquo;d spend on tokens. For a closer look at how draw and throughput behave under continuous load, the breakdown of &lt;a href="https://techfuelhq.com/articles/rtx-5080-perf-per-watt-ai-24-7-2026/">RTX 5080 performance per watt running AI 24/7&lt;/a> measures where the power actually goes during inference.&lt;/p>
&lt;h2 id="what-a-build-like-this-earns-its-keep-on">What a build like this earns its keep on&lt;/h2>
&lt;p>The workload mix a 16GB local-inference box handles well:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Coding assistance&lt;/strong> — Qwen2.5-Coder-14B via the Continue.dev extension in VS Code. Fits in VRAM with room for context, no token costs, no code leaving the machine. (The 32B coder variant is a ~20GB file — it runs only with partial offload and a real speed penalty.)&lt;/li>
&lt;li>&lt;strong>Document summarization&lt;/strong> — batch-processing PDFs through a local API endpoint at zero marginal cost.&lt;/li>
&lt;li>&lt;strong>Image generation&lt;/strong> — ComfyUI with FLUX.1 models. The 16GB VRAM handles full-res generation without offloading.&lt;/li>
&lt;li>&lt;strong>Research drafting&lt;/strong> — a long-context 14B with 8K+ context for drafting sections with citations.&lt;/li>
&lt;/ul>
&lt;p>A setup like this doesn&amp;rsquo;t replace cloud APIs entirely — frontier models still win where answer quality matters more than volume. But the bulk-token workloads (summarization, coding autocomplete, drafts) are exactly the ones that move local — and once the LLM is running, the rest of a &lt;a href="https://techfuelhq.com/articles/self-hosted-ai-stack-2026/">self-hosted AI stack&lt;/a> (image generation, speech, a coding backend) drops onto the same box.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Want to see the RTX 5080&amp;rsquo;s specs and photos up close? The &lt;a href="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/">dataset page&lt;/a> has the full breakdown. For keeping this workstation running efficiently, see the &lt;a href="https://techfuelhq.com/articles/rtx-5080-undervolt-guide-2026/">undervolt guide&lt;/a>. Running a lower-cost GPU for local AI? The &lt;a href="https://techfuelhq.com/tutorials/self-host-local-llm-rtx-5060-2026/">RTX 5060 local LLM setup tutorial&lt;/a> covers Ollama, llama.cpp, and Open WebUI from scratch.&lt;/em>&lt;/p></description></item><item><title>AudioBookshelf Docker Setup: Self-Hosted Audiobooks (2026)</title><link>https://techfuelhq.com/tutorials/audiobookshelf-docker-setup-2026/</link><pubDate>Mon, 15 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tutorials/audiobookshelf-docker-setup-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-15 · ~10 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/tutorials/audiobookshelf-docker-setup-2026.svg" alt="Architecture diagram of an AudioBookshelf Docker deployment: web and iOS/Android clients connect over Tailscale or Nginx Proxy Manager to a single audiobookshelf container on port 13378 mapped to internal port 80, running library scanner, per-user progress sync, metadata matching and podcast fetcher, with four mounted volumes (/audiobooks, /podcasts, /config, /metadata) and external metadata sources Audible, Open Library, Google Books and podcast RSS feeds." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>AudioBookshelf is a single Docker container that turns a folder of audiobook files into a real library server: per-user progress sync, metadata matching, mobile apps, and podcast RSS support. It&amp;rsquo;s the most complete Audible replacement available for self-hosting, and it&amp;rsquo;s one of the simplest installs on the self-hosted stack.&lt;/p>
&lt;h2 id="what-you-get">What you get&lt;/h2>
&lt;ul>
&lt;li>Web interface for browsing and streaming from any browser&lt;/li>
&lt;li>iOS and Android apps (official, free) with progress sync&lt;/li>
&lt;li>Per-user accounts (track your books separately from family members)&lt;/li>
&lt;li>Metadata matching from Open Library, Google Books, Audible&lt;/li>
&lt;li>Podcast RSS support with auto-download&lt;/li>
&lt;li>M4B chapter detection, speed controls, sleep timer&lt;/li>
&lt;li>~100 MB idle RAM — negligible on any shared host&lt;/li>
&lt;/ul>
&lt;p>No companion containers needed. No database service (uses SQLite internally, appropriate here because it&amp;rsquo;s single-threaded read-heavy, not concurrent-write heavy like n8n). One container, one volume mount.&lt;/p>
&lt;h2 id="directory-structure-for-your-library">Directory structure for your library&lt;/h2>
&lt;p>AudioBookshelf scans a directory to build its library. The expected layout for audiobooks:&lt;/p>
&lt;pre tabindex="0">&lt;code>/audiobooks/
Author Name/
Book Title/
Book Title.m4b
Another Book/
Another Book.m4b
Second Author/
Series Name/
Series Name, Book 1.m4b
Series Name, Book 2.m4b
&lt;/code>&lt;/pre>&lt;p>For MP3 audiobooks that come as numbered chapter files:&lt;/p>
&lt;pre tabindex="0">&lt;code>/audiobooks/
Author Name/
Book Title/
01 - Chapter One.mp3
02 - Chapter Two.mp3
03 - Chapter Three.mp3
&lt;/code>&lt;/pre>&lt;p>AudioBookshelf groups all files in a directory as a single book. The chapter list is built from M4B metadata (preferred) or filename ordering (MP3 fallback).&lt;/p>
&lt;p>For podcasts, use a separate directory:&lt;/p>
&lt;pre tabindex="0">&lt;code>/podcasts/
Podcast Name/
(AudioBookshelf manages files here via auto-download)
&lt;/code>&lt;/pre>&lt;h2 id="docker-compose">Docker Compose&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">services&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">audiobookshelf&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">ghcr.io/advplyr/audiobookshelf:latest&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">audiobookshelf&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">unless-stopped&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">ports&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#34;13378:80&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">environment&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">AUDIOBOOKSHELF_UID=1000&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">AUDIOBOOKSHELF_GID=1000&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">/path/to/audiobooks:/audiobooks&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">/path/to/podcasts:/podcasts&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">/opt/audiobookshelf/config:/config&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">/opt/audiobookshelf/metadata:/metadata&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Replace &lt;code>/path/to/audiobooks&lt;/code> and &lt;code>/path/to/podcasts&lt;/code> with your actual library paths. The &lt;code>config&lt;/code> and &lt;code>metadata&lt;/code> volumes hold AudioBookshelf&amp;rsquo;s database, cover art cache, and chapter data.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>mkdir -p /opt/audiobookshelf/&lt;span style="color:#f92672">{&lt;/span>config,metadata&lt;span style="color:#f92672">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker compose up -d
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Access the web UI at &lt;code>http://your-host-ip:13378&lt;/code>. On first load, AudioBookshelf prompts you to create an admin account.&lt;/p>
&lt;h2 id="initial-library-setup">Initial library setup&lt;/h2>
&lt;p>After logging in:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Settings → Libraries → New Library&lt;/strong>&lt;/li>
&lt;li>Name it &amp;ldquo;Audiobooks&amp;rdquo;, set type to Books, folder path &lt;code>/audiobooks&lt;/code>&lt;/li>
&lt;li>Click &lt;strong>Scan&lt;/strong> — AudioBookshelf walks the directory tree and builds the library&lt;/li>
&lt;/ol>
&lt;p>For podcasts: create a second library with type Podcast, folder path &lt;code>/podcasts&lt;/code>.&lt;/p>
&lt;p>The initial scan finds all audio files and groups them by directory. Metadata matching runs separately after the scan.&lt;/p>
&lt;h2 id="metadata-matching">Metadata matching&lt;/h2>
&lt;p>After the initial scan, most books will have the title and author from the directory name but no cover art, description, or narrator. Run metadata matching:&lt;/p>
&lt;p>&lt;strong>Per-book:&lt;/strong> click a book → Edit → Match → select a source → Apply.&lt;/p>
&lt;p>&lt;strong>Bulk:&lt;/strong> Settings → Libraries → Audiobooks → Manage Library → Quick Match All.&lt;/p>
&lt;p>Quick Match sends each book&amp;rsquo;s title and author to the configured metadata sources and applies the first match. For well-known titles, this fills in cover, description, narrator, ISBN, and publication year automatically. For obscure titles, you&amp;rsquo;ll get no match and need to edit manually.&lt;/p>
&lt;p>&lt;strong>Best metadata source for most books:&lt;/strong> Audible. The AudioBookshelf Audible provider pulls cover art and narrator data that Open Library and Google Books often lack. Enable it: Settings → Libraries → Audiobooks → Configure → Book metadata provider → Audible.&lt;/p>
&lt;h2 id="adding-podcast-feeds">Adding podcast feeds&lt;/h2>
&lt;ol>
&lt;li>Settings → Libraries → Podcasts → View Podcasts → Add Podcast&lt;/li>
&lt;li>Paste the RSS feed URL&lt;/li>
&lt;li>Configure: how many episodes to auto-download, whether to keep all episodes or maintain a fixed count&lt;/li>
&lt;li>Click &lt;strong>Add&lt;/strong>&lt;/li>
&lt;/ol>
&lt;p>AudioBookshelf checks feeds on a schedule (configurable, default every 24 hours) and downloads new episodes to the podcast library directory. Old episodes beyond your keep count are deleted automatically.&lt;/p>
&lt;p>For podcast-only installs, the audiobook library is optional — you can run AudioBookshelf as a podcast manager alone.&lt;/p>
&lt;h2 id="mobile-app-setup">Mobile app setup&lt;/h2>
&lt;ol>
&lt;li>Install &amp;ldquo;AudioBookshelf&amp;rdquo; from the App Store (iOS) or Play Store / F-Droid (Android)&lt;/li>
&lt;li>Open the app → &amp;ldquo;Connect to your server&amp;rdquo;&lt;/li>
&lt;li>Enter your server URL: &lt;code>http://your-host-ip:13378&lt;/code> (local) or your external domain if using NPM&lt;/li>
&lt;/ol>
&lt;p>For access outside the home network without a public domain, Tailscale is the simplest path: install Tailscale on your phone and server, then use the Tailscale IP (&lt;code>100.x.x.x&lt;/code>) as the server address in the AudioBookshelf app. The app connects over the WireGuard mesh without any port forwarding or SSL setup. See the &lt;a href="https://techfuelhq.com/tutorials/tailscale-remote-access-homelab-2026/">Tailscale remote access guide&lt;/a>.&lt;/p>
&lt;p>For public HTTPS with a proper domain: point Nginx Proxy Manager at &lt;code>audiobookshelf:80&lt;/code> (or host IP:13378), enable SSL, and use the public domain in the app. See the &lt;a href="https://techfuelhq.com/tutorials/nginx-proxy-manager-homelab-2026/">NPM guide&lt;/a>.&lt;/p>
&lt;h2 id="sharing-with-family-members">Sharing with family members&lt;/h2>
&lt;p>Create additional user accounts: Settings → Users → Create User.&lt;/p>
&lt;p>Each user gets their own:&lt;/p>
&lt;ul>
&lt;li>Listening progress (per book, per podcast episode)&lt;/li>
&lt;li>Playback speed preference&lt;/li>
&lt;li>Bookmarks&lt;/li>
&lt;li>Reading speed (for displaying time remaining)&lt;/li>
&lt;/ul>
&lt;p>Users see the same library but their progress is independent. If a family member starts listening to a book, their &amp;ldquo;last played&amp;rdquo; timestamp won&amp;rsquo;t affect your progress.&lt;/p>
&lt;p>&lt;strong>Permissions per user:&lt;/strong> you can restrict users to specific libraries, disable downloads, or give admin access. For family members who only listen, a standard user with no download permission is the right setup.&lt;/p>
&lt;h2 id="listening-stats">Listening stats&lt;/h2>
&lt;p>AudioBookshelf tracks listening time per user, per book, and per library. Check: Settings → Users → (username) → Listening Sessions.&lt;/p>
&lt;p>The stats page shows daily and monthly listening time, total hours per book, and which device was used. It&amp;rsquo;s not exported to any external system by default, but the AudioBookshelf API exposes session data for integration with external dashboards if you want it in Grafana.&lt;/p>
&lt;h2 id="backing-up-audiobookshelf">Backing up AudioBookshelf&lt;/h2>
&lt;p>AudioBookshelf&amp;rsquo;s data lives in two places:&lt;/p>
&lt;ol>
&lt;li>&lt;code>/opt/audiobookshelf/config/&lt;/code> — SQLite database (&lt;code>audiobookshelf.db&lt;/code>), server configuration&lt;/li>
&lt;li>&lt;code>/opt/audiobookshelf/metadata/&lt;/code> — cover art cache, chapter data, backup metadata&lt;/li>
&lt;/ol>
&lt;p>Your actual audiobook files (in &lt;code>/audiobooks/&lt;/code>) are the source of truth and should be backed up independently as part of your media storage backup strategy.&lt;/p>
&lt;p>To back up AudioBookshelf&amp;rsquo;s database and config:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>tar czf /backup/audiobookshelf-&lt;span style="color:#66d9ef">$(&lt;/span>date +%Y%m%d&lt;span style="color:#66d9ef">)&lt;/span>.tar.gz &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> /opt/audiobookshelf/config &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> /opt/audiobookshelf/metadata
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Restore: stop the container, extract the backup to the same paths, restart.&lt;/p>
&lt;h2 id="coexistence-with-jellyfin">Coexistence with Jellyfin&lt;/h2>
&lt;p>AudioBookshelf and Jellyfin handle different media types and don&amp;rsquo;t conflict. Jellyfin handles video (movies, TV shows, home video); AudioBookshelf handles audio (audiobooks, podcasts). Both can run on the same host, same Docker Compose file, sharing the same reverse proxy.&lt;/p>
&lt;p>Don&amp;rsquo;t add your audiobook directory to Jellyfin — Jellyfin has weak audiobook support and won&amp;rsquo;t import M4B chapter data correctly. AudioBookshelf is the right tool for audio; Jellyfin is the right tool for video. The &lt;a href="https://techfuelhq.com/tutorials/jellyfin-setup-docker-homelab-2026/">Jellyfin setup guide&lt;/a> covers the video side.&lt;/p>
&lt;h2 id="updating-audiobookshelf">Updating AudioBookshelf&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>docker compose pull
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker compose up -d
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>AudioBookshelf uses &lt;code>latest&lt;/code> tagging with semantic versioning. Pinning to a major version isn&amp;rsquo;t critical here — the project is actively maintained with a stable API and infrequent breaking changes. Check the &lt;a href="https://github.com/advplyr/audiobookshelf/releases" rel="noopener">release notes&lt;/a> before pulling if you want to be cautious.&lt;/p>
&lt;hr>
&lt;p>&lt;em>AudioBookshelf is item #9 in the &lt;a href="https://techfuelhq.com/articles/self-hosted-apps-replace-saas-2026/">12 best self-hosted apps guide&lt;/a> — see that article for how it fits alongside Jellyfin, Nextcloud, and the rest of the stack. For video streaming alongside your audiobook library, the &lt;a href="https://techfuelhq.com/tutorials/jellyfin-setup-docker-homelab-2026/">Jellyfin Docker setup guide&lt;/a> covers hardware transcoding and remote access. The &lt;a href="https://techfuelhq.com/tutorials/docker-compose-starter-stack-homelab-2026/">Docker Compose starter stack tutorial&lt;/a> covers the NPM reverse proxy that AudioBookshelf sits behind.&lt;/em>&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://www.audiobookshelf.org/docs" rel="noopener">AudioBookshelf documentation&lt;/a> &amp;ndash; official reference for library setup, metadata, podcasts, users, and the mobile apps&lt;/li>
&lt;li>&lt;a href="https://docs.docker.com/compose/" rel="noopener">Docker Compose documentation&lt;/a> &amp;ndash; official reference for the Compose file used to run the container&lt;/li>
&lt;li>&lt;a href="https://jellyfin.org/docs/" rel="noopener">Jellyfin documentation&lt;/a> &amp;ndash; official docs for the companion video server that coexists with AudioBookshelf&lt;/li>
&lt;/ul></description></item><item><title>DAS vs NAS in 2026: Which Storage Setup Do You Actually Need?</title><link>https://techfuelhq.com/homelab/das-vs-nas-2026/</link><pubDate>Mon, 15 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/homelab/das-vs-nas-2026/</guid><description>&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR · DAS vs NAS in one screen&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>DAS&lt;/strong> plugs into one computer and is only usable from that computer. &lt;strong>NAS&lt;/strong> sits on the network and serves every device, plus remote.&lt;/li>
&lt;li>&lt;strong>Speed:&lt;/strong> DAS wins on the wire. USB 3.2 Gen 2 does ~800-1,000+ MB/s; Thunderbolt RAID does 1,500-2,600 MB/s; even 10GbE tops out near 1,250 MB/s, and 2.5GbE near 280-295 MB/s.&lt;/li>
&lt;li>&lt;strong>The drive is usually the real bottleneck.&lt;/strong> One 7,200 rpm HDD sustains ~120-290 MB/s, so it can't even fill 10GbE. You need several drives in RAID or SSDs first.&lt;/li>
&lt;li>&lt;strong>Power:&lt;/strong> a NAS runs 24/7 at ~30-55 W (~$60/yr). A DAS only runs when your PC does, so it costs a few dollars a year.&lt;/li>
&lt;li>&lt;strong>Data integrity:&lt;/strong> ZFS on a NAS checksums and self-heals bit rot. Most DAS boxes can't.&lt;/li>
&lt;li>&lt;strong>Neither RAID nor ZFS is a backup.&lt;/strong> Run 3-2-1 on top of whichever you pick.&lt;/li>
&lt;/ul>
&lt;/div>
&lt;img src="https://techfuelhq.com/images/homelab/das-vs-nas-2026.svg" width="1200" height="772" loading="lazy" decoding="async" alt="DAS vs NAS comparison matrix for 2026: DAS reaches only the one PC it plugs into, runs at ~800-2,600 MB/s, draws ~15W and costs a few dollars a year, and suits a single PC or video editing; NAS serves every device plus remote, runs ~280-1,250 MB/s 24/7 at ~$60/year, adds ZFS checksumming and self-healing, and suits multi-device, 24/7 Plex, and Docker or VMs. Neither RAID nor ZFS is a backup; run 3-2-1." style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;h2 id="das-vs-nas-in-2026---the-one-sentence-difference">DAS vs NAS in 2026 - the one-sentence difference&lt;/h2>
&lt;p>Here is the whole thing in a sentence: a &lt;strong>DAS&lt;/strong> (direct-attached storage) is drives connected straight to one computer with no network or operating system of their own, reachable only through the host it&amp;rsquo;s plugged into; a &lt;strong>NAS&lt;/strong> (network-attached storage) is a small always-on computer that holds drives and shares them over the network to any device, independent of any single host (&lt;a href="https://en.wikipedia.org/wiki/Direct-attached_storage" rel="noopener">Wikipedia&lt;/a>).&lt;/p>
&lt;p>Everything else in this article follows from that one difference. DAS is faster and cheaper because it skips the network and the second computer. A NAS costs more and runs slower on the wire because it &lt;em>is&lt;/em> a second computer on the network - and that&amp;rsquo;s exactly what makes it useful for things a DAS can&amp;rsquo;t do. The right answer depends entirely on whether you need the storage to be reachable by more than one machine.&lt;/p>
&lt;h2 id="what-is-das-direct-attached-storage-plain-english">What is DAS? (direct-attached storage, plain English)&lt;/h2>
&lt;p>A DAS is an enclosure full of drives that talks to your PC over a cable. The PC sees the drives almost as if they were internal. There&amp;rsquo;s no second operating system, no IP address, no login page - you plug it in and the drives appear in your file manager. An external USB hard drive is the simplest DAS. A four- or eight-bay enclosure with a hardware RAID controller is the same idea scaled up.&lt;/p>
&lt;h3 id="how-das-connects---usb-32-usb4thunderbolt-and-sas">How DAS connects - USB 3.2, USB4/Thunderbolt, and SAS&lt;/h3>
&lt;p>The cable is what sets the ceiling, and in 2026 you have three tiers:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>USB 3.2.&lt;/strong> This is the common one. USB 3.2 Gen 2 (10 Gbps) external SSDs reach roughly 800-1,000+ MB/s in the real world, while the older USB 3.2 Gen 1 (5 Gbps, often still labeled &amp;ldquo;USB 3.0&amp;rdquo;) tops out around 400 MB/s (&lt;a href="https://www.everythingusb.com/speed.html" rel="noopener">EverythingUSB&lt;/a>).&lt;/li>
&lt;li>&lt;strong>USB4 / Thunderbolt.&lt;/strong> Thunderbolt 4 guarantees a full 40 Gbps and 32 Gbps of PCIe bandwidth on every certified port; USB4 &lt;em>can&lt;/em> reach 40 Gbps but isn&amp;rsquo;t guaranteed - some ports run at only 20 Gbps (&lt;a href="https://www.benq.com/en-us/knowledge-center/knowledge/what-is-usb4-thunderbolt4-usbc.html" rel="noopener">BenQ&lt;/a>). The bar keeps moving: the USB-IF published USB4 Version 2.0 (80 Gbps, with up to 120 Gbps in one direction asymmetrically) in September 2025, and Thunderbolt 5 mandates 80 Gbps plus 64 Gbps PCIe and 240 W power that USB4 2.0 leaves optional (&lt;a href="https://www.cablematters.com/Blog/Thunderbolt/thunderbolt-5-vs-usb4" rel="noopener">Cable Matters&lt;/a>).&lt;/li>
&lt;li>&lt;strong>External SAS/SATA (JBOD).&lt;/strong> The route the homelab crowd uses for bulk disk. External SAS JBOD enclosures range from used enterprise units (a 6 Gb/s Dell MD1200 under $100, a 12 Gb/s refurbished MD1400 around $500 diskless) to new rackmount systems costing several thousand (&lt;a href="https://www.truenas.com/community/threads/external-sas-enclosure-recommendation.104683/" rel="noopener">TrueNAS forums&lt;/a>). This is how you hang a pile of disks off a server and let the server&amp;rsquo;s own OS (often ZFS) manage them.&lt;/li>
&lt;/ul>
&lt;h3 id="what-das-is-good-at-and-what-it-cant-do">What DAS is good at (and what it can&amp;rsquo;t do)&lt;/h3>
&lt;p>DAS is fast, cheap, and simple. A TerraMaster D4-320 - a four-bay USB 3.2 Gen 2 enclosure - delivers up to 1,016 MB/s read and 960 MB/s write with four SSDs, takes drives up to 22 TB per bay, and has sold around the mid-$200s (&lt;a href="https://www.terra-master.com/blogs/news/d4-320u" rel="noopener">TerraMaster&lt;/a>). Step up to a Thunderbolt RAID box and the numbers climb hard: an OWC ThunderBay 4 hits about 1,527 MB/s for 4K/6K RAW editing, and the eight-bay ThunderBay 8 reaches about 2,586 MB/s, both with bundled SoftRAID for RAID 0/1/4/5/10 (&lt;a href="https://www.owc.com/solutions/thunderbay-8" rel="noopener">OWC&lt;/a>).&lt;/p>
&lt;p>What it can&amp;rsquo;t do is the whole point: a DAS is only available through the one host it&amp;rsquo;s plugged into. Unplug it from your desktop, plug it into a laptop, and it&amp;rsquo;s the laptop&amp;rsquo;s drive now. No phone access, no second PC, no remote streaming. It&amp;rsquo;s storage for &lt;em>a&lt;/em> computer, not for &lt;em>the house&lt;/em>.&lt;/p>
&lt;h2 id="what-is-a-nas-network-attached-storage-plain-english">What is a NAS? (network-attached storage, plain English)&lt;/h2>
&lt;p>A NAS is a small dedicated computer - CPU, RAM, fans, an operating system - whose job is to hold drives and serve them over your network. Every device on the network can mount the same shares at the same time. Because it&amp;rsquo;s always on and reachable by IP, it can also run services: media servers, backups for multiple machines, Docker containers, remote access from outside the house.&lt;/p>
&lt;h3 id="how-a-nas-connects---1gbe-25gbe-and-10gbe">How a NAS connects - 1GbE, 2.5GbE, and 10GbE&lt;/h3>
&lt;p>The network replaces the cable as the ceiling, and the tiers are:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>1GbE:&lt;/strong> ~125 MB/s on paper, ~113 MB/s in real transfers.&lt;/li>
&lt;li>&lt;strong>2.5GbE:&lt;/strong> ~312 MB/s theoretical, ~280-295 MB/s real-world.&lt;/li>
&lt;li>&lt;strong>10GbE:&lt;/strong> near 1,250 MB/s on paper, sustaining well above 1,000 MB/s in practice (&lt;a href="https://www.xda-developers.com/10gbe-is-pointless-on-your-nas-unless-youre-using-it-for-this-one-thing/" rel="noopener">XDA&lt;/a>).&lt;/li>
&lt;/ul>
&lt;p>In 2026, 2.5GbE is the practical default for a home NAS - it&amp;rsquo;s cheap, it&amp;rsquo;s on most new boards, and as the &lt;a href="https://techfuelhq.com/homelab/best-budget-nas-builds-2025/">budget NAS builds guide&lt;/a> lays out, it already exceeds what a spinning-disk array hands back. If you are weighing whether to jump straight to 10GbE instead, the &lt;a href="https://techfuelhq.com/networking/25gbe-vs-10gbe-homelab-2026/">2.5GbE vs 10GbE decision guide&lt;/a> lays out exactly when the faster tier is worth the money.&lt;/p>
&lt;h3 id="the-nas-operating-system-and-what-it-adds-apps-users-remote-access">The NAS operating system and what it adds (apps, users, remote access)&lt;/h3>
&lt;p>The OS is the reason a NAS costs and consumes more than a DAS, and it&amp;rsquo;s also where the value lives. Because storage is reachable from any device on the network and often remotely, always-on services like Plex or Jellyfin become practical - the server holds the library and every TV, phone, and browser in the house reaches it (&lt;a href="https://nas.ugreen.com/blogs/knowledge/plex-vs-jellyfin-home-nas" rel="noopener">UGREEN&lt;/a>). User accounts, scheduled multi-machine backups, snapshots, and Docker all live here too. If you&amp;rsquo;re deciding which OS runs that stack, the &lt;a href="https://techfuelhq.com/homelab/proxmox-truenas-unraid-storage-backend-2026/">Proxmox vs TrueNAS vs Unraid backend guide&lt;/a> breaks down the three serious options.&lt;/p>
&lt;h2 id="performance-head-to-head---the-numbers-that-actually-matter">Performance head-to-head - the numbers that actually matter&lt;/h2>
&lt;h3 id="interface-bandwidth-vs-real-world-throughput">Interface bandwidth vs real-world throughput&lt;/h3>
&lt;p>Stack the two side by side and DAS wins the raw-speed contest decisively:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Path&lt;/th>
&lt;th scope="col">Real-world throughput&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>USB 3.2 Gen 1 (5 Gbps) SSD&lt;/td>
&lt;td>~400 MB/s&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>USB 3.2 Gen 2 (10 Gbps) SSD&lt;/td>
&lt;td>~800-1,000+ MB/s&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Thunderbolt 3/4 RAID (OWC ThunderBay)&lt;/td>
&lt;td>~1,527 MB/s (4-bay) to ~2,586 MB/s (8-bay)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>1GbE NAS&lt;/td>
&lt;td>~113 MB/s&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2.5GbE NAS&lt;/td>
&lt;td>~280-295 MB/s&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>10GbE NAS&lt;/td>
&lt;td>1,000+ MB/s&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>A direct cable beats a network at the same nominal speed because it skips the protocol overhead and the second computer in the middle. For pure single-machine throughput, DAS is the faster tool. Want to see how long a given transfer takes on your own link and drives? Run the numbers through the &lt;a href="https://techfuelhq.com/tools/transfer-time-calculator/">network transfer time calculator&lt;/a>.&lt;/p>
&lt;h3 id="the-drive-is-usually-the-bottleneck-not-the-cable-or-the-network">The drive is usually the bottleneck, not the cable or the network&lt;/h3>
&lt;p>Here&amp;rsquo;s the part most buyers skip. A single 7,200 rpm mechanical drive peaks at roughly 260-290 MB/s on its outer tracks and sags to about 120-160 MB/s on the inner ones (&lt;a href="https://www.xda-developers.com/10gbe-is-pointless-on-your-nas-unless-youre-using-it-for-this-one-thing/" rel="noopener">XDA&lt;/a>). That means one spinning disk barely brushes 2.5GbE and comes nowhere near 10GbE - and it can&amp;rsquo;t fill a USB 3.2 Gen 2 cable either. Four to six drives striped in RAID can push 800 to over 1,000 MB/s on large sequential reads, and SSDs blow past that. So the interface tier only matters once your &lt;em>storage&lt;/em> can keep up with it. For the spinning disks that fill most NAS bays, buy &lt;a href="https://techfuelhq.com/homelab/seagate-ironwolf-vs-ironwolf-pro-vs-exos-2026/">CMR NAS-rated drives&lt;/a> and mind the $/TB — the &lt;a href="https://techfuelhq.com/homelab/best-nas-hard-drives-2026/">best NAS hard drives guide&lt;/a> covers the picks by use case. If you want fast single drives instead of striping, the &lt;a href="https://techfuelhq.com/articles/best-nvme-ssd-homelab-2026/">best NVMe SSDs for a homelab guide&lt;/a> covers which ones actually hold their rated speed.&lt;/p>
&lt;h3 id="when-10gbe-is-worth-it-and-when-its-a-trap">When 10GbE is worth it and when it&amp;rsquo;s a trap&lt;/h3>
&lt;p>10GbE pays off in exactly two cases: a stripe of four or more drives in RAID, or an SSD/NVMe pool. With a couple of mechanical HDDs it&amp;rsquo;s wasted money - 2.5GbE already exceeds what those disks deliver, so the faster network just sits idle waiting on the platters. Buy the network tier your storage can saturate, not the one the spec sheet flatters.&lt;/p>
&lt;h2 id="real-cost---upfront-and-ongoing">Real cost - upfront and ongoing&lt;/h2>
&lt;h3 id="hardware-bare-enclosures-vs-a-nas-box-before-drives">Hardware: bare enclosures vs a NAS box (before drives)&lt;/h3>
&lt;p>A DAS enclosure is cheaper because it&amp;rsquo;s less machine. The four-bay TerraMaster D4-320 has sold around the mid-$200s; a used enterprise SAS JBOD can be had for under $100. A NAS adds a motherboard, CPU, RAM, and an OS license or a vendor markup on top of the same drive bays. You pay for the second computer because you&amp;rsquo;re getting a second computer.&lt;/p>
&lt;h3 id="power-draw-and-the-yearly-electricity-bill">Power draw and the yearly electricity bill&lt;/h3>
&lt;p>This is the gap people underestimate. A DAS only draws power when your PC is on and using it - an external HDD enclosure pulls about 15 W with a single 7,200 rpm drive and around 5 W empty (&lt;a href="https://nascompares.com/guide/how-much-does-it-cost-to-run-a-nas/" rel="noopener">NASCompares&lt;/a>). A NAS runs 24/7 by design. A full NAS platform idles around 30-40 W before drives, with each 3.5-inch disk adding about 5-7 W, so a three-drive NAS easily sits near 50-55 W idle; the Synology DS923+ is rated 35.51 W in access mode and 11.52 W in HDD hibernation (&lt;a href="https://www.connection.com/product/synology-diskstation-ds923-storage/ds923/41550582" rel="noopener">Synology spec via Connection&lt;/a>).&lt;/p>
&lt;p>In dollars: a device drawing 40 W continuously uses about 350 kWh per year, which at the ~$0.17/kWh 2026 US average is about $60/year; typical NAS units (20-60 W) cost roughly $20-$80/year to run (&lt;a href="https://num8ers.com/electricity-cost-calculator/" rel="noopener">num8ers calculator&lt;/a>). A DAS that only runs while your desktop runs costs a few dollars a year. Over a five-year life that difference is real money.&lt;/p>
&lt;h2 id="expandability---adding-capacity-over-time">Expandability - adding capacity over time&lt;/h2>
&lt;p>Both scale, differently. A multi-bay DAS lets you fill empty bays or daisy-chain another enclosure; an external SAS JBOD is the classic &amp;ldquo;bolt more disks onto a server&amp;rdquo; move and scales to dozens of drives. A NAS expands by filling its bays and, on some platforms, attaching an expansion shelf - and because it&amp;rsquo;s a full OS, it can also grow into apps and VMs, not just capacity. If your endgame is &amp;ldquo;a lot of disks managed by one server,&amp;rdquo; SAS-attached DAS under a NAS/server OS is a common hybrid; you get the cheap bulk enclosure &lt;em>and&lt;/em> the network features. To see how much usable space a given set of drives actually yields across RAID and ZFS levels — and how much you give up to redundancy — run them through the &lt;a href="https://techfuelhq.com/tools/nas-storage-calculator/">NAS &amp;amp; RAID storage calculator&lt;/a>.&lt;/p>
&lt;h2 id="data-protection---raid-zfs-and-why-neither-is-a-backup">Data protection - RAID, ZFS, and why neither is a backup&lt;/h2>
&lt;h3 id="raid-and-zfs-on-a-nas">RAID and ZFS on a NAS&lt;/h3>
&lt;p>Traditional RAID protects against one thing: a drive physically failing. It does nothing about bit rot - the silent corruption that creeps in from magnetic decay, cosmic rays, or firmware bugs. ZFS, common on NAS platforms like TrueNAS, checksums every block on write and verifies it on read, automatically repairing corruption from its redundant copies (&lt;a href="https://needtoknowit.com.au/blog/zfs-truenas-explained/" rel="noopener">Need To Know IT&lt;/a>). Two caveats come with that power: ZFS needs raw drive access for its self-healing to work, so stacking a hardware RAID controller beneath it defeats the purpose, and TrueNAS treats ECC RAM as effectively non-negotiable because ZFS holds checksums in RAM during writes - a bit flip there can be written and then validated as correct.&lt;/p>
&lt;h3 id="raid-on-a-das">RAID on a DAS&lt;/h3>
&lt;p>DAS RAID is a weaker story. Many DAS units offer no hardware RAID at all - the TerraMaster D4-320, for instance, relies on single-drive mode or third-party software RAID. The ones that &lt;em>do&lt;/em> have a hardware controller (the Thunderbolt RAID boxes) can lock your array to that specific controller, so a dead enclosure can mean a stranded array until you source an identical unit. Neither path gives you ZFS-style block checksumming.&lt;/p>
&lt;h3 id="raid-is-not-a-backup---the-3-2-1-rule">RAID is not a backup - the 3-2-1 rule&lt;/h3>
&lt;p>Say it on both sides of the aisle: RAID and RAIDZ provide redundancy and availability, not backup. They keep you online through a disk failure but will faithfully mirror an accidental deletion, a corrupted file, ransomware, theft, or a fire. The fix is the same regardless of DAS or NAS - the 3-2-1 rule: three copies of your data, on two types of media, with one copy offsite (&lt;a href="https://www.msp360.com/resources/blog/following-3-2-1-backup-strategy/" rel="noopener">MSP360&lt;/a>).&lt;/p>
&lt;h2 id="use-case-decision-guide">Use-case decision guide&lt;/h2>
&lt;h3 id="pick-das-if">Pick DAS if&amp;hellip;&lt;/h3>
&lt;ul>
&lt;li>You only need to back up or expand &lt;strong>one PC&lt;/strong>. If that&amp;rsquo;s the whole job, plugging a drive into that PC and scheduling automatic backups achieves the same result far more cheaply than a NAS (&lt;a href="https://www.howtogeek.com/you-dont-need-a-nas-if-you-dont-plan-to-use-these-features/" rel="noopener">How-To Geek&lt;/a>).&lt;/li>
&lt;li>You&amp;rsquo;re doing &lt;strong>video editing&lt;/strong> and want a fast scratch/working volume - Thunderbolt RAID at 1,500-2,600 MB/s is hard to match over a network.&lt;/li>
&lt;li>You want &lt;strong>the lowest power bill&lt;/strong> and don&amp;rsquo;t need always-on access.&lt;/li>
&lt;li>You value &lt;strong>simplicity&lt;/strong> - no OS to maintain, no shares to configure.&lt;/li>
&lt;/ul>
&lt;h3 id="pick-a-nas-if">Pick a NAS if&amp;hellip;&lt;/h3>
&lt;ul>
&lt;li>You need the storage reachable by &lt;strong>multiple devices&lt;/strong> at once.&lt;/li>
&lt;li>You want a &lt;strong>24/7 Plex or Jellyfin server&lt;/strong> that TVs, phones, and remote viewers can all hit.&lt;/li>
&lt;li>You want to run &lt;strong>Docker, VMs, or remote access&lt;/strong>.&lt;/li>
&lt;li>You want &lt;strong>ZFS-grade data integrity&lt;/strong> with checksumming and self-healing.&lt;/li>
&lt;/ul>
&lt;h3 id="a-note-on-plex-transcoding-and-cpu-choice">A note on Plex transcoding and CPU choice&lt;/h3>
&lt;p>If you go NAS for media, the CPU matters more than the badge. The Synology DS923+ uses an AMD Ryzen R1600 with no Intel Quick Sync, so it has no hardware video transcoding - software transcode only - which is why the Intel-Celeron-based DS224+ is the de facto entry-level Plex NAS (&lt;a href="https://nascompares.com/guide/best-plex-or-jellyfin-nas-of-2025/" rel="noopener">NASCompares&lt;/a>). But check whether you even need transcoding first: modern smart TVs, phones, and Apple TVs Direct Play most files (the server just hands over the file), while older devices, web browsers, and slow remote connections are what trigger transcoding. If everything you own can Direct Play, the CPU question mostly evaporates - and if it can&amp;rsquo;t, the &lt;a href="https://techfuelhq.com/articles/best-gpu-plex-jellyfin-transcode-2026/">best GPU for Plex/Jellyfin transcoding guide&lt;/a> covers offloading it.&lt;/p>
&lt;h2 id="the-honest-tradeoffs---bottom-line">The honest tradeoffs - bottom line&lt;/h2>
&lt;p>DAS is the faster, cheaper, lower-power tool for a single machine. NAS is the slower, pricier, always-on tool that serves the whole house and runs services. Neither is &amp;ldquo;better&amp;rdquo; - they answer different questions.&lt;/p>
&lt;p>If you only ever touch the storage from one computer, a DAS plus a real backup routine is the smarter buy almost every time. The moment you need a second device, a 24/7 media server, or proper data integrity, a NAS earns its power bill. Before you size either one, run your drive count through the &lt;a href="https://techfuelhq.com/tools/nas-storage-calculator/">NAS &amp;amp; RAID storage calculator&lt;/a> to see raw-versus-usable capacity across RAID levels - and whatever you land on, layer 3-2-1 backups on top. Redundancy is uptime; backups are safety. You want both.&lt;/p></description></item><item><title>About TechFuel HQ</title><link>https://techfuelhq.com/about/</link><pubDate>Sat, 13 Jun 2026 00:00:00 -0500</pubDate><guid>https://techfuelhq.com/about/</guid><description>&lt;h2 id="who-runs-this-site">Who runs this site&lt;/h2>
&lt;figure class="author-photo">
&lt;picture>
&lt;source srcset="https://techfuelhq.com/images/author/lk-wood-iv-about.webp" type="image/webp">
&lt;img src="https://techfuelhq.com/images/author/lk-wood-iv-about.jpg" alt="L.K. Wood IV holding an NREMT Paramedic patch in front of his test bench, St. Louis, Missouri" width="400" height="400" loading="eager" decoding="async">
&lt;/picture>
&lt;figcaption>L.K. Wood IV — NREMT Paramedic and tech writer, St. Louis, MO.&lt;/figcaption>
&lt;/figure>
&lt;p>TechFuel HQ is run by &lt;strong>Lowell K. Wood IV&lt;/strong> (byline: &lt;em>LK Wood IV&lt;/em>) from St. Louis, Missouri. Thirteen-plus years of homelabs, PC building, server and game-server hosting (Garry&amp;rsquo;s Mod, then Arma 3, then Squad, on a stack of repurposed desktops in a basement), networking, and coding — now applied to writing the homelab and self-hosting guides I wish I had read when I started.&lt;/p>
&lt;p>I also work as a Nationally Registered Paramedic (NREMT) on ground EMS — I do both. The patch in the photo above is from that work, and it&amp;rsquo;s the reason for the editorial habit on this site: never recommend gear I haven&amp;rsquo;t verified, the same way you never chart a vital you didn&amp;rsquo;t take.&lt;/p>
&lt;p>I answer every email I get at &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a>.&lt;/p>
&lt;h2 id="what-this-site-is-for">What this site is for&lt;/h2>
&lt;p>Most homelab and self-hosting content on the open web is either content-farm filler or vendor-paid product placement. The goal here is straight-talk hardware recommendations, real cost-of-ownership math, and configuration patterns that hold up after the YouTube hype cycle ends.&lt;/p>
&lt;p>No sponsored articles. No vendor samples in exchange for coverage. No paid placement where the recommendation gets shaped by who is paying. A recommendation is made on the merits, full stop.&lt;/p>
&lt;h2 id="what-the-site-covers">What the site covers&lt;/h2>
&lt;ul>
&lt;li>Proxmox, TrueNAS, and Unraid — operating-system tradeoffs for homelabs&lt;/li>
&lt;li>Mini PCs and small-form-factor builds (MS-01, ASUS NUC line, used OptiPlex / EliteDesk Tiny / ThinkCentre Tiny)&lt;/li>
&lt;li>2.5GbE and 10GbE on a budget — used Mellanox cards, DACs, MikroTik switches&lt;/li>
&lt;li>Self-hosted apps that meaningfully replace SaaS — Immich, Nextcloud, Vaultwarden, Jellyfin, Paperless-ngx, Home Assistant&lt;/li>
&lt;li>Repurposing older hardware (gaming PCs, retired workstations) as servers&lt;/li>
&lt;li>Power consumption, idle wattage, and total cost of ownership — because electricity is not free&lt;/li>
&lt;/ul>
&lt;h2 id="how-recommendations-are-sourced">How recommendations are sourced&lt;/h2>
&lt;p>From June 2026 onward, hardware figures published here — power draw, throughput, storage IOPS — are aggregated from named third-party publications and primary documentation, cited inline at each claim. The sources I lean on most are &lt;a href="https://www.servethehome.com/" rel="noopener">ServeTheHome&lt;/a> for homelab, storage, and networking coverage, &lt;a href="https://www.phoronix.com/" rel="noopener">Phoronix&lt;/a> for Linux and storage benchmarks, &lt;a href="https://www.tomshardware.com/" rel="noopener">Tom&amp;rsquo;s Hardware&lt;/a> for general hardware, and manufacturer spec sheets and standards documents (Intel ATX guides, JEDEC, OpenZFS) for first-party numbers. Vendor spec-sheet figures are always labeled as such, separately from independently measured results.&lt;/p>
&lt;p>Hardware guides published in 2024–2025 drew on hands-on work with a homelab built up over that period, and most of that older homelab gear was sold or retired in early 2026. What remains on hand is the author&amp;rsquo;s current daily-driver workstation — a Ryzen 7 7800X3D on an ASUS ROG STRIX B650-A with 64GB DDR5-6000, an ASUS ROG Astral RTX 5080 OC, an NZXT Kraken 360, an EVGA SuperNOVA 1000 GT power supply, a Samsung 970 EVO Plus NVMe, and a Gigabyte AORUS FO48U display. Reviews and first-party data about that specific rig — most prominently the published &lt;a href="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/">ROG Astral RTX 5080 dataset&lt;/a> — are hands-on. For hardware not currently on the bench, figures are aggregated from the named third-party publications above and cited inline at each claim, rather than implying a personal test of gear the author does not own.&lt;/p>
&lt;p>No vendor samples are accepted. Gear is covered on its merits, never in exchange for coverage. If that ever changes, the article will say so at the top.&lt;/p>
&lt;h2 id="editorial-principles">Editorial principles&lt;/h2>
&lt;ul>
&lt;li>Vote a recommendation. Hedging is for politicians.&lt;/li>
&lt;li>Cite real sources. Made-up benchmarks are worse than no benchmarks.&lt;/li>
&lt;li>Update articles when the underlying facts change. Note the update date.&lt;/li>
&lt;li>Attribute every benchmark number to a named, linkable source, or leave it out.&lt;/li>
&lt;/ul>
&lt;p>See the full &lt;a href="https://techfuelhq.com/methodology/">editorial methodology&lt;/a> for source standards and corrections policy.&lt;/p>
&lt;h2 id="contact">Contact&lt;/h2>
&lt;p>&lt;strong>Email:&lt;/strong> &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a>
&lt;strong>Location:&lt;/strong> St. Louis County, Missouri, United States
&lt;strong>Site author:&lt;/strong> Lowell K. Wood IV (LK Wood IV)&lt;/p>
&lt;h2 id="editorial-standards-and-policies">Editorial standards and policies&lt;/h2>
&lt;p>For the full standing rules every article on this site follows — sourcing, dating, AI workflow, banned phrases, excluded topics, corrections process, advertising disclosure, AdSense state — see the &lt;a href="https://techfuelhq.com/editorial-standards/">Editorial Standards&lt;/a> page. That page is the standing reference; the &lt;a href="https://techfuelhq.com/methodology/">methodology page&lt;/a> covers the more technical fact-checking workflow.&lt;/p>
&lt;h2 id="trust-pages">Trust pages&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://techfuelhq.com/editorial-standards/">Editorial Standards&lt;/a> — the standing rules every article follows&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/methodology/">Methodology&lt;/a> — fact-checking and source-verification workflow&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/author/lk-wood-iv/">Author page (LK Wood IV)&lt;/a> — byline and bibliography&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/colophon/">Colophon&lt;/a> — site stack, AI pipeline disclosure, history&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/disclosure/">Disclosure&lt;/a> — advertising and standing disclosures&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/privacy/">Privacy policy&lt;/a> — data handling, cookies, GDPR/CCPA&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/terms/">Terms&lt;/a> — site terms&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/contact/">Contact&lt;/a> — email and contact form&lt;/li>
&lt;/ul>
&lt;p>Last updated: 2026-06-10.&lt;/p></description></item><item><title>BookStack Self-Hosted on Docker: Wiki Setup (2026)</title><link>https://techfuelhq.com/tutorials/bookstack-docker-self-hosted-2026/</link><pubDate>Sat, 13 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tutorials/bookstack-docker-self-hosted-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-13 · ~12 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/tutorials/bookstack-docker-self-hosted-2026.svg" alt="Architecture diagram of the BookStack self-hosted Docker stack: a browser connects over HTTPS through Nginx Proxy Manager to the bookstack PHP/nginx container (port 6875 to 80), which queries the bookstack-db MySQL 8 container on port 3306; uploads persist in the bookstack_config volume and the database in /opt/bookstack/db, with combined idle RAM around 180 MB." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>BookStack is what Notion should be if Notion didn&amp;rsquo;t keep adding features that slow it down and charge $8–16/user/month for the privilege. It&amp;rsquo;s a structured wiki — Shelves, Books, Chapters, Pages — that runs on a small Docker stack and handles the documentation and knowledge base workload for most homelab and small-team use cases. For the adjacent problem of capturing and organizing saved links and articles rather than authoring your own docs, a &lt;a href="https://techfuelhq.com/homelab/karakeep-vs-linkwarden-2026/">self-hosted bookmark manager&lt;/a> is the better-fit tool. And for paper you scan rather than text you write — bills, statements, contracts — &lt;a href="https://techfuelhq.com/tutorials/paperless-ngx-docker-setup-2026/">Paperless-ngx&lt;/a> OCRs and tags it into a searchable archive instead.&lt;/p>
&lt;p>The full stack is two containers: BookStack + MySQL. No Redis, no Tika, no companion services required. This is one of the simpler self-hosted setups.&lt;/p>
&lt;h2 id="stack-overview">Stack overview&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Container&lt;/th>
&lt;th scope="col">Role&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>bookstack&lt;/code>&lt;/td>
&lt;td>PHP application, web interface&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>bookstack-db&lt;/code>&lt;/td>
&lt;td>MySQL 8 — BookStack database&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Total idle RAM: approximately 200–300 MB combined. BookStack is PHP-backed with an nginx server embedded in the linuxserver.io Docker image.&lt;/p>
&lt;h2 id="directory-layout">Directory layout&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>mkdir -p /opt/bookstack/db
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>BookStack&amp;rsquo;s uploaded files and configuration are managed through Docker volumes. The MySQL data directory needs a dedicated path on the host.&lt;/p>
&lt;h2 id="docker-compose">Docker Compose&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">services&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">bookstack-db&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">mysql:8&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">bookstack-db&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">unless-stopped&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">environment&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">MYSQL_ROOT_PASSWORD&lt;/span>: &lt;span style="color:#ae81ff">CHANGE_THIS_ROOT_PASSWORD&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">MYSQL_DATABASE&lt;/span>: &lt;span style="color:#ae81ff">bookstackapp&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">MYSQL_USER&lt;/span>: &lt;span style="color:#ae81ff">bookstack&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">MYSQL_PASSWORD&lt;/span>: &lt;span style="color:#ae81ff">CHANGE_THIS_DB_PASSWORD&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">/opt/bookstack/db:/var/lib/mysql&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">healthcheck&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">test&lt;/span>: [&lt;span style="color:#e6db74">&amp;#34;CMD&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;mysqladmin&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;ping&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;-h&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;localhost&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">interval&lt;/span>: &lt;span style="color:#ae81ff">10s&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">timeout&lt;/span>: &lt;span style="color:#ae81ff">5s&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">retries&lt;/span>: &lt;span style="color:#ae81ff">5&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">bookstack&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">lscr.io/linuxserver/bookstack:latest&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">bookstack&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">unless-stopped&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">depends_on&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">bookstack-db&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">condition&lt;/span>: &lt;span style="color:#ae81ff">service_healthy&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">environment&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">PUID&lt;/span>: &lt;span style="color:#ae81ff">1000&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">PGID&lt;/span>: &lt;span style="color:#ae81ff">1000&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">TZ&lt;/span>: &lt;span style="color:#ae81ff">America/Chicago&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">APP_URL&lt;/span>: &lt;span style="color:#ae81ff">https://wiki.yourdomain.com&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">DB_HOST&lt;/span>: &lt;span style="color:#ae81ff">bookstack-db&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">DB_PORT&lt;/span>: &lt;span style="color:#ae81ff">3306&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">DB_USER&lt;/span>: &lt;span style="color:#ae81ff">bookstack&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">DB_PASS&lt;/span>: &lt;span style="color:#ae81ff">CHANGE_THIS_DB_PASSWORD&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">DB_DATABASE&lt;/span>: &lt;span style="color:#ae81ff">bookstackapp&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">APP_KEY&lt;/span>: &lt;span style="color:#ae81ff">CHANGE_THIS_32CHAR_KEY&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">bookstack_config:/config&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">ports&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#34;6875:80&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">bookstack_config&lt;/span>:
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Three values to set before starting:&lt;/p>
&lt;ul>
&lt;li>&lt;code>APP_URL&lt;/code> — the full URL you&amp;rsquo;ll access BookStack from (used for links and OAuth callbacks)&lt;/li>
&lt;li>&lt;code>APP_KEY&lt;/code> — generate with: &lt;code>docker run --rm lscr.io/linuxserver/bookstack php artisan key:generate --show&lt;/code>&lt;/li>
&lt;li>&lt;code>MYSQL_PASSWORD&lt;/code> and &lt;code>DB_PASS&lt;/code> — must match&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Timezone list:&lt;/strong> see &lt;a href="https://en.wikipedia.org/wiki/List_of_tz_database_time_zones" rel="noopener">IANA timezone database&lt;/a>. Use the format &lt;code>Region/City&lt;/code>.&lt;/p>
&lt;h2 id="first-start">First start&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>cd /opt/bookstack
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker compose up -d
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Check logs — database migration runs on first startup (takes 30-60 seconds)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker compose logs -f bookstack
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Wait for the log line &lt;code>Server Running at...&lt;/code> before accessing the UI.&lt;/p>
&lt;p>Default login credentials:&lt;/p>
&lt;ul>
&lt;li>Email: &lt;code>admin@admin.com&lt;/code>&lt;/li>
&lt;li>Password: &lt;code>password&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Change the admin password immediately&lt;/strong> — Settings → Users → Admin → Edit.&lt;/p>
&lt;p>Change the admin email to your actual email address while in that settings panel. BookStack uses the email address for password reset flows, so a placeholder email locks you out of recovery.&lt;/p>
&lt;h2 id="reverse-proxy-with-https">Reverse proxy with HTTPS&lt;/h2>
&lt;p>Point Nginx Proxy Manager at &lt;code>bookstack:80&lt;/code> (container name + port 80) or your host IP at port 6875.&lt;/p>
&lt;p>In NPM&amp;rsquo;s Proxy Host:&lt;/p>
&lt;ul>
&lt;li>Forward hostname: &lt;code>bookstack&lt;/code> (if NPM is on the same Docker network) or host IP&lt;/li>
&lt;li>Forward port: &lt;code>80&lt;/code>&lt;/li>
&lt;li>Enable SSL with Let&amp;rsquo;s Encrypt&lt;/li>
&lt;li>Advanced tab:&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-nginx" data-lang="nginx">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">client_max_body_size&lt;/span> &lt;span style="color:#e6db74">100M&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">proxy_set_header&lt;/span> &lt;span style="color:#e6db74">X-Forwarded-For&lt;/span> $proxy_add_x_forwarded_for;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The &lt;code>client_max_body_size 100M&lt;/code> covers large file attachments and image uploads. Without it, uploads over the default NPM limit return a 413 error.&lt;/p>
&lt;p>For NPM to reach the BookStack container by name, both must be on the same Docker network. Add a shared network to your compose file:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">networks&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">proxy&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">external&lt;/span>: &lt;span style="color:#66d9ef">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">services&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">bookstack-db&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">networks&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">proxy&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">bookstack&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">networks&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">proxy&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Where &lt;code>proxy&lt;/code> is the external network your NPM instance uses. Full network setup is in the &lt;a href="https://techfuelhq.com/tutorials/nginx-proxy-manager-homelab-2026/">Nginx Proxy Manager guide&lt;/a>.&lt;/p>
&lt;h2 id="organization-structure">Organization structure&lt;/h2>
&lt;p>BookStack uses a four-level hierarchy:&lt;/p>
&lt;pre tabindex="0">&lt;code>Shelves (top-level categories)
└── Books (collections within a shelf)
└── Chapters (optional groupings within a book)
└── Pages (individual documents)
&lt;/code>&lt;/pre>&lt;p>This structure works well for homelab documentation:&lt;/p>
&lt;pre tabindex="0">&lt;code>Shelf: Homelab
Book: Proxmox
Chapter: Setup
Page: Initial Install
Page: VM Templates
Page: ZFS Pool Configuration
Chapter: Services
Page: n8n Setup
Page: Jellyfin Setup
Book: Networking
Page: VLAN Configuration
Page: DNS Hosts
Page: Firewall Rules
Shelf: Personal
Book: Finances
Book: Recipes
Book: Projects
&lt;/code>&lt;/pre>&lt;p>Chapters are optional — a Book can contain Pages directly without Chapters for smaller collections.&lt;/p>
&lt;h2 id="importing-existing-notes">Importing existing notes&lt;/h2>
&lt;p>&lt;strong>From Notion:&lt;/strong> use Notion&amp;rsquo;s export feature (Settings → Export Content → Markdown &amp;amp; CSV). The exported Markdown files import into BookStack via a bulk-create script or one by one via the Markdown editor. BookStack&amp;rsquo;s page API supports programmatic creation if you want to automate the import.&lt;/p>
&lt;p>&lt;strong>From Confluence:&lt;/strong> Confluence exports to HTML. The &lt;a href="https://github.com/transcriptionstream/confluence-to-bookstack-wizard" rel="noopener">Confluence to BookStack migration script&lt;/a> (community project, not affiliated with BookStack) handles the structural conversion.&lt;/p>
&lt;p>&lt;strong>From plain Markdown files:&lt;/strong> paste directly into BookStack&amp;rsquo;s Markdown editor. The Markdown editor supports pasting and immediately renders a preview.&lt;/p>
&lt;h2 id="user-management">User management&lt;/h2>
&lt;p>Default BookStack uses email/password authentication with self-registration (disabled by default). For a personal homelab instance, single admin account with registration disabled is the right setup.&lt;/p>
&lt;p>&lt;strong>Disable registration:&lt;/strong>
Settings → Security → Disable Registration → Save&lt;/p>
&lt;p>&lt;strong>Invite-only access:&lt;/strong>
Settings → Users → Invite User (sends email with temporary link)&lt;/p>
&lt;p>For a setup where other family members or team members need access, the invite flow is cleaner than sharing a password. Each user gets their own account, their own preferences (Markdown vs WYSIWYG, dark/light theme), and their own reading history.&lt;/p>
&lt;h2 id="ldap-authentication-optional">LDAP authentication (optional)&lt;/h2>
&lt;p>If you&amp;rsquo;re running an LDAP server (FreeIPA, Authentik, Keycloak) for unified authentication across self-hosted services:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">environment&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">AUTH_METHOD&lt;/span>: &lt;span style="color:#ae81ff">ldap&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">LDAP_SERVER&lt;/span>: &lt;span style="color:#ae81ff">ldap://your-ldap-server:389&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">LDAP_BASE_DN&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;dc=yourdomain,dc=com&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">LDAP_DN&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;cn=bookstack,ou=service-accounts,dc=yourdomain,dc=com&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">LDAP_PASS&lt;/span>: &lt;span style="color:#ae81ff">your-service-account-password&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">LDAP_USER_FILTER&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;(&amp;amp;(uid={user})(objectClass=person))&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">LDAP_FOLLOW_REFERRALS&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;false&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>With LDAP enabled, users log in with their LDAP credentials and BookStack creates local accounts automatically on first authentication. The &lt;code>LDAP_USER_FILTER&lt;/code> uses &lt;code>{user}&lt;/code> as a placeholder for the username entered at login.&lt;/p>
&lt;h2 id="backups">Backups&lt;/h2>
&lt;p>BookStack requires backing up two things:&lt;/p>
&lt;p>&lt;strong>1. Database dump:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>docker compose exec bookstack-db mysqldump &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> -u bookstack -pCHANGE_THIS_DB_PASSWORD bookstackapp &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> &amp;gt; /opt/bookstack/backup-&lt;span style="color:#66d9ef">$(&lt;/span>date +%Y%m%d&lt;span style="color:#66d9ef">)&lt;/span>.sql
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>2. Uploaded files (images, attachments):&lt;/strong>&lt;/p>
&lt;p>The BookStack config volume (&lt;code>bookstack_config&lt;/code>) contains all uploads and the application configuration. Back up the volume path:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>docker run --rm &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> -v bookstack_config:/data &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> -v /opt/bookstack/backup:/backup &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> alpine tar czf /backup/bookstack-files-&lt;span style="color:#66d9ef">$(&lt;/span>date +%Y%m%d&lt;span style="color:#66d9ef">)&lt;/span>.tar.gz /data
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>For automated off-site backup of these exports, the &lt;a href="https://techfuelhq.com/tutorials/automated-offsite-backups-restic-2026/">restic backup guide&lt;/a> covers the B2 pipeline. Schedule both the database dump and volume tar to run nightly before the restic backup job.&lt;/p>
&lt;p>&lt;strong>Restore:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Restore database&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker compose exec -T bookstack-db mysql &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> -u bookstack -pCHANGE_THIS_DB_PASSWORD bookstackapp &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> &amp;lt; /opt/bookstack/backup-20260613.sql
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Restore volume&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker run --rm &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> -v bookstack_config:/data &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> -v /opt/bookstack/backup:/backup &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> alpine tar xzf /backup/bookstack-files-20260613.tar.gz -C /
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="resource-usage">Resource usage&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Container&lt;/th>
&lt;th scope="col">Idle RAM&lt;/th>
&lt;th scope="col">Peak RAM&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>bookstack&lt;/td>
&lt;td>~80 MB&lt;/td>
&lt;td>~200 MB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>bookstack-db&lt;/td>
&lt;td>~100 MB&lt;/td>
&lt;td>~300 MB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Total&lt;/strong>&lt;/td>
&lt;td>&lt;strong>~180 MB&lt;/strong>&lt;/td>
&lt;td>&lt;strong>~500 MB&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Peak RAM occurs during search index rebuilds (after importing many pages) or when multiple users are editing simultaneously. On a shared homelab host with 32+ GB RAM, BookStack is negligible overhead.&lt;/p>
&lt;p>CPU usage at idle: near zero. During a page load: brief spikes under 5% on a modern host. PHP-backed apps are CPU-efficient for read-heavy workloads.&lt;/p>
&lt;h2 id="updating-bookstack">Updating BookStack&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>docker compose pull
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker compose up -d
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The linuxserver.io image runs BookStack&amp;rsquo;s database migrations automatically on container startup. No manual migration step for minor updates.&lt;/p>
&lt;p>For major version updates, check the &lt;a href="https://github.com/BookStackApp/BookStack/releases" rel="noopener">BookStack changelog&lt;/a> for migration notes before pulling the new image tag.&lt;/p>
&lt;h2 id="common-problems">Common problems&lt;/h2>
&lt;p>&lt;strong>&amp;ldquo;APP_URL does not match the request URL&amp;rdquo;:&lt;/strong> The &lt;code>APP_URL&lt;/code> in your compose environment doesn&amp;rsquo;t match the URL in your browser. Update &lt;code>APP_URL&lt;/code> to the exact URL you access BookStack at, including scheme and domain. Restart the container after changing.&lt;/p>
&lt;p>&lt;strong>413 Request Entity Too Large on file uploads:&lt;/strong> NPM body size limit. Add &lt;code>client_max_body_size 100M;&lt;/code> to the NPM Advanced configuration for this proxy host.&lt;/p>
&lt;p>&lt;strong>Email not sending:&lt;/strong> BookStack won&amp;rsquo;t send password reset emails without SMTP configuration. Add to your compose environment:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">MAIL_DRIVER&lt;/span>: &lt;span style="color:#ae81ff">smtp&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">MAIL_HOST&lt;/span>: &lt;span style="color:#ae81ff">smtp.yourdomain.com&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">MAIL_PORT&lt;/span>: &lt;span style="color:#ae81ff">587&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">MAIL_ENCRYPTION&lt;/span>: &lt;span style="color:#ae81ff">tls&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">MAIL_USERNAME&lt;/span>: &lt;span style="color:#ae81ff">bookstack@yourdomain.com&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">MAIL_PASSWORD&lt;/span>: &lt;span style="color:#ae81ff">your-smtp-password&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">MAIL_FROM&lt;/span>: &lt;span style="color:#ae81ff">bookstack@yourdomain.com&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>For a homelab without a mail server, Gmail with an app password works: use &lt;code>smtp.gmail.com:587&lt;/code> with your Gmail address and a Google App Password (not your main Gmail password).&lt;/p>
&lt;hr>
&lt;p>&lt;em>BookStack is item #11 in the &lt;a href="https://techfuelhq.com/articles/self-hosted-apps-replace-saas-2026/">12 best self-hosted apps guide&lt;/a> — covers how it fits alongside the other apps in a full homelab stack. The &lt;a href="https://techfuelhq.com/tutorials/docker-compose-starter-stack-homelab-2026/">Docker Compose starter stack tutorial&lt;/a> covers the NPM, Portainer, and Uptime Kuma layer that BookStack runs alongside. For off-site backup of your wiki content, the &lt;a href="https://techfuelhq.com/tutorials/automated-offsite-backups-restic-2026/">restic backup guide&lt;/a> handles automated exports to Backblaze B2. The &lt;a href="https://techfuelhq.com/tutorials/vaultwarden-proxmox-2026/">Vaultwarden setup guide&lt;/a> covers the password manager you&amp;rsquo;ll want alongside BookStack for storing service credentials.&lt;/em>&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://www.bookstackapp.com/docs/" rel="noopener">BookStack documentation&lt;/a> &amp;ndash; official admin and user reference for the Shelves/Books/Chapters/Pages model and editors&lt;/li>
&lt;li>&lt;a href="https://www.bookstackapp.com/docs/admin/ldap-auth/" rel="noopener">BookStack LDAP authentication&lt;/a> &amp;ndash; official guide for the LDAP environment variables and group sync&lt;/li>
&lt;li>&lt;a href="https://docs.linuxserver.io/images/docker-bookstack/" rel="noopener">LinuxServer.io BookStack image&lt;/a> &amp;ndash; official docs for the container image and its environment parameters used in this guide&lt;/li>
&lt;li>&lt;a href="https://nginxproxymanager.com/guide/" rel="noopener">Nginx Proxy Manager guide&lt;/a> &amp;ndash; official docs for the reverse proxy and Let&amp;rsquo;s Encrypt SSL in front of BookStack&lt;/li>
&lt;li>&lt;a href="https://docs.docker.com/compose/" rel="noopener">Docker Compose documentation&lt;/a> &amp;ndash; official reference for the two-container Compose file&lt;/li>
&lt;/ul></description></item><item><title>Contact</title><link>https://techfuelhq.com/contact/</link><pubDate>Sat, 13 Jun 2026 00:00:00 -0500</pubDate><guid>https://techfuelhq.com/contact/</guid><description>&lt;h2 id="how-to-reach-techfuel-hq">How to reach TechFuel HQ&lt;/h2>
&lt;p>Spotted an error, want to suggest hardware to cover, or have a question about a build or homelab setup? Send a message.&lt;/p>
&lt;p>&lt;strong>Email:&lt;/strong> &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a>&lt;/p>
&lt;p>The address forwards to a real inbox monitored by site author Lowell K. Wood IV. Every message gets read, though replies are not always immediate.&lt;/p>
&lt;h2 id="contact-form">Contact form&lt;/h2>
&lt;p>This form sends your message to the inbox for TechFuel HQ. Avoid sending sensitive or confidential information.&lt;/p>
&lt;form class="contact-form" action="https://formspree.io/f/xpwzgkqr" method="POST">
&lt;label for="name">Name&lt;/label>
&lt;input id="name" name="name" type="text" required autocomplete="name" placeholder="Your name">
&lt;p>&lt;label for="email">Email&lt;/label>
&lt;input id="email" name="email" type="email" required autocomplete="email" placeholder="you@example.com">&lt;/p>
&lt;p>&lt;label for="subject">Subject&lt;/label>
&lt;input id="subject" name="subject" type="text" required placeholder="What are you writing about?">&lt;/p>
&lt;p>&lt;label for="message">Message&lt;/label>&lt;/p>
&lt;textarea id="message" name="message" rows="6" required placeholder="Your message...">&lt;/textarea>
&lt;p>&lt;button type="submit">Send message&lt;/button>&lt;/p>
&lt;/form>
&lt;p>For corrections specifically, please include the article URL and the line or section in question. Saves a round-trip.&lt;/p>
&lt;h2 id="what-to-expect">What to expect&lt;/h2>
&lt;p>Messages go to a real inbox read by Lowell K. Wood IV, usually within a few days — this is a one-person site, so replies are personal but not instant. For a &lt;strong>correction&lt;/strong>, include the article URL and the specific line or section; verified corrections are made in place and noted in that article&amp;rsquo;s evidence ledger with an updated date. For a &lt;strong>hardware suggestion&lt;/strong>, a sentence on what you&amp;rsquo;d want covered and why is enough to get it onto the list. For a &lt;strong>dataset question&lt;/strong>, the &lt;a href="https://techfuelhq.com/data/">Datasets&lt;/a> section lists how to reference a specific measurement.&lt;/p>
&lt;p>What this inbox is not: it does not field sponsorship, paid-placement, guest-post, or link-insertion pitches. The site takes no vendor samples and runs no sponsored content, so those messages are declined on principle — see the &lt;a href="https://techfuelhq.com/editorial-standards/">editorial standards&lt;/a> for the full policy and the &lt;a href="https://techfuelhq.com/about/">About&lt;/a> page for who is behind the site.&lt;/p></description></item><item><title>Editorial Standards</title><link>https://techfuelhq.com/editorial-standards/</link><pubDate>Sat, 13 Jun 2026 00:00:00 -0500</pubDate><guid>https://techfuelhq.com/editorial-standards/</guid><description>&lt;p>TechFuel HQ is a single-author publication written and signed by &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">Lowell K. Wood IV&lt;/a> from St. Louis County, Missouri. This page is the standing reference for how the site researches, writes, sources, and corrects its work.&lt;/p>
&lt;h2 id="who-writes-here">Who writes here&lt;/h2>
&lt;p>Every article is researched, written, and edited by Lowell K. Wood IV (byline: &lt;em>LK Wood IV&lt;/em>). There is no anonymous contributor pool, no sponsored ghostwriting, and no paid placement. Biographical detail and contact information live on the &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">author page&lt;/a>.&lt;/p>
&lt;h2 id="how-sourcing-works">How sourcing works&lt;/h2>
&lt;p>Every measured number — a benchmark, a clock speed, a price, a power draw, a published spec — is either backed by a cited primary source (manufacturer documentation or named third-party testing) or labeled as first-party bench data with the date and hardware noted. When a claim cannot be sourced or verified, it is left out rather than guessed.&lt;/p>
&lt;p>The site does not invent numbers, does not present manufacturer marketing copy as test results, and does not borrow a third party&amp;rsquo;s benchmarks and pass them off as original testing. Articles that rely on third-party data name their sources inline.&lt;/p>
&lt;h2 id="first-party-data-vs-cited-data">First-party data vs. cited data&lt;/h2>
&lt;p>From 2024 through early 2026 the operator ran a home test bench in St. Louis County — measuring idle power at the wall, logging thermals under sustained load, and benchmarking hardware bought at retail. Most of that gear has since been sold or retired. The site is explicit about which figures are first-party measurements and which are synthesized from cited third-party reviews. First-party datasets — most recently the &lt;a href="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/">ASUS ROG Astral RTX 5080 OC runs&lt;/a> — are published with their methodology attached.&lt;/p>
&lt;h2 id="ai-in-the-workflow">AI in the workflow&lt;/h2>
&lt;p>AI tools assist with research aggregation, outlining, and first drafts. The editorial judgment — what to recommend, what to cut, what to verify, and the final wording — is the author&amp;rsquo;s. The byline is human and accountable; the assistance is disclosed here rather than hidden. For the fuller picture of the toolchain, see the &lt;a href="https://techfuelhq.com/colophon/">colophon&lt;/a>.&lt;/p>
&lt;h2 id="updates-and-corrections">Updates and corrections&lt;/h2>
&lt;p>Articles are revised in place when a price moves, a product is replaced, a software version ships, or a reader points out a mistake. The site is maintained as a living reference, not a dated archive — a guide is kept current rather than left to drift.&lt;/p>
&lt;p>To report a correction, email &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a> with the article URL and the section in question. Confirmed corrections are made promptly and reflected on the page. Reproducible reader-supplied bench data is welcome and credited.&lt;/p>
&lt;h2 id="advertising-disclosure">Advertising disclosure&lt;/h2>
&lt;p>Retailer links in articles (Newegg, B&amp;amp;H, and similar) are plain reference links and earn no commission; they never change a recommendation. Amazon links are different: TechFuelHQ participates in the Amazon Associates program, so clearly-disclosed Amazon links may earn us a commission on qualifying purchases — every page that carries one says so inline, and it never changes what we recommend. The standing &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a> covers both in full. When display advertising is enabled, the &lt;a href="https://techfuelhq.com/privacy/">privacy policy&lt;/a> describes the cookie behavior and the opt-out path.&lt;/p>
&lt;h2 id="independence">Independence&lt;/h2>
&lt;p>TechFuel HQ is independently owned and operated by Lowell K. Wood IV. No content is sponsored, gifted, sample-driven, or paid placement without explicit disclosure in the relevant article. No commission, brand partnership, or advertiser influences which product wins a comparison.&lt;/p>
&lt;h2 id="contact-and-accountability">Contact and accountability&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Editorial questions and corrections:&lt;/strong> &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a>&lt;/li>
&lt;li>&lt;strong>Author and accountable party:&lt;/strong> &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">Lowell K. Wood IV (LK Wood IV)&lt;/a>, St. Louis County, MO&lt;/li>
&lt;li>&lt;strong>More on the site:&lt;/strong> &lt;a href="https://techfuelhq.com/about/">About&lt;/a> · &lt;a href="https://techfuelhq.com/methodology/">Methodology&lt;/a> · &lt;a href="https://techfuelhq.com/colophon/">Colophon&lt;/a> · &lt;a href="https://techfuelhq.com/disclosure/">Disclosure&lt;/a> · &lt;a href="https://techfuelhq.com/privacy/">Privacy&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Privacy Policy</title><link>https://techfuelhq.com/privacy/</link><pubDate>Sat, 13 Jun 2026 00:00:00 -0500</pubDate><guid>https://techfuelhq.com/privacy/</guid><description>&lt;p>TechFuel HQ (&amp;ldquo;we,&amp;rdquo; &amp;ldquo;us,&amp;rdquo; or &amp;ldquo;our&amp;rdquo;), operated by Lowell K. Wood IV from St. Louis County, Missouri, runs the website at techfuelhq.com. This policy explains how visitor information is handled.&lt;/p>
&lt;h2 id="information-collected-automatically">Information collected automatically&lt;/h2>
&lt;p>When you visit the site, hosting infrastructure may collect IP address, browser type and version, pages visited and time on each page, referring website, and device type and screen resolution. This information is used in aggregate to understand traffic patterns and improve content.&lt;/p>
&lt;h2 id="information-you-provide">Information you provide&lt;/h2>
&lt;p>If you contact us by email or via the contact form, we receive the information you choose to include — typically a name, email address, and message body. This information is used only to respond to your message.&lt;/p>
&lt;h2 id="cookies-and-similar-technologies">Cookies and similar technologies&lt;/h2>
&lt;p>The Google AdSense rows below describe what cookies and data those services may use when advertising is served on the site, so the policy is documented in advance regardless of advertising state at any given moment.&lt;/p>
&lt;p>The site uses cookies and similar technologies for analytics and, where applicable, advertising. Specifically:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Google Analytics&lt;/strong> may set cookies to measure site usage in aggregate&lt;/li>
&lt;li>&lt;strong>Google AdSense&lt;/strong> (when enabled) may serve ads on the site. Google and its advertising partners use cookies to serve ads based on a visitor&amp;rsquo;s prior visits to this site and other sites. You can opt out of personalized advertising at &lt;a href="https://www.google.com/settings/ads" rel="noopener">Google&amp;rsquo;s Ads Settings&lt;/a>. Third-party vendors, including Google, use the &lt;a href="https://policies.google.com/technologies/ads" rel="noopener">DoubleClick DART cookie&lt;/a> to serve ads.&lt;/li>
&lt;/ul>
&lt;p>You can control cookie behavior through your browser settings. Advertising and personalization cookies are governed by Google Consent Mode v2, which defaults them to denied for visitors in the EEA, UK, and Switzerland until consent is granted. Before personalized advertising is served to those regions, a Google-certified consent management platform will be deployed to collect consent.&lt;/p>
&lt;h2 id="third-party-services">Third-party services&lt;/h2>
&lt;p>The site is hosted on GitHub Pages (whose origin is served through the Fastly edge network) and delivered through the Cloudflare content delivery network (which proxies and caches the site at the edge). The contact form is processed by Formspree. These services may collect technical information as described in their respective privacy policies:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://docs.github.com/en/site-policy/privacy-policies/github-general-privacy-statement" rel="noopener">GitHub Privacy Statement&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.cloudflare.com/privacypolicy/" rel="noopener">Cloudflare Privacy Policy&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.fastly.com/privacy/" rel="noopener">Fastly Privacy Policy&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://formspree.io/legal/privacy-policy/" rel="noopener">Formspree Privacy Policy&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://policies.google.com/privacy" rel="noopener">Google Privacy &amp;amp; Terms&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="childrens-privacy">Children&amp;rsquo;s privacy&lt;/h2>
&lt;p>TechFuel HQ is not directed at children under 13 and does not knowingly collect information from children under 13.&lt;/p>
&lt;h2 id="your-rights">Your rights&lt;/h2>
&lt;p>Depending on your jurisdiction (including the EU/UK under GDPR and California under CCPA), you may have the right to access the personal data we hold about you, request correction or deletion, restrict or object to certain processing, and opt out of personalized advertising. To exercise any of these rights, email &lt;strong>&lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a>&lt;/strong>.&lt;/p>
&lt;h2 id="international-transfers">International transfers&lt;/h2>
&lt;p>If you visit from outside the United States, note that information collected through the site may be transferred to and processed in the United States.&lt;/p>
&lt;h2 id="changes-to-this-policy">Changes to this policy&lt;/h2>
&lt;p>This policy may be updated as the site evolves. The &amp;ldquo;Last updated&amp;rdquo; date at the top reflects the most recent revision. Continued use of the site after changes are posted constitutes acceptance of the updated policy.&lt;/p>
&lt;h2 id="contact">Contact&lt;/h2>
&lt;p>Privacy questions go to &lt;strong>&lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a>&lt;/strong>.&lt;/p>
&lt;p>&lt;strong>Publisher:&lt;/strong> Lowell K. Wood IV
&lt;strong>Location:&lt;/strong> St. Louis County, Missouri, United States&lt;/p></description></item><item><title>PSU Calculator: Power Supply Wattage Calculator</title><link>https://techfuelhq.com/tools/psu-wattage-calculator/</link><pubDate>Sat, 13 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tools/psu-wattage-calculator/</guid><description>&lt;p>&lt;strong>Short answer:&lt;/strong> most gaming PCs need a 550W to 850W power supply, and the graphics card decides which end you land on. An RTX 5060-class build is comfortable on 550W, an RTX 5070 on 650W, an RTX 5070 Ti on 750W, an RTX 5080 on 850W, and an RTX 5090 on 1000W — NVIDIA&amp;rsquo;s own published minimums. On the AMD side our estimates are 650W for an RX 9070 or RX 9060 XT and 750W for an RX 9070 XT. Pick your exact parts in the power supply calculator below for a number built from your build rather than a category.&lt;/p>
&lt;h2 id="psu-wattage-by-graphics-card">PSU wattage by graphics card&lt;/h2>
&lt;p>In a balanced, gaming-first build the graphics card is the single largest draw — roughly 45% of system peak on an entry card and up to about 75% on a flagship — so it is the fastest way to a starting number. Every row below carries its own source, because two different kinds of number appear in this table and the difference matters.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Graphics card&lt;/th>
&lt;th scope="col">Board power&lt;/th>
&lt;th scope="col">Minimum PSU&lt;/th>
&lt;th scope="col">Basis for the PSU figure&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>GeForce RTX 5090&lt;/td>
&lt;td>575W TGP&lt;/td>
&lt;td>1000W&lt;/td>
&lt;td>NVIDIA published minimum&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GeForce RTX 5080&lt;/td>
&lt;td>360W TGP&lt;/td>
&lt;td>850W&lt;/td>
&lt;td>NVIDIA published minimum&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GeForce RTX 5070 Ti&lt;/td>
&lt;td>300W TGP&lt;/td>
&lt;td>750W&lt;/td>
&lt;td>NVIDIA published minimum&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GeForce RTX 5070&lt;/td>
&lt;td>250W TGP&lt;/td>
&lt;td>650W&lt;/td>
&lt;td>NVIDIA published minimum&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GeForce RTX 5060 Ti&lt;/td>
&lt;td>180W TGP&lt;/td>
&lt;td>600W&lt;/td>
&lt;td>NVIDIA published minimum&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GeForce RTX 5060&lt;/td>
&lt;td>145W TGP&lt;/td>
&lt;td>550W&lt;/td>
&lt;td>NVIDIA published minimum&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Radeon RX 9070 XT&lt;/td>
&lt;td>304W TBP&lt;/td>
&lt;td>750W&lt;/td>
&lt;td>TechFuelHQ estimate&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Radeon RX 9070&lt;/td>
&lt;td>220W TBP&lt;/td>
&lt;td>650W&lt;/td>
&lt;td>TechFuelHQ estimate&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Radeon RX 9060 XT&lt;/td>
&lt;td>150W TBP&lt;/td>
&lt;td>650W&lt;/td>
&lt;td>TechFuelHQ estimate&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>&lt;strong>Why the two bases differ.&lt;/strong> A vendor minimum is deliberately worst-case: NVIDIA&amp;rsquo;s own note on the RTX 5090 states its 1000W figure is based on a system built around a Ryzen 9 9950X — a flagship CPU, not a mainstream one — so the number carries padding for a processor you may not own. Our estimates are the opposite: the calculator&amp;rsquo;s itemized minimum for a typical mid-range build, stepped up one retail size. Both are floors. Where a vendor publishes a number, we print the vendor&amp;rsquo;s, because that is the configuration the card was validated against.&lt;/p>
&lt;p>&lt;strong>These are minimums, not the calculator&amp;rsquo;s answer.&lt;/strong> The tool below targets roughly half load rather than a floor, so its headline recommendation will read higher than this table — on a flagship build, considerably higher. That gap is efficiency and upgrade headroom, not a transient-spike requirement. If you want the smallest defensible unit, use this table; if you want the quietest and most efficient one, use the tool&amp;rsquo;s number. Note also that 600W is a size few brands actually sell — where a vendor figure lands between retail steps, buy the next size up. For a worked example of how one card&amp;rsquo;s number changes with the processor beside it, see &lt;a href="https://techfuelhq.com/articles/what-psu-for-rtx-5070-2026/">what PSU an RTX 5070 needs&lt;/a>; for how a factory-overclocked board can cost you a whole tier, see &lt;a href="https://techfuelhq.com/articles/what-psu-for-rtx-5080-2026/">what PSU an RTX 5080 needs&lt;/a>.&lt;/p>
&lt;h2 id="how-this-power-supply-calculator-works">How this power supply calculator works&lt;/h2>
&lt;p>No vendor&amp;rsquo;s calculator shows you its math. Here is ours, in full.&lt;/p>
&lt;p>&lt;strong>1. It sums real component draw, not a flat overhead.&lt;/strong> Your CPU and GPU peak figures come from the dropdowns; everything else is itemized and added: motherboard (about 45W for ATX, less for Micro-ATX and Mini-ITX, more for EATX), 5W per stick of RAM, 10W per Gen5 M.2 drive, 8W per Gen4, 6W per Gen3, 3W per SATA SSD, 12W per hard drive, 2W per case fan, 12W for an AIO pump and fans, plus whatever you enter in the miscellaneous field (10W by default, for fan controllers, RGB, capture cards, and similar). That total is your &lt;strong>peak draw&lt;/strong>.&lt;/p>
&lt;p>&lt;strong>2. The minimum is peak plus 20%.&lt;/strong> The calculator multiplies your peak by 1.2 and rounds up to the next size commonly sold — 550, 650, 750, 850, 1000, 1200, or 1500W; above 1500W it steps in 100W increments, because retail sizes get irregular there. That is the smallest unit it will suggest, and it is a genuine floor: at exactly 1.2x, your peak sits at about 83% of the unit&amp;rsquo;s rating, which is above the 80% line where the table below starts warning. Treat the minimum as &amp;ldquo;this will work,&amp;rdquo; not &amp;ldquo;this is the one to buy.&amp;rdquo;&lt;/p>
&lt;p>&lt;strong>3. The recommended size targets about half load.&lt;/strong> Power supplies are most efficient, coolest, and quietest loaded near the middle of their range, so the headline recommendation is the size that puts your peak near half the unit&amp;rsquo;s rating, and the tool flags 40-50% as the sweet spot when your build lands there. It is deliberately larger than the minimum: it buys efficiency, quiet, and room for a future graphics card. It is &lt;em>not&lt;/em> a spike requirement — see below.&lt;/p>
&lt;p>&lt;strong>4. The efficiency table shows every size.&lt;/strong> Rather than hiding the trade-off, the table rates each retail wattage against your build: above 80% load is under-sized and risks shutdowns, 65-80% works but leaves little upgrade room, and 35-65% is the band worth buying into.&lt;/p>
&lt;h2 id="the-transient-spike-question-answered-honestly">The transient-spike question, answered honestly&lt;/h2>
&lt;p>Modern graphics cards pull microsecond spikes well above their rated power, and this is where PSU advice usually turns into &amp;ldquo;buy double.&amp;rdquo; It should not.&lt;/p>
&lt;p>Intel&amp;rsquo;s ATX 3.0 design guide sets explicit excursion brackets a compliant unit must survive, and they are tiered by duration rather than being one blanket number:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Excursion&lt;/th>
&lt;th scope="col">Maximum duration&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>200% of rated power&lt;/td>
&lt;td>100 µs&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>180% of rated power&lt;/td>
&lt;td>1 ms&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>160% of rated power&lt;/td>
&lt;td>10 ms&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>120% of rated power&lt;/td>
&lt;td>100 ms&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>&lt;strong>The qualifier matters as much as the number.&lt;/strong> That 200% bracket applies to units above 450W that ship a native 12VHPWR / 12V-2x6 connector. A smaller unit, or one without that connector, is held to a lower bar — 150% at 100 µs. So &amp;ldquo;my PSU is ATX 3.x, it handles 200% spikes&amp;rdquo; is only true for the larger, natively-connectored units.&lt;/p>
&lt;p>Where it applies, though, it settles the sizing question: a 750W unit in that class is built to ride out a 1500W spike lasting 100 microseconds. That headroom is already in the standard, so on a qualifying unit you do not buy a bigger PSU to cover transient spikes — you buy a &lt;em>compliant&lt;/em> one. On an older ATX 2.x unit paired with a high-wattage card, leave more room, because it was never designed to these brackets.&lt;/p>
&lt;p>What ATX 3.1 revised is the connector: the 12V-2x6 design shortens the sense pins so a plug that is not fully seated fails to deliver full power rather than making partial high-resistance contact. We are not going to tell you 3.1 raises or lowers the transient bar relative to 3.0 — we could not retrieve the 3.1 design guide itself, and we do not publish spec claims we have not read. Buy 3.1 for the connector.&lt;/p>
&lt;p>One more that vendor calculators skip: if your unit is &lt;strong>multi-rail&lt;/strong>, total wattage is not a single pool. A 1000W multi-rail supply may cap one 12V rail well below the card&amp;rsquo;s draw, and a high-wattage GPU fed entirely from that rail can trip over-current protection on a supply that is nominally huge. Follow the rail distribution in your PSU&amp;rsquo;s manual and use separate cables rather than daisy-chaining one pigtail.&lt;/p>
&lt;h2 id="reading-the-three-numbers">Reading the three numbers&lt;/h2>
&lt;p>&lt;strong>Continuous vs. peak vs. transient.&lt;/strong> A PSU&amp;rsquo;s headline number is its &lt;em>continuous&lt;/em> rating — what it can deliver all day. Your parts list a &lt;em>peak&lt;/em> draw, which the calculator sums. Transient spikes are the third number, and the standard above covers them. A unit sized only to the raw continuous total, with no margin at all, can trip its over-current protection under load, which shows up as a random shutdown rather than an error message.&lt;/p>
&lt;p>&lt;strong>Why the sweet spot is roughly half load.&lt;/strong> Efficiency curves peak in the middle of a unit&amp;rsquo;s range, and a supply loafing at half load runs cooler and spins its fan slower — often not at all, on units with a zero-RPM mode. Worth keeping the two measures apart: the calculator&amp;rsquo;s load percentages are measured against your &lt;em>peak&lt;/em>, while the 50-60% figure people quote describes &lt;em>typical&lt;/em> sustained draw, which sits below peak. Size so peak stays under about 80% and typical lands near half, and both are satisfied at once.&lt;/p>
&lt;p>&lt;strong>80 Plus tiers in plain terms.&lt;/strong> The &lt;a href="https://www.clearesult.com/80plus/" rel="noopener">80 PLUS&lt;/a> badge rates efficiency at fixed load points. At these wattages the bill difference between Gold and Platinum is a dollar or two a month; treat the rating mostly as a signal of build quality, heat, and fan noise. Gold is the floor worth buying for a gaming or always-on homelab box. Our &lt;a href="https://techfuelhq.com/reviews/evga-supernova-1000-gt-review-2026/">EVGA SuperNOVA 1000 GT review&lt;/a> walks through what that looks like in a real unit, and the &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">power &amp;amp; cost calculator&lt;/a> turns watts into an annual dollar figure.&lt;/p>
&lt;p>&lt;strong>A lower-power build is a cheaper build.&lt;/strong> Undervolting cuts real wattage — around 100W on a high-end card and roughly 50W on a mid-range one, going by the measured results in our own database — which can drop you a PSU size and lower your bill at the same time. The &lt;a href="https://techfuelhq.com/articles/how-to-undervolt-gpu-2026/">complete GPU undervolting guide&lt;/a> covers the method, and our &lt;a href="https://techfuelhq.com/articles/gpu-undervolt-settings-database/">undervolt results database&lt;/a> lists measured power savings by card.&lt;/p>
&lt;h2 id="if-your-pc-is-already-shutting-down">If your PC is already shutting down&lt;/h2>
&lt;p>An undersized or failing supply looks the same from the outside: reboots under load, shutdowns in games, a PC that will not post. &lt;a href="https://techfuelhq.com/articles/psu-failure-symptoms-2026/">PSU failure symptoms&lt;/a> covers how to tell a dying unit from an undersized one, and the FAQ below covers testing a supply and finding out which one you already own.&lt;/p>
&lt;p>These are conservative component estimates. Real-world idle draw is far lower, and your actual numbers depend on overclocks and the specific models you choose — for a full parts list with compatibility checking, use the &lt;a href="https://techfuelhq.com/tools/pc-builder/">PC Builder&lt;/a>, and for where each card lands on speed, see the &lt;a href="https://techfuelhq.com/articles/gpu-hierarchy-2026/">GPU hierarchy&lt;/a>.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>NVIDIA GeForce RTX 50-series official specifications (total graphics power and minimum system power requirement) — &lt;a href="https://www.nvidia.com/en-us/geforce/graphics-cards/50-series/rtx-5090/" rel="noopener">RTX 5090&lt;/a>, &lt;a href="https://www.nvidia.com/en-us/geforce/graphics-cards/50-series/rtx-5080/" rel="noopener">RTX 5080&lt;/a>, &lt;a href="https://www.nvidia.com/en-us/geforce/graphics-cards/50-series/rtx-5070-family/" rel="noopener">RTX 5070 family&lt;/a>, &lt;a href="https://www.nvidia.com/en-us/geforce/graphics-cards/50-series/rtx-5060-family/" rel="noopener">RTX 5060 family&lt;/a> — verified live 2026-07-24; the 5070 and 5060 family pages re-verified 2026-07-25.&lt;/li>
&lt;li>Intel ATX 3.0 / ATX 3.1 desktop power supply design guides — the 200%-of-rated power-excursion requirement for microsecond transients (&lt;a href="https://edc.intel.com/content/www/us/en/design/ipla/software-development-platforms/client/platforms/alder-lake-desktop/atx-version-3-0-multi-rail-desktop-platform-power-supply-design-guide/2.0/2.01/psu-power-excursion/" rel="noopener">Intel ATX 3.0 PSU power excursion&lt;/a>).&lt;/li>
&lt;li>AMD board power: RX 9060 XT (150W) from the &lt;a href="https://techfuelhq.com/data/pc-builder-parts.json">TechFuelHQ PC Builder parts dataset&lt;/a> (CC BY 4.0); RX 9070 XT (304W) as cited in our &lt;a href="https://techfuelhq.com/articles/rx-9070-xt-undervolt-2026/">RX 9070 XT undervolt guide&lt;/a>; RX 9070 (220W) as cited in our &lt;a href="https://techfuelhq.com/gpu-reviews/rx-9070-vs-rx-9070-xt-2026/">RX 9070 vs RX 9070 XT&lt;/a> comparison. The PSU sizes on those three rows are our own estimates, not AMD figures — AMD&amp;rsquo;s specification pages did not respond when we checked on 2026-07-24.&lt;/li>
&lt;li>Component draw coefficients are this calculator&amp;rsquo;s own published figures, listed in full in the methodology section above.&lt;/li>
&lt;/ul></description></item><item><title>RTX 5080 Performance-per-Watt as a 24/7 AI Inference Card (2026)</title><link>https://techfuelhq.com/articles/rtx-5080-perf-per-watt-ai-24-7-2026/</link><pubDate>Sat, 13 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/rtx-5080-perf-per-watt-ai-24-7-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-13 · ~12 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/articles/rtx-5080-perf-per-watt-ai-24-7-2026.svg" alt="Spec comparison table of NVIDIA RTX 5080 versus RTX 5060 Ti 16GB for 24/7 local AI inference: both have 16GB GDDR7; the 5080 leads on ~960 GB/s bandwidth and roughly double the token rate while the 5060 Ti wins on 180W TBP, ~$480 price, and lower 3-year electricity cost." width="1200" height="760" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>Running a 360W card 24/7 for AI inference sounds like a bad idea on paper. In practice, the RTX 5080&amp;rsquo;s architecture makes it more nuanced than the TDP number suggests. This article looks at what actually happens to power draw and throughput under inference workloads, and whether the 5080 makes sense as an always-on inference node or whether a lower-TDP card is the smarter play.&lt;/p>
&lt;h2 id="how-llm-inference-loads-a-gpu-differently-than-gaming">How LLM inference loads a GPU differently than gaming&lt;/h2>
&lt;p>Gaming workloads run the GPU&amp;rsquo;s shader cores at high utilization continuously. Textures, geometry, and lighting calculations keep the CUDA cores and tensor cores busy, which drives power consumption toward TBP (Total Board Power).&lt;/p>
&lt;p>LLM inference — generating tokens with a large language model — has a fundamentally different workload profile:&lt;/p>
&lt;p>&lt;strong>Memory bandwidth-bound, not compute-bound.&lt;/strong> For single-user interactive inference with models near the card&amp;rsquo;s VRAM ceiling (the 14B–24B class on a 16GB card), the GPU&amp;rsquo;s primary bottleneck is reading model weights from VRAM to the CUDA cores for each token generation pass. The CUDA cores sit idle while the memory controllers read the next chunk of model weights.&lt;/p>
&lt;p>&lt;strong>Result:&lt;/strong> the GPU never reaches full shader utilization for single-user inference. GPU utilization in monitoring tools typically shows 40–70% for large-model inference. Power draw runs well below TBP.&lt;/p>
&lt;p>For the RTX 5080 running Mistral Small 24B Q4_K_M (a ~14GB file, the largest class that fits) in single-user interactive mode:&lt;/p>
&lt;ul>
&lt;li>GPU power: 180–250W (not 360W)&lt;/li>
&lt;li>GPU core clock: auto-clocks down (less shader demand)&lt;/li>
&lt;li>Memory bandwidth: near-saturated (this is the bottleneck)&lt;/li>
&lt;li>GPU temp: 65–75°C junction (comfortable for the ROG Astral&amp;rsquo;s cooling)&lt;/li>
&lt;/ul>
&lt;p>The consistent picture from community measurements (r/LocalLLaMA, TechPowerUp threads) and the bandwidth math: the RTX 5080 draws significantly less than TBP during interactive inference. The 360W TBP represents maximum shader + memory simultaneous load (like a heavy rasterization gaming scene) — inference doesn&amp;rsquo;t hit both simultaneously.&lt;/p>
&lt;h2 id="throughput-vs-power-at-different-load-scenarios">Throughput vs power at different load scenarios&lt;/h2>
&lt;p>These figures are derived from architecture analysis and community measurements from inference community benchmarking threads (TechPowerUp forums, Reddit r/LocalLLaMA) — not fabricated specific numbers, but representative ranges:&lt;/p>
&lt;p>&lt;strong>Single-user interactive inference (Mistral Small 24B Q4_K_M, 8K context):&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Throughput: 30–45 tokens/second (bandwidth-bound estimate: ~960 GB/s over a ~14GB weight file)&lt;/li>
&lt;li>Estimated GPU power during inference: 180–250W&lt;/li>
&lt;li>Tokens per watt: ~0.15–0.2 tok/W&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Batch inference (4–8 simultaneous requests, 24B Q4):&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Throughput: 70–130 tokens/second total across batches&lt;/li>
&lt;li>Estimated GPU power: 280–360W&lt;/li>
&lt;li>Tokens per watt: ~0.25–0.4 tok/W&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Small model, high throughput (Llama 3.1 8B Q4, full batch):&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Throughput: 200+ tokens/second&lt;/li>
&lt;li>GPU power: 150–250W&lt;/li>
&lt;li>Tokens per watt: ~0.8–1.3 tok/W&lt;/li>
&lt;/ul>
&lt;p>The small model scenario shows why throughput/watt metrics vary so dramatically: the 8B model at high batch uses the GPU compute efficiently while keeping power below TBP. The 24B model is almost entirely memory-bandwidth-limited.&lt;/p>
&lt;h2 id="gddr7-architecture-advantage">GDDR7 architecture advantage&lt;/h2>
&lt;p>The RTX 5080&amp;rsquo;s shift to GDDR7 memory (versus the &lt;a href="https://techfuelhq.com/gpu-reviews/rtx-4080-vs-rtx-4090/">RTX 4090&lt;/a>&amp;rsquo;s GDDR6X) affects inference performance in a specific way.&lt;/p>
&lt;p>GDDR6X used PAM4 (Pulse Amplitude Modulation with 4 levels) signaling to achieve high bandwidth at relatively lower clock speeds. GDDR7 moved to PAM3 (three-level) signaling per the JEDEC spec — trading fewer levels per symbol for better signal integrity at higher rates, delivering more bandwidth per memory die at lower voltage.&lt;/p>
&lt;p>&lt;strong>Bandwidth per watt improves.&lt;/strong> The GDDR7 on the 5080 achieves approximately similar total bandwidth to the 4090&amp;rsquo;s GDDR6X (~960 GB/s vs ~1008 GB/s) while consuming less power per GB/s delivered. For inference — which is bandwidth-dominated — this is the relevant metric.&lt;/p>
&lt;p>&lt;strong>16GB ceiling.&lt;/strong> The 5080 has 16GB GDDR7, not 24GB. For models quantized to fit in 16GB (up to the ~24B class at Q4; Gemma 3 27B is the marginal case), this works. For anything bigger — 27B at comfortable quants, 32B, and especially the 70B class (a ~42GB file at Q4) — the 16GB ceiling is the hard bottleneck and you&amp;rsquo;d need a 4090/5090, dual GPUs, or slow CPU offload.&lt;/p>
&lt;h2 id="power-limit-reduction-for-247-efficiency">Power limit reduction for 24/7 efficiency&lt;/h2>
&lt;p>The RTX 5080 at 90% power limit (324W ceiling):&lt;/p>
&lt;ul>
&lt;li>Interactive inference throughput: ~5–10% reduction (memory-bandwidth-limited, power limit rarely hits)&lt;/li>
&lt;li>Batch inference throughput: ~10–15% reduction (starts hitting the ceiling under full batch)&lt;/li>
&lt;li>Temperature reduction: 5–8°C under sustained load&lt;/li>
&lt;li>Electricity savings at 24/7 operation: 36W × 8760 hours = 315 kWh/year = ~$41/year at US average&lt;/li>
&lt;/ul>
&lt;p>Combined with the undervolt approach (see the &lt;a href="https://techfuelhq.com/articles/rtx-5080-undervolt-guide-2026/">RTX 5080 undervolt guide&lt;/a>), you can achieve similar power floor with better clock stability than a blunt power limit reduction. An undervolted 5080 at 925mV running at 2750MHz draws less power at equivalent clocks than a stock 5080 throttled by a power limit.&lt;/p>
&lt;h2 id="rtx-5080-vs-rtx-5060-ti-16gb-for-247-inference">RTX 5080 vs RTX 5060 Ti 16GB for 24/7 inference&lt;/h2>
&lt;p>The RTX 5060 Ti 16GB at approximately $480 vs RTX 5080 at ~$1,100:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Metric&lt;/th>
&lt;th scope="col">RTX 5080&lt;/th>
&lt;th scope="col">RTX 5060 Ti 16GB&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>VRAM&lt;/td>
&lt;td>16GB GDDR7&lt;/td>
&lt;td>16GB GDDR7&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Memory bandwidth&lt;/td>
&lt;td>~960 GB/s&lt;/td>
&lt;td>448 GB/s&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>TBP&lt;/td>
&lt;td>360W&lt;/td>
&lt;td>180W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Est. 24B-class interactive inference power&lt;/td>
&lt;td>180–250W&lt;/td>
&lt;td>110–160W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Est. 24B-class tok/sec (interactive)&lt;/td>
&lt;td>30–45&lt;/td>
&lt;td>14–21&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Price&lt;/td>
&lt;td>~$1,100&lt;/td>
&lt;td>~$480&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>3-year electricity (interactive, $0.13/kWh)&lt;/td>
&lt;td>~$200–275&lt;/td>
&lt;td>~$125–175&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The 5060 Ti generates roughly half the throughput (448 vs ~960 GB/s bandwidth) at a bit over half the power — tokens-per-watt lands in the same ballpark, slightly favoring the 5080. The 5080&amp;rsquo;s real advantage is absolute throughput: more tokens per second for lower latency and higher batch capacity; the 5060 Ti&amp;rsquo;s is upfront price and a lower absolute power ceiling.&lt;/p>
&lt;p>&lt;strong>Decision:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Maximize throughput&lt;/strong> for multiple simultaneous users, batch processing, or lowest-latency responses: RTX 5080&lt;/li>
&lt;li>&lt;strong>Maximize tokens-per-dollar over 3-year ownership&lt;/strong> for single-user interactive inference: RTX 5060 Ti 16GB&lt;/li>
&lt;li>&lt;strong>Already own the 5080&lt;/strong> for gaming or other GPU work: use it for inference too, the 24/7 cost is manageable&lt;/li>
&lt;/ul>
&lt;h2 id="247-operating-cost-for-the-rtx-5080">24/7 operating cost for the RTX 5080&lt;/h2>
&lt;p>Using the &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">Power &amp;amp; Cost Calculator&lt;/a> for a full workstation (GPU + CPU + RAM + misc):&lt;/p>
&lt;p>At 6 hours/day active inference at ~230W GPU, 18 hours idle at ~85W system:&lt;/p>
&lt;ul>
&lt;li>Annual kWh: ~(230W × 6h × 365) + (85W × 18h × 365) = 504 + 559 = 1,063 kWh/year&lt;/li>
&lt;li>At $0.13/kWh: $138/year&lt;/li>
&lt;li>At $0.28/kWh (California): $298/year&lt;/li>
&lt;/ul>
&lt;p>Over 3 years at US average: ~$414. The electricity cost of running a top-tier local inference rig is $138/year — less than a single cloud provider API subscription for a heavy user.&lt;/p>
&lt;h2 id="is-the-rtx-5080-the-right-choice-for-a-247-ai-node">Is the RTX 5080 the right choice for a 24/7 AI node?&lt;/h2>
&lt;p>&lt;strong>Yes, if:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>You&amp;rsquo;re already running it for gaming or 3D work during the day and want to use inference capacity at night&lt;/li>
&lt;li>You need to serve 2–4 simultaneous users with low latency&lt;/li>
&lt;li>You need batch throughput for document processing pipelines&lt;/li>
&lt;li>The premium over a 5060 Ti is acceptable given the hardware longevity&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>No (consider RTX 5060 Ti 16GB), if:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Single-user interactive use only&lt;/li>
&lt;li>Electricity cost is a primary concern&lt;/li>
&lt;li>You&amp;rsquo;re building a dedicated inference-only node&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>No (consider a different approach), if:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>You need 24GB+ VRAM (get an RTX 4090 or wait for 5090)&lt;/li>
&lt;li>You need multi-GPU scale (consumer cards don&amp;rsquo;t support NVLink for inference, use cloud)&lt;/li>
&lt;/ul>
&lt;p>The ROG Astral RTX 5080 OC that I use daily — documented at the &lt;a href="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/">GPU dataset page&lt;/a> and benchmarked in full in the &lt;a href="https://techfuelhq.com/gpu-reviews/rog-astral-rtx-5080-oc-review-2026/">ASUS ROG Astral RTX 5080 OC review&lt;/a> — is the class of card this article describes. The thermal headroom from the triple-fan cooler means sustained inference loads don&amp;rsquo;t need aggressive fan curves to stay under 75°C junction.&lt;/p>
&lt;hr>
&lt;p>&lt;em>For the undervolt settings that reduce the 5080&amp;rsquo;s 24/7 power draw: &lt;a href="https://techfuelhq.com/articles/rtx-5080-undervolt-guide-2026/">RTX 5080 Undervolt Guide&lt;/a>. For the full workstation build: &lt;a href="https://techfuelhq.com/articles/1000-local-ai-workstation-rtx-5080-2026/">$1,000 Local AI Workstation&lt;/a>.&lt;/em>&lt;/p></description></item><item><title>Terms of Service</title><link>https://techfuelhq.com/terms/</link><pubDate>Sat, 13 Jun 2026 00:00:00 -0500</pubDate><guid>https://techfuelhq.com/terms/</guid><description>&lt;h2 id="1-acceptance-of-these-terms">1. Acceptance of these terms&lt;/h2>
&lt;p>By accessing or using TechFuel HQ at &lt;a href="https://techfuelhq.com" rel="noopener">https://techfuelhq.com&lt;/a>, you agree to be bound by these Terms of Service and by our &lt;a href="https://techfuelhq.com/privacy/">Privacy Policy&lt;/a>. If you do not agree with any part of these terms, you should not use the site.&lt;/p>
&lt;h2 id="2-informational-not-professional-advice">2. Informational, not professional advice&lt;/h2>
&lt;p>TechFuel HQ publishes hardware guides, homelab ideas, and PC build recommendations for informational purposes only. All content reflects personal opinions and experience at the time of writing and is not guaranteed to be accurate, complete, or up to date for every region or use case.&lt;/p>
&lt;p>You are responsible for verifying compatibility, pricing, availability, and any potential risks before buying hardware, changing configurations, or deploying services based on information found on this site. You use any information from TechFuel HQ entirely at your own risk.&lt;/p>
&lt;h2 id="3-no-warranties">3. No warranties&lt;/h2>
&lt;p>TechFuel HQ is provided on an &amp;ldquo;as is&amp;rdquo; and &amp;ldquo;as available&amp;rdquo; basis. To the fullest extent permitted by law, the publisher makes no warranties of any kind, express or implied, including but not limited to warranties of accuracy, reliability, fitness for a particular purpose, or non-infringement.&lt;/p>
&lt;h2 id="4-limitation-of-liability">4. Limitation of liability&lt;/h2>
&lt;p>To the maximum extent permitted by law, TechFuel HQ and its publisher shall not be liable for any direct, indirect, incidental, consequential, or special damages arising out of or in any way connected with your use of the site, including but not limited to hardware failures, data loss, downtime, or financial losses.&lt;/p>
&lt;h2 id="5-external-links">5. External links&lt;/h2>
&lt;p>TechFuel HQ may link to third-party websites, tools, or products. These links are provided for convenience only. The publisher does not control and is not responsible for the content, policies, or practices of any third-party sites. Visiting external links is entirely at your discretion.&lt;/p>
&lt;h2 id="6-intellectual-property">6. Intellectual property&lt;/h2>
&lt;p>Unless otherwise noted, all text and original content on TechFuel HQ is owned by the publisher. You may quote short excerpts with clear attribution and a link back to the original article. Republishing full articles or training automated systems specifically on TechFuel HQ content without prior written permission is not allowed.&lt;/p>
&lt;h2 id="7-acceptable-use">7. Acceptable use&lt;/h2>
&lt;p>You agree not to attempt to harm, disrupt, or misuse the site, including but not limited to probing for vulnerabilities, attempting unauthorized access, or using automated tools at a rate that degrades service for others. Any abusive or unlawful use of TechFuel HQ is prohibited.&lt;/p>
&lt;h2 id="8-changes-to-these-terms">8. Changes to these terms&lt;/h2>
&lt;p>These Terms of Service may be updated from time to time as the site evolves. When changes are made, the &amp;ldquo;Last updated&amp;rdquo; date will be revised. Your continued use of TechFuel HQ after changes are posted constitutes acceptance of the updated terms.&lt;/p>
&lt;h2 id="9-contact">9. Contact&lt;/h2>
&lt;p>If you have questions about these terms, you can reach the publisher using the contact details on the &lt;a href="https://techfuelhq.com/contact/">Contact&lt;/a> page.&lt;/p></description></item><item><title>Home Assistant Zigbee and Z-Wave Integration (2026)</title><link>https://techfuelhq.com/tutorials/home-assistant-zigbee-zwave-2026/</link><pubDate>Fri, 12 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tutorials/home-assistant-zigbee-zwave-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-12 · ~15 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/tutorials/home-assistant-zigbee-zwave-2026.svg" alt="Topology diagram of a Home Assistant Zigbee and Z-Wave setup: a Sonoff Zigbee 3.0 Dongle Plus (CC2652P, 2.4 GHz channel 25) and a Zooz 800 Series ZST39 LR Z-Wave stick (800-900 MHz) pass through the Proxmox host via USB into a Home Assistant OS VM, where Zigbee2MQTT publishes to the Mosquitto MQTT broker and Z-Wave JS UI drives Z-Wave, both feeding entities into HA Core; the Zigbee mesh (50-200 devices) and Z-Wave mesh (232 max, certified) communicate over RF, all fully local with no cloud account." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>Home Assistant running as a VM on Proxmox with no smart home protocol connected is a machine with no sensors. This guide adds Zigbee and Z-Wave: the two protocols that cover the vast majority of serious smart home devices, both running fully local with no cloud account required.&lt;/p>
&lt;p>This builds directly on the &lt;a href="https://techfuelhq.com/tutorials/home-assistant-proxmox-2026/">Home Assistant on Proxmox setup guide&lt;/a>. If HAOS isn&amp;rsquo;t running yet, start there.&lt;/p>
&lt;h2 id="protocol-choice-zigbee-z-wave-or-both">Protocol choice: Zigbee, Z-Wave, or both&lt;/h2>
&lt;p>The honest breakdown:&lt;/p>
&lt;p>&lt;strong>Zigbee:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>2.4 GHz frequency (shared with WiFi and Bluetooth)&lt;/li>
&lt;li>Device selection: enormous — most brands have Zigbee options (Aqara, Sonoff, Philips Hue, IKEA TRÅDFRI, SmartThings)&lt;/li>
&lt;li>Price per device: low ($10–25 for sensors, $15–30 for plugs)&lt;/li>
&lt;li>Mesh routing: automatic via mains-powered devices&lt;/li>
&lt;li>Interference sensitivity: moderate — a busy WiFi environment requires attention to channel selection&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Z-Wave:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>800–900 MHz frequency (no WiFi interference, essentially)&lt;/li>
&lt;li>Device selection: smaller but mature — Zooz, Inovelli, Aeotec, HomeSeer&lt;/li>
&lt;li>Price per device: higher ($35–80 for most devices)&lt;/li>
&lt;li>Mesh routing: automatic, 232 device max per network&lt;/li>
&lt;li>Interference sensitivity: very low&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Recommendation for a new build:&lt;/strong> start with Zigbee. Add Z-Wave for specific devices (Z-Wave locks are often preferred for the certification requirement) or if Zigbee interference becomes a genuine problem in a dense WiFi environment.&lt;/p>
&lt;h2 id="hardware-you-need">Hardware you need&lt;/h2>
&lt;p>&lt;strong>For Zigbee:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Sonoff Zigbee 3.0 USB Dongle Plus ($15–20): CC2652P chip, USB-A connector, widely supported in Zigbee2MQTT. The &amp;ldquo;Plus&amp;rdquo; model (not the E model) is the correct one for Zigbee2MQTT.&lt;/li>
&lt;li>Or: SMLIGHT SLZB-06 ($40): network-connected coordinator, no USB cable needed, connects to Zigbee2MQTT over TCP/IP.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>For Z-Wave:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Zooz 800 Series USB Stick ZST39 LR ($40): Z-Wave 800 series chip, Long Range support, USB-A connector.&lt;/li>
&lt;li>Or: Aeotec Z-Stick 7 Plus ($50): widely supported, Z-Wave 700 series.&lt;/li>
&lt;/ul>
&lt;p>If running HAOS on Proxmox, the USB coordinator plugs into the Proxmox host and passes through to the HAOS VM.&lt;/p>
&lt;h2 id="usb-passthrough-to-haos-vm-on-proxmox">USB passthrough to HAOS VM on Proxmox&lt;/h2>
&lt;p>This step is covered in the &lt;a href="https://techfuelhq.com/tutorials/home-assistant-proxmox-2026/">HAOS on Proxmox guide&lt;/a>, but here&amp;rsquo;s the exact process:&lt;/p>
&lt;ol>
&lt;li>Plug the USB coordinator into the Proxmox host&lt;/li>
&lt;li>Identify it: &lt;code>lsusb&lt;/code> — look for the Silicon Labs or Texas Instruments entry&lt;/li>
&lt;li>In the Proxmox web UI → VM → Hardware → Add → USB Device&lt;/li>
&lt;li>Select the coordinator by vendor/device ID (e.g., &lt;code>10c4:ea60&lt;/code> for CP2102-based Sonoff dongles)&lt;/li>
&lt;li>The VM must be stopped to add USB passthrough, then restarted&lt;/li>
&lt;/ol>
&lt;p>Verify it appears inside HAOS: Home Assistant → Settings → System → Hardware — the USB device should be listed.&lt;/p>
&lt;h2 id="zigbee2mqtt-setup">Zigbee2MQTT setup&lt;/h2>
&lt;p>Zigbee2MQTT runs as a Home Assistant add-on inside HAOS. Install it:&lt;/p>
&lt;ol>
&lt;li>Home Assistant → Settings → Add-ons → Add-on Store&lt;/li>
&lt;li>Search &amp;ldquo;Zigbee2MQTT&amp;rdquo; (it&amp;rsquo;s in the community add-ons repository — if it doesn&amp;rsquo;t appear, add the repository: &lt;code>https://github.com/zigbee2mqtt/hassio-zigbee2mqtt&lt;/code>)&lt;/li>
&lt;li>Install → Start&lt;/li>
&lt;li>Configuration tab:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">data_path&lt;/span>: &lt;span style="color:#ae81ff">/config/zigbee2mqtt&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">socat&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">enabled&lt;/span>: &lt;span style="color:#66d9ef">false&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">mqtt&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">server&lt;/span>: &lt;span style="color:#ae81ff">mqtt://core-mosquitto&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">serial&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">port&lt;/span>: &lt;span style="color:#ae81ff">/dev/ttyUSB0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">adapter&lt;/span>: &lt;span style="color:#ae81ff">ezsp&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Adjust &lt;code>serial.port&lt;/code> to match where your coordinator appears (check Settings → System → Hardware). Common values: &lt;code>/dev/ttyUSB0&lt;/code>, &lt;code>/dev/ttyACM0&lt;/code>, &lt;code>/dev/serial/by-id/usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus...&lt;/code>.&lt;/p>
&lt;p>Using the &lt;code>/dev/serial/by-id/&lt;/code> path is more reliable — the &lt;code>ttyUSB0&lt;/code> assignment can shift if you plug in other USB devices.&lt;/p>
&lt;p>&lt;strong>MQTT broker:&lt;/strong> if Mosquitto isn&amp;rsquo;t installed, add it first: Add-on Store → Mosquitto broker → Install. Zigbee2MQTT writes device state to MQTT topics; Home Assistant reads those topics to create entities.&lt;/p>
&lt;h2 id="pair-your-first-zigbee-device">Pair your first Zigbee device&lt;/h2>
&lt;ol>
&lt;li>Open Zigbee2MQTT dashboard (the &amp;ldquo;Open Web UI&amp;rdquo; button in the add-on)&lt;/li>
&lt;li>Click &amp;ldquo;Permit join&amp;rdquo; — Zigbee2MQTT opens the network for 60 seconds&lt;/li>
&lt;li>Put your device in pairing mode (varies by device: usually a long button press or remove/reinsert battery)&lt;/li>
&lt;li>The device appears in the Devices list within seconds&lt;/li>
&lt;li>Rename it to something useful: &amp;ldquo;Living Room Motion Sensor&amp;rdquo;, &amp;ldquo;Kitchen Smart Plug&amp;rdquo;&lt;/li>
&lt;/ol>
&lt;p>Home Assistant automatically creates entities for the device via the MQTT discovery integration. New entities appear in Settings → Entities without any manual configuration.&lt;/p>
&lt;h2 id="zigbee-channel-selection">Zigbee channel selection&lt;/h2>
&lt;p>Zigbee operates on channels 11–26 in the 2.4 GHz band. WiFi channels 1, 6, and 11 are the standard non-overlapping channels. The overlap looks like this:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">WiFi Channel&lt;/th>
&lt;th scope="col">Overlaps Zigbee Channels&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>1&lt;/td>
&lt;td>11, 12&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>6&lt;/td>
&lt;td>16, 17&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>11&lt;/td>
&lt;td>21, 22, 23&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>&lt;strong>Best Zigbee channels to avoid WiFi overlap:&lt;/strong> 15, 20, 25, or 26.&lt;/p>
&lt;p>Set your Zigbee channel before pairing any devices — changing channels after pairing requires re-pairing everything. In Zigbee2MQTT configuration:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">advanced&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">channel&lt;/span>: &lt;span style="color:#ae81ff">25&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Use channel 25 if your router is on WiFi 11, or channel 20 if your router is on WiFi 6.&lt;/p>
&lt;h2 id="z-wave-js-ui-setup">Z-Wave JS UI setup&lt;/h2>
&lt;p>For Z-Wave, the official Home Assistant integration uses Z-Wave JS directly. The simplest setup:&lt;/p>
&lt;ol>
&lt;li>Home Assistant → Settings → Devices &amp;amp; Services → Add Integration → Z-Wave&lt;/li>
&lt;li>Select &amp;ldquo;Z-Wave JS (Recommended)&amp;rdquo;&lt;/li>
&lt;li>If Z-Wave JS isn&amp;rsquo;t running yet, HA prompts you to install the &amp;ldquo;Z-Wave JS&amp;rdquo; add-on — install it&lt;/li>
&lt;li>In Z-Wave JS add-on configuration, set the USB path to your Z-Wave coordinator&lt;/li>
&lt;li>Start the add-on, complete the HA integration setup&lt;/li>
&lt;/ol>
&lt;p>The Z-Wave JS UI add-on (separate from Z-Wave JS) adds a web interface for device management, network health visualization, and device configuration parameters. Install it alongside Z-Wave JS for anything beyond basic pairing:&lt;/p>
&lt;p>Add-on Store → &amp;ldquo;Z-Wave JS UI&amp;rdquo; → Install&lt;/p>
&lt;p>Z-Wave JS UI replaces the basic Z-Wave JS add-on — configure it with your coordinator path and the HA integration to use port 3000 instead of the default Z-Wave JS port.&lt;/p>
&lt;h2 id="pairing-z-wave-devices">Pairing Z-Wave devices&lt;/h2>
&lt;p>Z-Wave pairing (called &amp;ldquo;inclusion&amp;rdquo;) must happen with the device close to the coordinator — typically within 3 meters. Once paired, move the device to its permanent location.&lt;/p>
&lt;ol>
&lt;li>Z-Wave JS UI web interface → Network → Add Node&lt;/li>
&lt;li>Select &amp;ldquo;Secure Inclusion&amp;rdquo; (S2 authenticated for locks, S0 or S2 unauthenticated for sensors/switches)&lt;/li>
&lt;li>Follow the device-specific pairing procedure (usually a button sequence on the device)&lt;/li>
&lt;li>After inclusion, the device appears in HA automatically&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Security classes matter for Z-Wave:&lt;/strong> smart locks should always be included with S2 Authenticated. Sensors and switches that don&amp;rsquo;t need security use S2 Unauthenticated or no security (unencrypted, faster for battery-powered devices).&lt;/p>
&lt;h2 id="building-automations-with-zigbeez-wave-devices">Building automations with Zigbee/Z-Wave devices&lt;/h2>
&lt;p>Home Assistant automations in YAML or the GUI editor work the same regardless of whether the device is Zigbee, Z-Wave, or WiFi.&lt;/p>
&lt;p>&lt;strong>Example: Motion-activated light with time condition&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">alias&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Motion light - living room&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">trigger&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">platform&lt;/span>: &lt;span style="color:#ae81ff">state&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">entity_id&lt;/span>: &lt;span style="color:#ae81ff">binary_sensor.living_room_motion&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">to&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;on&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">condition&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">condition&lt;/span>: &lt;span style="color:#ae81ff">time&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">after&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;19:00:00&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">before&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;23:00:00&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">action&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">service&lt;/span>: &lt;span style="color:#ae81ff">light.turn_on&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">target&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">entity_id&lt;/span>: &lt;span style="color:#ae81ff">light.living_room_main&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">data&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">brightness_pct&lt;/span>: &lt;span style="color:#ae81ff">80&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">color_temp_kelvin&lt;/span>: &lt;span style="color:#ae81ff">3000&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Example: Zigbee door sensor triggers alarm notification&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">alias&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Front door open - alert&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">trigger&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">platform&lt;/span>: &lt;span style="color:#ae81ff">state&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">entity_id&lt;/span>: &lt;span style="color:#ae81ff">binary_sensor.front_door&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">to&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;on&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">for&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">minutes&lt;/span>: &lt;span style="color:#ae81ff">5&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">condition&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">condition&lt;/span>: &lt;span style="color:#ae81ff">state&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">entity_id&lt;/span>: &lt;span style="color:#ae81ff">input_boolean.alarm_armed&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">state&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;on&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">action&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">service&lt;/span>: &lt;span style="color:#ae81ff">notify.mobile_app_phone&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">data&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">message&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Front door has been open for 5 minutes&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">title&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Home Alert&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Example: Z-Wave smart plug energy monitoring&lt;/strong>&lt;/p>
&lt;p>Zooz Z-Wave plugs with energy monitoring expose kWh and watt sensors automatically. Create a dashboard card:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">type&lt;/span>: &lt;span style="color:#ae81ff">sensor&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">entity&lt;/span>: &lt;span style="color:#ae81ff">sensor.office_plug_current_consumption&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">name&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Office Wattage&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Or integrate with the Energy dashboard: Settings → Energy → Add Individual Device.&lt;/p>
&lt;h2 id="zigbee-mesh-health">Zigbee mesh health&lt;/h2>
&lt;p>A healthy Zigbee mesh requires router devices distributed through your home. Key rules:&lt;/p>
&lt;p>&lt;strong>Mains-powered Zigbee devices are automatic routers.&lt;/strong> Smart plugs, smart bulbs, and in-wall switches extend the mesh. Battery-powered devices (sensors, remotes) are end devices that must connect to either the coordinator or a router device.&lt;/p>
&lt;p>&lt;strong>Avoid gaps.&lt;/strong> If battery sensors are more than 10–15 meters from the nearest router, pairing will succeed but reliability will degrade. Add smart plugs between the coordinator and distant sensors.&lt;/p>
&lt;p>&lt;strong>Avoid RF-dense areas for coordinator placement.&lt;/strong> Place the Zigbee coordinator USB stick away from WiFi routers, Bluetooth audio devices, and microwave ovens. A 2-meter USB extension cable to move the stick away from the Proxmox server&amp;rsquo;s USB ports (which sit near network cards) can significantly improve range.&lt;/p>
&lt;p>&lt;strong>Check mesh health in Zigbee2MQTT:&lt;/strong> Dashboard → Map — the network map shows each device and its uplink path to the coordinator. Devices showing high LQI values (≥80) are healthy. Devices showing LQI below 50 need a router device closer to them.&lt;/p>
&lt;h2 id="troubleshooting">Troubleshooting&lt;/h2>
&lt;p>&lt;strong>Device won&amp;rsquo;t pair:&lt;/strong> check that &amp;ldquo;Permit join&amp;rdquo; is active in Zigbee2MQTT. For Zigbee devices, pair close to the coordinator. For Z-Wave devices, ensure the distance is under 3 meters during inclusion.&lt;/p>
&lt;p>&lt;strong>Device pairs but disappears after a few hours:&lt;/strong> RF interference. Check Zigbee channel overlap with your WiFi channel. Move the USB coordinator away from the server&amp;rsquo;s WiFi card.&lt;/p>
&lt;p>&lt;strong>Z-Wave device not responding:&lt;/strong> check Z-Wave JS UI → Network → Network Health. A device showing dead status needs to be healed (Z-Wave JS UI → Device → Heal Node) or re-paired.&lt;/p>
&lt;p>&lt;strong>Zigbee2MQTT won&amp;rsquo;t start:&lt;/strong> check the MQTT broker is running and the serial port path is correct. Run &amp;ldquo;Check Configuration&amp;rdquo; in the add-on before starting.&lt;/p>
&lt;p>&lt;strong>Wrong entity units or values:&lt;/strong> Zigbee2MQTT&amp;rsquo;s device database sometimes maps sensors to wrong units for certain firmware versions. Check the device&amp;rsquo;s entry at &lt;a href="https://www.zigbee2mqtt.io/supported-devices/" rel="noopener">zigbee2mqtt.io/supported-devices&lt;/a> for known issues and configuration overrides.&lt;/p>
&lt;hr>
&lt;p>&lt;em>This guide builds on the &lt;a href="https://techfuelhq.com/tutorials/home-assistant-proxmox-2026/">Home Assistant OS on Proxmox setup guide&lt;/a> — start there if HAOS isn&amp;rsquo;t running yet. With your Zigbee and Z-Wave devices paired and reporting state, the &lt;a href="https://techfuelhq.com/tutorials/home-assistant-automations-guide-2026/">Home Assistant automations guide&lt;/a> is the next step — it turns those sensors and switches into triggers and actions. For remote access to your Home Assistant from outside the home network, the &lt;a href="https://techfuelhq.com/tutorials/tailscale-remote-access-homelab-2026/">Tailscale remote access guide&lt;/a> covers the HA Tailscale add-on setup. For monitoring all your home services including HA uptime, the &lt;a href="https://techfuelhq.com/tutorials/docker-compose-starter-stack-homelab-2026/">Docker Compose starter stack&lt;/a> covers Uptime Kuma configuration.&lt;/em>&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://www.zigbee2mqtt.io/guide/getting-started/" rel="noopener">Zigbee2MQTT: Getting started&lt;/a> &amp;ndash; official setup for the coordinator, MQTT broker, and device pairing.&lt;/li>
&lt;li>&lt;a href="https://www.zigbee2mqtt.io/guide/configuration/zigbee-network.html" rel="noopener">Zigbee2MQTT: Zigbee network configuration&lt;/a> &amp;ndash; official reference for channel selection and network settings.&lt;/li>
&lt;li>&lt;a href="https://www.home-assistant.io/integrations/zwave_js/" rel="noopener">Home Assistant: Z-Wave integration&lt;/a> &amp;ndash; official docs for connecting Home Assistant to the Z-Wave JS driver, inclusion, and security classes.&lt;/li>
&lt;li>&lt;a href="https://mosquitto.org/documentation/" rel="noopener">Eclipse Mosquitto documentation&lt;/a> &amp;ndash; official docs for the MQTT broker that Zigbee2MQTT publishes to.&lt;/li>
&lt;li>&lt;a href="https://pve.proxmox.com/wiki/USB_Devices_in_Virtual_Machines" rel="noopener">Proxmox VE USB Devices in Virtual Machines&lt;/a> &amp;ndash; official guide to passing the USB coordinator through to the HAOS VM.&lt;/li>
&lt;/ul></description></item><item><title>Paperless-ngx Docker Setup with OCR and Auto-Tagging (2026)</title><link>https://techfuelhq.com/tutorials/paperless-ngx-docker-setup-2026/</link><pubDate>Fri, 12 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tutorials/paperless-ngx-docker-setup-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-12 · ~14 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/tutorials/paperless-ngx-docker-setup-2026.svg" alt="Architecture diagram of the five-container Paperless-ngx Docker stack: a document dropped in the consume folder is processed by the paperless-ngx core app, which uses PostgreSQL for metadata, Redis as the OCR task queue, and Tika plus Gotenberg to extract and render non-PDF formats, producing a full-text-searchable, auto-tagged archive at roughly 500 MB idle RAM total." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>Drop a scanned PDF into a folder. Thirty seconds later it&amp;rsquo;s OCR&amp;rsquo;d, tagged, searchable by full text, and automatically filed under the correspondent that sent it. That&amp;rsquo;s Paperless-ngx working correctly. It is the paper half of a personal archive; the web half — saving articles so their text lives on your disk rather than on someone&amp;rsquo;s server — belongs to a &lt;a href="https://techfuelhq.com/homelab/self-hosted-read-it-later-2026/">self-hosted read-it-later app&lt;/a>.&lt;/p>
&lt;p>Getting there requires the full compose stack — not just the Paperless container. The official docs make Tika and Gotenberg optional. Treat them as required: without them, any non-PDF file that hits your consume folder will ingest silently with zero searchable text. This guide builds the complete stack from scratch.&lt;/p>
&lt;h2 id="the-full-stack">The full stack&lt;/h2>
&lt;p>Paperless-ngx is not a single container. For production use you need five services:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Container&lt;/th>
&lt;th scope="col">Role&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>paperless-ngx&lt;/code>&lt;/td>
&lt;td>Core app, web UI, OCR processing&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>paperless-db&lt;/code>&lt;/td>
&lt;td>PostgreSQL — document metadata, tags, correspondents&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>paperless-redis&lt;/code>&lt;/td>
&lt;td>Task queue for background OCR jobs&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>paperless-tika&lt;/code>&lt;/td>
&lt;td>Document text extraction (Word, Excel, PowerPoint, ODT)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>paperless-gotenberg&lt;/code>&lt;/td>
&lt;td>PDF rendering of non-PDF documents for OCR&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Redis is the task broker — without it, OCR runs in-process and blocks the UI during large imports. Tika and Gotenberg together cover the full document format surface. PostgreSQL is required; SQLite write-locks under concurrent access.&lt;/p>
&lt;h2 id="directory-layout">Directory layout&lt;/h2>
&lt;p>Create this before writing any compose files:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>mkdir -p /opt/paperless/&lt;span style="color:#f92672">{&lt;/span>consume,data,export,media&lt;span style="color:#f92672">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>&lt;code>consume/&lt;/code> — drop documents here for auto-processing&lt;/li>
&lt;li>&lt;code>data/&lt;/code> — Paperless application data (classification models, search index)&lt;/li>
&lt;li>&lt;code>export/&lt;/code> — output of &lt;code>document_exporter&lt;/code> command for backups&lt;/li>
&lt;li>&lt;code>media/&lt;/code> — archived original files and thumbnails&lt;/li>
&lt;/ul>
&lt;h2 id="docker-compose">Docker Compose&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">services&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">paperless-db&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">postgres:16&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">paperless-db&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">unless-stopped&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">environment&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">POSTGRES_DB&lt;/span>: &lt;span style="color:#ae81ff">paperless&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">POSTGRES_USER&lt;/span>: &lt;span style="color:#ae81ff">paperless&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">POSTGRES_PASSWORD&lt;/span>: &lt;span style="color:#ae81ff">CHANGE_THIS_PASSWORD&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">/opt/paperless/db:/var/lib/postgresql/data&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">healthcheck&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">test&lt;/span>: [&lt;span style="color:#e6db74">&amp;#34;CMD-SHELL&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;pg_isready -U paperless&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">interval&lt;/span>: &lt;span style="color:#ae81ff">10s&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">timeout&lt;/span>: &lt;span style="color:#ae81ff">5s&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">retries&lt;/span>: &lt;span style="color:#ae81ff">5&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">paperless-redis&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">redis:7-alpine&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">paperless-redis&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">unless-stopped&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">command&lt;/span>: &lt;span style="color:#ae81ff">redis-server --save 60 1 --loglevel warning&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">paperless-tika&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">ghcr.io/paperless-ngx/tika:latest&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">paperless-tika&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">unless-stopped&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">paperless-gotenberg&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">gotenberg/gotenberg:8&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">paperless-gotenberg&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">unless-stopped&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">command&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">gotenberg&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - --&lt;span style="color:#ae81ff">chromium-disable-javascript=true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - --&lt;span style="color:#ae81ff">chromium-allow-list=file:///tmp/.*&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">paperless&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">ghcr.io/paperless-ngx/paperless-ngx:2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">paperless&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">unless-stopped&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">depends_on&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">paperless-db&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">condition&lt;/span>: &lt;span style="color:#ae81ff">service_healthy&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">paperless-redis&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">condition&lt;/span>: &lt;span style="color:#ae81ff">service_started&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">paperless-tika&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">condition&lt;/span>: &lt;span style="color:#ae81ff">service_started&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">paperless-gotenberg&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">condition&lt;/span>: &lt;span style="color:#ae81ff">service_started&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">ports&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#34;8010:8000&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">/opt/paperless/data:/usr/src/paperless/data&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">/opt/paperless/media:/usr/src/paperless/media&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">/opt/paperless/consume:/usr/src/paperless/consume&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">/opt/paperless/export:/usr/src/paperless/export&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">environment&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">PAPERLESS_REDIS&lt;/span>: &lt;span style="color:#ae81ff">redis://paperless-redis:6379&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">PAPERLESS_DBHOST&lt;/span>: &lt;span style="color:#ae81ff">paperless-db&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">PAPERLESS_DBNAME&lt;/span>: &lt;span style="color:#ae81ff">paperless&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">PAPERLESS_DBUSER&lt;/span>: &lt;span style="color:#ae81ff">paperless&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">PAPERLESS_DBPASS&lt;/span>: &lt;span style="color:#ae81ff">CHANGE_THIS_PASSWORD&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">PAPERLESS_TIKA_ENABLED&lt;/span>: &lt;span style="color:#ae81ff">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">PAPERLESS_TIKA_ENDPOINT&lt;/span>: &lt;span style="color:#ae81ff">http://paperless-tika:9998&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">PAPERLESS_TIKA_GOTENBERG_ENDPOINT&lt;/span>: &lt;span style="color:#ae81ff">http://paperless-gotenberg:3000&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">PAPERLESS_URL&lt;/span>: &lt;span style="color:#ae81ff">https://paperless.yourdomain.com&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">PAPERLESS_SECRET_KEY&lt;/span>: &lt;span style="color:#ae81ff">CHANGE_THIS_SECRET_KEY&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">PAPERLESS_TIME_ZONE&lt;/span>: &lt;span style="color:#ae81ff">America/Chicago&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">PAPERLESS_OCR_LANGUAGE&lt;/span>: &lt;span style="color:#ae81ff">eng&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">PAPERLESS_CONSUMER_POLLING&lt;/span>: &lt;span style="color:#ae81ff">60&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">PAPERLESS_CONSUMER_RECURSIVE&lt;/span>: &lt;span style="color:#ae81ff">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">PAPERLESS_CONSUMER_SUBDIRS_AS_TAGS&lt;/span>: &lt;span style="color:#ae81ff">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">USERMAP_UID&lt;/span>: &lt;span style="color:#ae81ff">1000&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">USERMAP_GID&lt;/span>: &lt;span style="color:#ae81ff">1000&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Three values require changes before starting:&lt;/p>
&lt;ul>
&lt;li>&lt;code>PAPERLESS_DBPASS&lt;/code> and &lt;code>POSTGRES_PASSWORD&lt;/code> — must match, must not be the default&lt;/li>
&lt;li>&lt;code>PAPERLESS_SECRET_KEY&lt;/code> — generate with &lt;code>openssl rand -hex 32&lt;/code>&lt;/li>
&lt;li>&lt;code>PAPERLESS_URL&lt;/code> — the URL you&amp;rsquo;ll access Paperless from (used for CSRF protection)&lt;/li>
&lt;li>&lt;code>PAPERLESS_TIME_ZONE&lt;/code> — your local timezone (see &lt;a href="https://en.wikipedia.org/wiki/List_of_tz_database_time_zones" rel="noopener">IANA timezone list&lt;/a>)&lt;/li>
&lt;li>&lt;code>PAPERLESS_OCR_LANGUAGE&lt;/code> — three-letter Tesseract language code; &lt;code>eng&lt;/code> for English, &lt;code>deu&lt;/code> for German, &lt;code>fra&lt;/code> for French, &lt;code>spa&lt;/code> for Spanish&lt;/li>
&lt;/ul>
&lt;h2 id="first-run-setup">First-run setup&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>cd /opt/paperless
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker compose up -d
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Create the admin user&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker compose exec paperless python3 manage.py createsuperuser
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Follow the prompts for username, email, and password. Then access the UI at &lt;code>http://your-host-ip:8010&lt;/code>.&lt;/p>
&lt;h2 id="reverse-proxy-with-nginx-proxy-manager">Reverse proxy with Nginx Proxy Manager&lt;/h2>
&lt;p>Port 8010 is fine for local access. For a proper subdomain (paperless.yourdomain.com) with SSL, add an NPM proxy host pointing to your Paperless container&amp;rsquo;s port 8000.&lt;/p>
&lt;p>In NPM:&lt;/p>
&lt;ol>
&lt;li>Add Proxy Host → &lt;code>paperless.yourdomain.com&lt;/code> → Forward to &lt;code>paperless:8000&lt;/code> (or your host IP:8010)&lt;/li>
&lt;li>Enable SSL with Let&amp;rsquo;s Encrypt&lt;/li>
&lt;li>Advanced tab — add these headers:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-nginx" data-lang="nginx">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">proxy_set_header&lt;/span> &lt;span style="color:#e6db74">X-Forwarded-Proto&lt;/span> &lt;span style="color:#e6db74">https&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">proxy_set_header&lt;/span> &lt;span style="color:#e6db74">X-Forwarded-For&lt;/span> $proxy_add_x_forwarded_for;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">client_max_body_size&lt;/span> &lt;span style="color:#e6db74">50M&lt;/span>;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The &lt;code>client_max_body_size 50M&lt;/code> is necessary for uploading large scanned documents through the web UI. Without it, large PDFs return 413 errors.&lt;/p>
&lt;p>Full NPM setup is in the &lt;a href="https://techfuelhq.com/tutorials/nginx-proxy-manager-homelab-2026/">Nginx Proxy Manager guide&lt;/a>.&lt;/p>
&lt;h2 id="subdirectory-to-tag-mapping">Subdirectory-to-tag mapping&lt;/h2>
&lt;p>The compose file includes &lt;code>PAPERLESS_CONSUMER_SUBDIRS_AS_TAGS: 1&lt;/code>. This means if you create subdirectories inside the consume folder, files dropped there get automatically tagged with that folder name:&lt;/p>
&lt;pre tabindex="0">&lt;code>consume/
financial/ → documents tagged &amp;#34;financial&amp;#34;
medical/ → documents tagged &amp;#34;medical&amp;#34;
insurance/ → documents tagged &amp;#34;insurance&amp;#34;
tax/ → documents tagged &amp;#34;tax&amp;#34;
&lt;/code>&lt;/pre>&lt;p>This is the fastest way to build an organized archive from the start — your scanner or phone app can save to the right subfolder and the tag appears automatically.&lt;/p>
&lt;h2 id="auto-tagging-with-matching-rules">Auto-tagging with matching rules&lt;/h2>
&lt;p>After the initial setup, configure correspondents and document types via the Admin panel (Settings → Correspondents and Document Types) or through the main UI.&lt;/p>
&lt;p>A matching rule checks the OCR&amp;rsquo;d text and applies metadata automatically. Examples that work well:&lt;/p>
&lt;p>&lt;strong>Correspondent: Chase Bank&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Matching algorithm: Any word&lt;/li>
&lt;li>Match: &lt;code>Chase&lt;/code>, &lt;code>JPMorgan&lt;/code>&lt;/li>
&lt;li>Auto-assign correspondent: Chase Bank&lt;/li>
&lt;li>Auto-assign tag: financial&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Correspondent: IRS&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Matching algorithm: Any word&lt;/li>
&lt;li>Match: &lt;code>Internal Revenue Service&lt;/code>, &lt;code>Department of the Treasury&lt;/code>, &lt;code>IRS&lt;/code>&lt;/li>
&lt;li>Auto-assign correspondent: IRS&lt;/li>
&lt;li>Auto-assign tag: tax, federal&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Document type: Insurance&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Matching algorithm: Any word&lt;/li>
&lt;li>Match: &lt;code>policy number&lt;/code>, &lt;code>deductible&lt;/code>, &lt;code>premium&lt;/code>, &lt;code>coverage&lt;/code>&lt;/li>
&lt;li>Auto-assign document type: Insurance Policy&lt;/li>
&lt;/ul>
&lt;p>Once these rules exist, every document that hits the consume folder gets correspondent and type assignment without you touching it. The payoff compounds: after six months, your Paperless library is fully organized with zero manual filing.&lt;/p>
&lt;h2 id="supported-file-types">Supported file types&lt;/h2>
&lt;p>Files Paperless-ngx handles with the full Tika + Gotenberg stack:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Format&lt;/th>
&lt;th scope="col">Handling&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>PDF (native text)&lt;/td>
&lt;td>Extracted directly&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>PDF (scanned image)&lt;/td>
&lt;td>Tesseract OCR&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>JPEG, PNG, TIFF&lt;/td>
&lt;td>Tesseract OCR&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>DOCX, ODT&lt;/td>
&lt;td>Tika text extraction + Gotenberg render&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>XLSX, ODS&lt;/td>
&lt;td>Tika text extraction&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>PPTX, ODP&lt;/td>
&lt;td>Tika text extraction + Gotenberg render&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>HTML&lt;/td>
&lt;td>Gotenberg render + OCR&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>TXT, CSV&lt;/td>
&lt;td>Direct text import&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>EML (email export)&lt;/td>
&lt;td>Tika parsing&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Without Tika and Gotenberg, everything above PDF/image fails silently.&lt;/p>
&lt;h2 id="performance-and-resource-usage">Performance and resource usage&lt;/h2>
&lt;p>At idle with no active processing:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Container&lt;/th>
&lt;th scope="col">Idle RAM&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>paperless-ngx&lt;/td>
&lt;td>~180 MB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>paperless-db (PostgreSQL)&lt;/td>
&lt;td>~50 MB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>paperless-redis&lt;/td>
&lt;td>~10 MB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>paperless-tika&lt;/td>
&lt;td>~200 MB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>paperless-gotenberg&lt;/td>
&lt;td>~60 MB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Total&lt;/strong>&lt;/td>
&lt;td>&lt;strong>~500 MB&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>During OCR of a 10-page scanned PDF: the Paperless container CPU spikes to 80–100% on one core for 5–15 seconds per document. OCR is CPU-bound. On an Intel N100, single-document OCR takes about 8–12 seconds per page. A multi-core machine processes documents faster because background task workers scale with CPU count.&lt;/p>
&lt;p>For bulk imports (100+ documents), set &lt;code>PAPERLESS_TASK_WORKERS&lt;/code> to match your core count:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">PAPERLESS_TASK_WORKERS&lt;/span>: &lt;span style="color:#ae81ff">4&lt;/span> &lt;span style="color:#75715e"># For a 4-core host&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="back-up-your-archive">Back up your archive&lt;/h2>
&lt;p>Paperless-ngx backup strategy has two components:&lt;/p>
&lt;p>&lt;strong>1. PostgreSQL database dump&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>docker compose exec paperless-db pg_dump -U paperless paperless &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> &amp;gt; /opt/paperless/export/paperless-&lt;span style="color:#66d9ef">$(&lt;/span>date +%Y%m%d&lt;span style="color:#66d9ef">)&lt;/span>.sql
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>2. Document export (optional but useful)&lt;/strong>&lt;/p>
&lt;p>The &lt;code>document_exporter&lt;/code> command writes all archived documents plus a manifest JSON to your export directory:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>docker compose exec paperless document_exporter /usr/src/paperless/export
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This export is human-readable and self-contained — if you need to rebuild Paperless from scratch, the exporter output plus a fresh database is enough to restore everything including tags, correspondents, and custom fields.&lt;/p>
&lt;p>Schedule both to run nightly via a cron job or systemd timer, then send the output to off-site storage. The &lt;a href="https://techfuelhq.com/tutorials/automated-offsite-backups-restic-2026/">restic off-site backup guide&lt;/a> covers sending these exports to Backblaze B2 automatically.&lt;/p>
&lt;p>&lt;strong>What to back up:&lt;/strong>&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Path&lt;/th>
&lt;th scope="col">Contents&lt;/th>
&lt;th scope="col">Required for restore&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>/opt/paperless/media/&lt;/code>&lt;/td>
&lt;td>Original document files + thumbnails&lt;/td>
&lt;td>Yes&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>/opt/paperless/data/&lt;/code>&lt;/td>
&lt;td>Classification models, search index&lt;/td>
&lt;td>Yes&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>paperless-$(date).sql&lt;/code>&lt;/td>
&lt;td>Database dump&lt;/td>
&lt;td>Yes&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>/opt/paperless/export/&lt;/code>&lt;/td>
&lt;td>Human-readable document export&lt;/td>
&lt;td>Optional but recommended&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;h2 id="scanning-workflow-that-works">Scanning workflow that works&lt;/h2>
&lt;p>The consume folder approach works best when your scanner can write directly to it over the network. Two reliable paths:&lt;/p>
&lt;p>&lt;strong>Network scanner with SMB/FTP support:&lt;/strong> configure the scanner to save to a Samba share backed by the consume directory. On Linux, a simple &lt;code>smb.conf&lt;/code> entry makes &lt;code>/opt/paperless/consume&lt;/code> accessible as &lt;code>\\server\paperless-consume&lt;/code>.&lt;/p>
&lt;p>&lt;strong>Mobile scanning:&lt;/strong> apps like Microsoft Lens, Adobe Scan, or Genius Scan save to any cloud storage or network share. Point them at an SMB or WebDAV share backed by the consume folder. Alternatively, use Nextcloud as the intermediary — Nextcloud can watch a folder and copy files to the consume directory via an automation. The &lt;a href="https://techfuelhq.com/tutorials/nextcloud-aio-docker-setup-2026/">Nextcloud AIO setup guide&lt;/a> covers the WebDAV configuration.&lt;/p>
&lt;p>&lt;strong>Manual drop:&lt;/strong> for documents you already have digitally, drag them into the consume directory via &lt;code>scp&lt;/code>, a mounted SMB share, or the Nextcloud interface.&lt;/p>
&lt;h2 id="upgrading-paperless-ngx">Upgrading Paperless-ngx&lt;/h2>
&lt;p>Pin the major version tag (&lt;code>2&lt;/code>) rather than &lt;code>latest&lt;/code> to avoid breaking changes across major versions:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">ghcr.io/paperless-ngx/paperless-ngx:2&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>To upgrade to a new minor release:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>docker compose pull
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker compose up -d
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Paperless runs database migrations automatically on startup. No manual migration step needed for minor version upgrades. For major version bumps (1.x → 2.x), read the release notes — major versions occasionally require a manual migration command.&lt;/p>
&lt;h2 id="common-problems">Common problems&lt;/h2>
&lt;p>&lt;strong>Documents ingested but no searchable text:&lt;/strong> Tika or Gotenberg is not reachable. Check &lt;code>docker logs paperless&lt;/code> for connection errors to &lt;code>paperless-tika:9998&lt;/code> or &lt;code>paperless-gotenberg:3000&lt;/code>. Both containers must be running before Paperless starts.&lt;/p>
&lt;p>&lt;strong>413 Request Entity Too Large:&lt;/strong> NPM&amp;rsquo;s default body size limit is too low. Add &lt;code>client_max_body_size 50M;&lt;/code> to your NPM proxy host&amp;rsquo;s Advanced configuration.&lt;/p>
&lt;p>&lt;strong>CSRF verification failed:&lt;/strong> &lt;code>PAPERLESS_URL&lt;/code> is set incorrectly. It must match the exact URL you access in the browser — including the scheme (&lt;code>https://&lt;/code>), domain, and no trailing slash.&lt;/p>
&lt;p>&lt;strong>OCR&amp;rsquo;d text looks garbled:&lt;/strong> wrong language set. English documents being OCR&amp;rsquo;d with German (&lt;code>deu&lt;/code>) will produce garbage. Check &lt;code>PAPERLESS_OCR_LANGUAGE&lt;/code> matches your document language. Multiple languages are supported with a &lt;code>+&lt;/code> separator: &lt;code>eng+deu&lt;/code> for bilingual archives.&lt;/p>
&lt;p>&lt;strong>Consumer not picking up files:&lt;/strong> check that the consume volume mount in the compose file points to the right host path. Use &lt;code>docker compose exec paperless ls /usr/src/paperless/consume&lt;/code> to confirm the container sees the files you dropped.&lt;/p>
&lt;hr>
&lt;p>&lt;em>For the broader self-hosted stack this lives in, the &lt;a href="https://techfuelhq.com/articles/self-hosted-apps-replace-saas-2026/">12 best self-hosted apps guide&lt;/a> covers how Paperless-ngx fits alongside Immich, Nextcloud, and Vaultwarden. For file sync to mobile so you can scan from your phone, the &lt;a href="https://techfuelhq.com/tutorials/nextcloud-aio-docker-setup-2026/">Nextcloud AIO setup guide&lt;/a> covers WebDAV and folder sync configuration. For off-site backups of your document archive, the &lt;a href="https://techfuelhq.com/tutorials/automated-offsite-backups-restic-2026/">restic backup guide&lt;/a> handles the export-to-B2 pipeline. The &lt;a href="https://techfuelhq.com/tutorials/docker-compose-starter-stack-homelab-2026/">Docker Compose starter stack&lt;/a> covers the monitoring and reverse proxy layer that Paperless runs alongside.&lt;/em>&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://github.com/paperless-ngx/paperless-ngx" rel="noopener">Paperless-ngx GitHub&lt;/a> &amp;ndash; official project repository for the document management app, Docker images, and configuration.&lt;/li>
&lt;li>&lt;a href="https://gotenberg.dev/docs/getting-started/introduction" rel="noopener">Gotenberg Documentation&lt;/a> &amp;ndash; official docs for the PDF rendering service Paperless uses for non-PDF formats.&lt;/li>
&lt;li>&lt;a href="https://tika.apache.org/" rel="noopener">Apache Tika&lt;/a> &amp;ndash; official project site for the text and metadata extraction toolkit behind Office-file parsing.&lt;/li>
&lt;li>&lt;a href="https://tesseract-ocr.github.io/tessdoc/" rel="noopener">Tesseract OCR Documentation&lt;/a> &amp;ndash; official manual for the OCR engine and the language codes used by PAPERLESS_OCR_LANGUAGE.&lt;/li>
&lt;/ul></description></item><item><title>ROG Astral RTX 5080 OC Review: First-Party 4K Benchmarks</title><link>https://techfuelhq.com/gpu-reviews/rog-astral-rtx-5080-oc-review-2026/</link><pubDate>Fri, 12 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/gpu-reviews/rog-astral-rtx-5080-oc-review-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-12 · ~14 min read · St. Louis County, MO&lt;/p>
&lt;figure class="post-hero">
&lt;picture>
&lt;source type="image/webp" srcset="https://techfuelhq.com/images/gpu-reviews/rog-astral-rtx-5080/rog-astral-5080-angled-fans-rgb-800.webp 800w, https://techfuelhq.com/images/gpu-reviews/rog-astral-rtx-5080/rog-astral-5080-angled-fans-rgb-1600.webp 1600w" sizes="(max-width: 1080px) 100vw, 860px">
&lt;img src="https://techfuelhq.com/images/gpu-reviews/rog-astral-rtx-5080/rog-astral-5080-angled-fans-rgb-1600.jpg" width="1600" height="900" alt="ASUS ROG Astral RTX 5080 OC installed in the operator's case, three Axial-tech fans facing out, RGB top bar lit blue to purple" fetchpriority="high" decoding="async">
&lt;/picture>
&lt;figcaption>The ROG Astral RTX 5080 OC in my own rig — first-party photo, St. Louis County, MO, June 2026.&lt;/figcaption>
&lt;/figure>
&lt;p>&lt;strong>Rating: 4.4 / 5&lt;/strong>&lt;/p>
&lt;p>The ROG Astral RTX 5080 OC is the card in my current rig — Ryzen 7 7800X3D, ROG STRIX B650-A, 64GB DDR5-6000, NZXT Kraken 360, Gigabyte AORUS FO48U 48&amp;quot; 4K OLED. All data in this review is first-party, measured on my own bench. The full dataset with individual data points, chart methodology, and source files is at &lt;a href="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/">/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/&lt;/a>.&lt;/p>
&lt;p>All numbers on this page are first-party. The Astral 5080 OC was measured on my current bench; the competitor points (RTX 4080, RTX 4080 Super, RTX 5080 FE) were measured on my retired 2024–2025 bench and normalized to my own baselines, as documented in the dataset.&lt;/p>
&lt;h2 id="what-asus-ships">What ASUS ships&lt;/h2>
&lt;p>&lt;strong>Per NVIDIA specifications and ASUS product page (accessed 2026-06):&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>GPU: NVIDIA GB203 (Blackwell), 16 GB GDDR7, 256-bit memory bus&lt;/li>
&lt;li>TDP: 360W (NVIDIA spec), VBIOS cap 450W on the Astral&lt;/li>
&lt;li>CUDA cores: 10,752&lt;/li>
&lt;li>Boost clock: 2671 MHz (FE reference baseline used for the OC deltas below) / 2784 MHz (Astral OC factory profile, TechFuelHQ measured). NVIDIA&amp;rsquo;s published FE boost spec is 2617 MHz.&lt;/li>
&lt;li>Memory bandwidth: 960 GB/s (per NVIDIA spec)&lt;/li>
&lt;li>Connector: 16-pin 12VHPWR (PCIe 5.0 power)&lt;/li>
&lt;li>Cooler: Quad-fan Axial-tech design, vapor chamber, ROG ARGB top bar&lt;/li>
&lt;li>Form factor: 3.5 slot&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Key Blackwell features:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>DLSS 4 with Multi-Frame Generation (up to 3 generated frames per rendered frame)&lt;/li>
&lt;li>5th-generation Tensor cores (Transformer model for DLSS upscaling, denoising, and MFG)&lt;/li>
&lt;li>4th-generation RT cores&lt;/li>
&lt;li>AV1 hardware encode/decode&lt;/li>
&lt;li>DisplayPort 2.1 (up to 8K at 60Hz, or 4K at 240Hz over a single DP 2.1 cable)&lt;/li>
&lt;/ul>
&lt;figure>
&lt;picture>
&lt;source type="image/webp" srcset="https://techfuelhq.com/images/gpu-reviews/rog-astral-rtx-5080/rog-astral-5080-front-on-fans-800.webp 800w, https://techfuelhq.com/images/gpu-reviews/rog-astral-rtx-5080/rog-astral-5080-front-on-fans-1600.webp 1600w" sizes="(max-width: 1080px) 100vw, 860px">
&lt;img src="https://techfuelhq.com/images/gpu-reviews/rog-astral-rtx-5080/rog-astral-5080-front-on-fans-1600.jpg" width="1600" height="900" alt="Straight-on view of the ROG Astral RTX 5080's three Axial-tech fans and the rotation dial at the end of the card" loading="lazy" decoding="async">
&lt;/picture>
&lt;figcaption>The quad-fan Axial-tech cooler straight-on, with the rotation dial at the card's end.&lt;/figcaption>
&lt;/figure>
&lt;h2 id="bench-results-3dmark-synthetic">Bench results: 3DMark synthetic&lt;/h2>
&lt;p>All numbers below are TechFuelHQ first-party. Three tune profiles: &lt;strong>Stock&lt;/strong> (out-of-box), &lt;strong>Factory OC&lt;/strong> (ASUS-shipped OC profile), and &lt;strong>Manual OC&lt;/strong> (hand-tuned in ASUS GPU Tweak III: +328 MHz core, +2996 MHz memory, +12% power target).&lt;/p>
&lt;h3 id="time-spy-graphics-dx12-raster-1440p-relevant">Time Spy Graphics (DX12 raster, 1440p-relevant)&lt;/h3>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Profile&lt;/th>
&lt;th scope="col">Score&lt;/th>
&lt;th scope="col">Delta&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Stock&lt;/td>
&lt;td>32,350&lt;/td>
&lt;td>baseline&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Factory OC&lt;/td>
&lt;td>33,200&lt;/td>
&lt;td>+2.6%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Manual OC&lt;/td>
&lt;td>34,500&lt;/td>
&lt;td>+6.6%&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;figure>
&lt;img src="https://techfuelhq.com/images/gpu-reviews/rog-astral-rtx-5080/chart-02-3dmark-time-spy.svg" alt="3DMark Time Spy Graphics bar chart: Stock 32,350, Factory OC 33,200, Manual OC 34,500 (TechFuelHQ first-party)" width="1200" height="600" loading="lazy" decoding="async" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;figcaption>3DMark Time Spy Graphics across the three tune profiles &amp;mdash; TechFuelHQ first-party.&lt;/figcaption>
&lt;/figure>
&lt;p>The factory OC gives you 2.6% over stock without touching anything. Manual tuning adds another 4%. These are real gains — fully reproduced across multiple run cycles — but they&amp;rsquo;re also a clear signal that this silicon is power-limited, not clock-starved. Raising the 450W VBIOS ceiling is where the headroom lives; the clock offsets are working the margins of that power budget.&lt;/p>
&lt;h3 id="time-spy-extreme-dx12-raster-4k-relevant">Time Spy Extreme (DX12 raster, 4K-relevant)&lt;/h3>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Profile&lt;/th>
&lt;th scope="col">Score&lt;/th>
&lt;th scope="col">Delta&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Stock&lt;/td>
&lt;td>16,244&lt;/td>
&lt;td>baseline&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Factory OC&lt;/td>
&lt;td>16,961&lt;/td>
&lt;td>+4.4%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Manual OC&lt;/td>
&lt;td>17,600&lt;/td>
&lt;td>+8.3%&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Extreme scales harder than base Time Spy with the same tuning. 4K workloads lean on memory bandwidth and shader throughput, both of which respond to the +328 MHz core and +2996 MHz memory offsets. The manual OC at TSX Extreme (+8.3%) is meaningfully higher than at base Time Spy (+6.6%).&lt;/p>
&lt;h3 id="port-royal-ray-tracing">Port Royal (ray tracing)&lt;/h3>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Profile&lt;/th>
&lt;th scope="col">Score&lt;/th>
&lt;th scope="col">Delta&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Stock&lt;/td>
&lt;td>20,300&lt;/td>
&lt;td>baseline&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Factory OC&lt;/td>
&lt;td>21,673&lt;/td>
&lt;td>+6.8%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Manual OC&lt;/td>
&lt;td>22,500&lt;/td>
&lt;td>+10.8%&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Port Royal is RT-heavy by design. Blackwell&amp;rsquo;s 4th-gen RT cores scale disproportionately with the tuning — +10.8% manual-over-stock on Port Royal vs +6.6% on base Time Spy. The Blackwell RT core improvements over Ada Lovelace are documented in NVIDIA&amp;rsquo;s architecture whitepaper; the Port Royal scaling confirms those improvements are real and tunable.&lt;/p>
&lt;h3 id="speed-way-dx12-ultimate-rt--mesh-shaders">Speed Way (DX12 Ultimate RT + mesh shaders)&lt;/h3>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Profile&lt;/th>
&lt;th scope="col">Score&lt;/th>
&lt;th scope="col">Delta&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Stock&lt;/td>
&lt;td>9,010&lt;/td>
&lt;td>baseline&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Factory OC&lt;/td>
&lt;td>9,100&lt;/td>
&lt;td>+1.0%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Manual OC&lt;/td>
&lt;td>9,900&lt;/td>
&lt;td>+9.9%&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The most demanding synthetic in this suite. Factory OC barely moves Speed Way (+1.0%), but manual tuning lands +9.9%. Speed Way is where power headroom matters most — the factory profile&amp;rsquo;s conservative power target leaves performance on the table, and the manual +12% power target is what surfaces it.&lt;/p>
&lt;h3 id="steel-nomad-current-heavy-raster-reference">Steel Nomad (current heavy raster reference)&lt;/h3>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Profile&lt;/th>
&lt;th scope="col">Score&lt;/th>
&lt;th scope="col">Delta&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Stock&lt;/td>
&lt;td>8,150&lt;/td>
&lt;td>baseline&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Factory OC&lt;/td>
&lt;td>8,400&lt;/td>
&lt;td>+3.1%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Manual OC&lt;/td>
&lt;td>9,200&lt;/td>
&lt;td>+12.9%&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Steel Nomad is the current canonical &amp;ldquo;how does this card do on demanding rasterized workloads&amp;rdquo; benchmark — the successor to Fire Strike Extreme. Manual OC nets the largest single gain in the synthetic suite here: +12.9% over stock. Steel Nomad scales almost linearly with clock and memory speed on Blackwell, which is why the hand-tuned profile pulls so cleanly ahead.&lt;/p>
&lt;h2 id="clock-headroom">Clock headroom&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Profile&lt;/th>
&lt;th scope="col">Measured boost clock&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>RTX 5080 FE reference&lt;/td>
&lt;td>2,671 MHz&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Astral OC Default (factory)&lt;/td>
&lt;td>2,784 MHz&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Astral OC Mode BIOS&lt;/td>
&lt;td>2,885 MHz&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Astral Manual OC&lt;/td>
&lt;td>2,918 MHz&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The Astral ships with 113 MHz over the FE reference from the factory. The OC Mode BIOS profile (selectable in GPU Tweak III) adds another 101 MHz. Hand tuning in User Mode 2 adds 33 MHz more — 247 MHz total over the FE reference. All of these are sustained boost clocks measured during Time Spy runs, not theoretical peak clocks.&lt;/p>
&lt;h2 id="dlss-4-multi-frame-generation-the-honest-numbers">DLSS 4 Multi-Frame Generation: the honest numbers&lt;/h2>
&lt;p>This is what makes the RTX 5080 a different kind of GPU review than anything from the Ada generation.&lt;/p>
&lt;p>&lt;strong>Cyberpunk 2077 · 4K Path Tracing · Astral OC Manual · TechFuelHQ bench&lt;/strong>&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Mode&lt;/th>
&lt;th scope="col">Avg FPS&lt;/th>
&lt;th scope="col">PC Latency (Reflex on)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Native PT&lt;/td>
&lt;td>19&lt;/td>
&lt;td>95 ms&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>DLSS 4 Quality, no FG&lt;/td>
&lt;td>40&lt;/td>
&lt;td>45 ms&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>DLSS 4 Quality + MFG 2x&lt;/td>
&lt;td>90&lt;/td>
&lt;td>55 ms&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>DLSS 4 Quality + MFG 4x&lt;/td>
&lt;td>135&lt;/td>
&lt;td>62 ms&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Native path tracing at 4K on the RTX 5080 is 19 FPS and unplayable. Every serious review correctly notes this. What the table shows that matters: DLSS 4 Quality alone without frame gen takes FPS to 40 while &lt;em>reducing&lt;/em> latency from 95 ms to 45 ms — because Reflex is doing aggressive scheduling on the smaller render workload and the 5080 isn&amp;rsquo;t bottlenecked at 40 FPS the way it was at 19.&lt;/p>
&lt;p>Add MFG 2x and you go to 90 FPS / 55 ms. Add MFG 4x and you go to 135 FPS / 62 ms. The MFG latency penalty is real — each step adds ~7–8 ms — but the absolute numbers stay under 65 ms total. For comparison, native path tracing at 19 FPS is 95 ms. You are getting 7× the FPS at two-thirds the latency.&lt;/p>
&lt;p>The argument against MFG is that generated frames aren&amp;rsquo;t real frames — the intervening frames are approximated by the neural net, not rendered. That&amp;rsquo;s true. The argument for MFG is that at 135 FPS / 62 ms with a 4K OLED and Reflex enabled, path tracing in Cyberpunk 2077 is the most visually convincing gaming experience I&amp;rsquo;ve seen on consumer hardware. Both statements are true simultaneously.&lt;/p>
&lt;h2 id="4k-gaming-results-five-titles">4K gaming results (five titles)&lt;/h2>
&lt;p>&lt;strong>All on TechFuelHQ bench at 4K, Astral OC Manual profile.&lt;/strong>&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Game&lt;/th>
&lt;th scope="col">Avg FPS&lt;/th>
&lt;th scope="col">1% Low&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Cyberpunk 2077 Ultra Raster&lt;/td>
&lt;td>58&lt;/td>
&lt;td>49&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Cyberpunk 2077 RT Ultra (DLSS-Q)&lt;/td>
&lt;td>50&lt;/td>
&lt;td>41&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Cyberpunk 2077 Path Tracing native&lt;/td>
&lt;td>19&lt;/td>
&lt;td>15&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Alan Wake 2 RT Ultra (DLSS-Q)&lt;/td>
&lt;td>49&lt;/td>
&lt;td>38&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Black Myth: Wukong Cinematic&lt;/td>
&lt;td>34&lt;/td>
&lt;td>27&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The 1% lows are 80–85% of the average for the rasterized and DLSS Quality runs — healthy frame-time consistency. The path tracing native run shows what a bottlenecked GPU looks like: 19 average, 15 at the 1% low, with the two numbers very close together because the card is bottlenecked on every frame equally.&lt;/p>
&lt;p>Cyberpunk Ultra Raster at 58 FPS on a 4K OLED panel is the working definition of what this GPU delivers at standard settings. Alan Wake 2 and Black Myth: Wukong both demand more per frame than Cyberpunk Ultra Raster — Black Myth Wukong at Cinematic settings at 34 FPS is the hardest of these five titles on the RTX 5080.&lt;/p>
&lt;h2 id="power-and-thermals">Power and thermals&lt;/h2>
&lt;p>&lt;strong>TechFuelHQ measured on the author&amp;rsquo;s bench. Both columns are first-party, not from third-party publications.&lt;/strong>&lt;/p>
&lt;p>The full power and thermal table is in the &lt;a href="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/">dataset&lt;/a>. If you plan to run this card as an always-on inference node rather than a gaming GPU, the separate writeup on &lt;a href="https://techfuelhq.com/articles/rtx-5080-perf-per-watt-ai-24-7-2026/">RTX 5080 performance per watt running AI 24/7&lt;/a> breaks down draw and throughput under sustained LLM load. Key figures:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Metric&lt;/th>
&lt;th scope="col">Astral Stock&lt;/th>
&lt;th scope="col">Astral Manual OC&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Gaming core temp&lt;/td>
&lt;td>63–72°C&lt;/td>
&lt;td>~58°C&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Memory junction temp&lt;/td>
&lt;td>72–82°C&lt;/td>
&lt;td>60–72°C&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Load noise&lt;/td>
&lt;td>Near-silent&lt;/td>
&lt;td>~51 dBA&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>At stock, the Astral&amp;rsquo;s quad-fan cooler holds gaming core temps in the 63–72°C range while running near-silent. The manual-OC profile runs a more aggressive fan curve — that extra airflow (and the audible ~51 dBA noise it costs) actually pulls gaming core temps down to ~58°C and memory junction into the 60–72°C window, despite the +12% power target. Samsung&amp;rsquo;s GDDR7 memory junction limit is typically 105°C; both the stock 72–82°C and the OC 60–72°C readings are comfortable.&lt;/p>
&lt;h3 id="sustained-load-telemetry-a-25-minute-log">Sustained-load telemetry: a 25-minute log&lt;/h3>
&lt;p>To put real numbers under that temp table, I logged GPU telemetry roughly every 5 seconds across a 25-minute gaming session (HWiNFO64, 2026-06-28, on the hand-tuned profile). Across &lt;strong>308 samples&lt;/strong>:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Metric&lt;/th>
&lt;th scope="col">Min&lt;/th>
&lt;th scope="col">Avg&lt;/th>
&lt;th scope="col">Max&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Power draw&lt;/td>
&lt;td>87 W&lt;/td>
&lt;td>261 W&lt;/td>
&lt;td>326 W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Core temp&lt;/td>
&lt;td>45 °C&lt;/td>
&lt;td>56 °C&lt;/td>
&lt;td>60 °C&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>SM (core) clock&lt;/td>
&lt;td>2,985 MHz&lt;/td>
&lt;td>3,202 MHz&lt;/td>
&lt;td>3,232 MHz&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GPU utilization&lt;/td>
&lt;td>—&lt;/td>
&lt;td>85 %&lt;/td>
&lt;td>98 %&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>&lt;strong>Throttle events across the entire session: zero.&lt;/strong> The card held a roughly 3,200 MHz core the whole time, never hit a thermal or power cap, and averaged 261 W — well under the 360 W rated TDP — at a 56 °C average core temp. That is the practical part a spec sheet can&amp;rsquo;t tell you: on this cooler, in this case, the 5080 is not temperature- or power-throttled in real gaming, so the clocks you see are the clocks you keep. The raw log — timestamp, temp, utilization, core and memory clocks, power draw, and the throttle register for all 308 rows — is published in the &lt;a href="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/sustained-gaming-telemetry-2026-06-28.csv">open dataset&lt;/a> so you can check the numbers yourself.&lt;/p>
&lt;figure>
&lt;picture>
&lt;source type="image/webp" srcset="https://techfuelhq.com/images/gpu-reviews/rog-astral-rtx-5080/rog-astral-5080-installed-case-800.webp 800w, https://techfuelhq.com/images/gpu-reviews/rog-astral-rtx-5080/rog-astral-5080-installed-case-1600.webp 1600w" sizes="(max-width: 1080px) 100vw, 860px">
&lt;img src="https://techfuelhq.com/images/gpu-reviews/rog-astral-rtx-5080/rog-astral-5080-installed-case-1600.jpg" width="1600" height="900" alt="The ROG Astral RTX 5080 OC in the full build with the NZXT Kraken 360 LCD reading CPU 51 degrees and GPU 29 degrees at idle" loading="lazy" decoding="async">
&lt;/picture>
&lt;figcaption>Idle in the full build — the NZXT Kraken 360 LCD reads CPU 51 °C / GPU 29 °C.&lt;/figcaption>
&lt;/figure>
&lt;p>Load noise at manual OC (~51 dBA) is audible from a meter away — the fans are clearly working, which is what pulls the OC core temp below the stock reading. At stock the card is near-silent under load. For a desk setup where the GPU is in a closed case one meter away, stock acoustics are a non-issue; manual OC acoustics are something you&amp;rsquo;ll hear. The trade for the lower OC temps and the extra 10%+ performance is that the fans run at a higher duty cycle. If quieter operation matters more than the last few percent of performance, the &lt;a href="https://techfuelhq.com/articles/rtx-5080-undervolt-guide-2026/">RTX 5080 undervolt guide&lt;/a> covers the voltage-frequency curve method for lowering heat and draw without losing clocks.&lt;/p>
&lt;h2 id="generational-positioning">Generational positioning&lt;/h2>
&lt;p>&lt;strong>Normalized to RTX 4080 Super = 100. All points TechFuelHQ first-party — Astral 5080 OC on the current bench; RTX 4080 / 4080 Super / 5080 FE from the retired 2024–2025 bench. 4K raster.&lt;/strong>&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Card&lt;/th>
&lt;th scope="col">Index&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>RTX 4080&lt;/td>
&lt;td>96&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>RTX 4080 Super&lt;/td>
&lt;td>100 (baseline)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>RTX 5080 FE&lt;/td>
&lt;td>114&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Astral 5080 OC (manual)&lt;/td>
&lt;td>123&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The Astral OC lands 23% above the &lt;a href="https://techfuelhq.com/gpu-reviews/rtx-4080-vs-rtx-4090/">RTX 4080 Super&lt;/a> and 8% above the 5080 FE at manual OC in 4K raster. An 8% gain over the reference card from factory + manual tuning is meaningful — it&amp;rsquo;s roughly two GPU-generation steps ahead of where the 5080 FE starts in TechFuelHQ generational positioning.&lt;/p>
&lt;h2 id="the-5080-oc-vs-5090-question">The 5080 OC vs. 5090 question&lt;/h2>
&lt;p>The RTX 5090 is approximately 20–30% faster than the 5080 across most workloads per third-party reviews (GamersNexus, Hardware Unboxed), at approximately 2× the price ($2,000 MSRP vs $999). If path-tracing native 4K at 60+ FPS without MFG is the specific requirement — not &amp;ldquo;4K path tracing with frame gen&amp;rdquo; but genuinely native — the 5090 is the only card that provides it.&lt;/p>
&lt;p>For everything else at 4K — maximum raster settings, DLSS Quality with or without MFG, RT at DLSS Quality — the 5080 OC does the job at half the cost. The 5090 gains become relevant only if you&amp;rsquo;re doing 4K path tracing native, 8K gaming, or using a 4K 240Hz panel where you need raw raster output above 200 FPS without frame gen.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Street reality (July 2026):&lt;/strong> the MSRPs above are anchors — nobody pays them. The &lt;a href="https://techfuelhq.com/articles/ram-ssd-price-crisis-2026/">2026 memory shortage&lt;/a> that drove up RAM and SSD prices also lifted GDDR7 VRAM, so the RTX 5080 street-sells around $1,200–1,350 against its $999 MSRP. But the Astral OC reviewed here is not a baseline card — it&amp;rsquo;s a premium quad-fan, factory-OC SKU with a $1,500 MSRP that street-sells around $1,500–1,850 as of July 2026 (a ~50% premium over reference). Budget for the Astral OC&amp;rsquo;s number, not the baseline 5080&amp;rsquo;s, when you run the value math below.&lt;/p>&lt;/blockquote>
&lt;h2 id="the-1440p-case">The 1440p case&lt;/h2>
&lt;p>At 1440p, the ROG Astral RTX 5080 OC is significant overkill. The &lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5060-ti-vs-rx-9060-xt-1440p-showdown-2026/">RTX 5060 Ti vs RX 9060 XT review&lt;/a> shows the mid-range cards trading within 1% of each other at 1440p raster for well under half the 5080&amp;rsquo;s price. If your display is 1440p, you&amp;rsquo;re buying the 5080 for DLSS 4 Multi-Frame Generation and RT — not for native 1440p raster performance, where the gap versus a 5060 Ti doesn&amp;rsquo;t justify $600 or more in additional cost.&lt;/p>
&lt;h2 id="build">Build&lt;/h2>
&lt;p>The quad-fan ROG Astral shroud takes up 3.5 PCIe slots. In a standard ATX case, this means the GPU occupies all three card slots in a conventional layout. The Astral&amp;rsquo;s physical length (358mm per ASUS specs) requires checking case GPU clearance — it fits in most full-tower and many mid-tower cases, but check before ordering. For the complete rig this card runs in — CPU, board, cooling, PSU, and 4K benchmarks — see the &lt;a href="https://techfuelhq.com/pc-builds/2500-dollar-7800x3d-rtx-5080-4k-build-2026/">$2,500 RTX 5080 + 7800X3D 4K build&lt;/a>.&lt;/p>
&lt;figure>
&lt;picture>
&lt;source type="image/webp" srcset="https://techfuelhq.com/images/gpu-reviews/rog-astral-rtx-5080/rog-astral-5080-top-geforce-rtx-branding-800.webp 800w, https://techfuelhq.com/images/gpu-reviews/rog-astral-rtx-5080/rog-astral-5080-top-geforce-rtx-branding-1600.webp 1600w" sizes="(max-width: 1080px) 100vw, 860px">
&lt;img src="https://techfuelhq.com/images/gpu-reviews/rog-astral-rtx-5080/rog-astral-5080-top-geforce-rtx-branding-1600.jpg" width="1600" height="900" alt="Top-down view of the ROG Astral RTX 5080 showing the illuminated GeForce RTX lettering along the top edge of the card" loading="lazy" decoding="async">
&lt;/picture>
&lt;figcaption>The illuminated GeForce RTX lettering along the card's top edge.&lt;/figcaption>
&lt;/figure>
&lt;p>The ARGB top bar (ROG logo + stripe) is controlled through Aura Sync or can be set to a static color mode without the software. In my build, it&amp;rsquo;s set to a static purple that matches the DDR5 kit.&lt;/p>
&lt;figure class="post-video">
&lt;video autoplay muted loop playsinline poster="/videos/gpu-reviews/rog-astral-rtx-5080/rog-astral-5080-rgb-cycle-poster.jpg" width="1920" height="1080">
&lt;source src="https://techfuelhq.com/videos/gpu-reviews/rog-astral-rtx-5080/rog-astral-5080-rgb-cycle-1080.webm" type="video/webm">
&lt;source src="https://techfuelhq.com/videos/gpu-reviews/rog-astral-rtx-5080/rog-astral-5080-rgb-cycle-1080.mp4" type="video/mp4">
&lt;source src="https://techfuelhq.com/videos/gpu-reviews/rog-astral-rtx-5080/rog-astral-5080-rgb-cycle-720.mp4" type="video/mp4">
&lt;/video>
&lt;figcaption>The ARGB top bar mid-cycle — a 17-second silent loop on my own card.&lt;/figcaption>
&lt;/figure>
&lt;h2 id="who-should-buy-this">Who should buy this&lt;/h2>
&lt;p>&lt;strong>The RTX 5080 OC makes sense if:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>You&amp;rsquo;re gaming at 4K on a high-refresh display (120Hz+ OLED or IPS)&lt;/li>
&lt;li>DLSS 4 Multi-Frame Generation is part of the performance calculation (it should be)&lt;/li>
&lt;li>4K path tracing in Cyberpunk, Alan Wake 2, or similar titles is a target use case&lt;/li>
&lt;li>Your budget allows roughly $1,500–1,850 for this specific card — the ROG Astral OC&amp;rsquo;s July 2026 street price against its $1,500 MSRP (a ~50% premium over the $999 baseline RTX 5080)&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>It doesn&amp;rsquo;t make sense if:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Your display is 1440p — buy a 5060 Ti or RX 9060 XT&lt;/li>
&lt;li>Your primary use is 1080p gaming — even more overkill&lt;/li>
&lt;li>Budget is the priority — the performance-per-dollar curve goes steeply negative above $500&lt;/li>
&lt;/ul>
&lt;h2 id="verdict">Verdict&lt;/h2>
&lt;p>&lt;strong>Rating: 4.4/5.&lt;/strong> The ROG Astral RTX 5080 OC is the best GPU I&amp;rsquo;ve used, and it&amp;rsquo;s the right GPU for my 48&amp;quot; 4K OLED setup. The DLSS 4 MFG story holds up under measurement — path tracing in Cyberpunk 2077 at 135 FPS / 62 ms on a 4K panel is genuinely better to play than the native 19 FPS it would produce without AI assistance. The factory OC and further manual tuning add real performance on top of the Founders Edition reference.&lt;/p>
&lt;p>The rating isn&amp;rsquo;t 5/5 because the price-to-performance case against it is legitimate. At twice the cost of a 5060 Ti for 1440p gaming, this card&amp;rsquo;s value proposition is entirely 4K-specific. If the display and the game library justify it, buy it. If they don&amp;rsquo;t, the answer is a 5060 Ti at around $580 street and a better monitor.&lt;/p>
&lt;img src="https://techfuelhq.com/images/gpu-reviews/rog-astral-rtx-5080-oc-review-2026.svg" alt="ASUS ROG Astral RTX 5080 OC at a glance: 4.4 out of 5, with key specifications and first-party benchmark highlights" width="1200" height="630" loading="lazy" style="display:block;margin:2rem auto 0;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;hr>
&lt;p>&lt;em>The full first-party benchmark dataset — individual Time Spy scores, 4K gaming numbers by game and setting, power and thermal charts, DLSS 4 MFG ladder, and methodology — is at &lt;a href="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/">/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/&lt;/a>. For the build this card lives in, the &lt;a href="https://techfuelhq.com/reviews/rog-strix-b650a-review-2026/">ROG STRIX B650-A review&lt;/a> covers the motherboard and the &lt;a href="https://techfuelhq.com/reviews/nzxt-kraken-360-review-2026/">NZXT Kraken 360 review&lt;/a> covers the AIO. For mid-range GPU options at the 1440p tier, the &lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5060-ti-vs-rx-9060-xt-1440p-showdown-2026/">RTX 5060 Ti vs RX 9060 XT comparison&lt;/a> is the relevant read.&lt;/em>&lt;/p></description></item><item><title>RTX 5080 Undervolt Guide: Less Heat, Same Performance (2026)</title><link>https://techfuelhq.com/articles/rtx-5080-undervolt-guide-2026/</link><pubDate>Fri, 12 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/rtx-5080-undervolt-guide-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-12 · ~13 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/articles/rtx-5080-undervolt-guide-2026.svg" alt="Five-step RTX 5080 undervolt workflow on the ROG Astral RTX 5080 OC: baseline measurements in HWiNFO64, open the MSI Afterburner voltage-frequency curve editor with Ctrl+F, apply the undervolt, stress test and validate, and make settings persistent — noting 360W stock TBP, 30–70W same-clock savings, and silicon-lottery targets from 2600 to 2850+ MHz." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>The RTX 5080 is a 360W card at NVIDIA&amp;rsquo;s spec. The ROG Astral OC variant I run draws up to ~400W in practice (450W VBIOS ceiling) on its high-performance BIOS. For gaming a few hours a night, that&amp;rsquo;s fine — the cooler handles it. For AI inference running 24/7, or for anyone who cares about acoustics, power cost, or long-term thermals, undervolting changes the equation without touching performance.&lt;/p>
&lt;p>This guide covers the voltage-frequency curve methodology for undervolting the RTX 5080, what to expect, and the settings community results consistently converge on for the ROG Astral class of card. (On AMD&amp;rsquo;s RDNA 4 cards the process is different — it uses the Adrenalin driver instead of MSI Afterburner — so see the separate &lt;a href="https://techfuelhq.com/articles/rx-9070-xt-undervolt-2026/">RX 9070 XT undervolt guide&lt;/a>.) This is the NVIDIA worked example in our broader &lt;a href="https://techfuelhq.com/articles/how-to-undervolt-gpu-2026/">guide to undervolting your GPU&lt;/a>.&lt;/p>
&lt;h2 id="why-undervolt-instead-of-just-setting-a-power-limit">Why undervolt instead of just setting a power limit&lt;/h2>
&lt;p>You can lower the RTX 5080&amp;rsquo;s power draw two ways: set a lower power limit in software, or find a lower-voltage operating point on the voltage-frequency curve.&lt;/p>
&lt;p>&lt;strong>Power limit reduction&lt;/strong> (e.g., 90% = 324W) tells the GPU to throttle when it hits that ceiling. The card will dynamically lower clock speeds until it stays under the limit. Simple, effective, but blunt — you&amp;rsquo;re letting the GPU decide how to trade off clock speed against power.&lt;/p>
&lt;p>&lt;strong>Voltage-frequency curve undervolting&lt;/strong> maps a specific voltage to a specific clock frequency and pins the GPU to that point. You find the lowest voltage at which the card is stable at your target clock, then lock it there. The result: same clock speed as stock, 30–70W lower power draw (depending on how far the silicon lottery went in your favor), and meaningfully lower temperatures.&lt;/p>
&lt;p>For an always-on AI inference rig, the curve approach is better. Lower voltage = lower heat = cooler junction temperatures = longer-running silent fans = lower electricity cost. The &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">Power &amp;amp; Cost Calculator&lt;/a> shows exactly what 50W of savings means annually: at $0.13/kWh and 6 hours/day inference, 50W saved = ~142 kWh/year = ~$18/year. Across 3 years, $54 back. At California rates ($0.28/kWh), double that.&lt;/p>
&lt;h2 id="understanding-the-voltage-frequency-curve">Understanding the voltage-frequency curve&lt;/h2>
&lt;p>Modern NVIDIA GPUs (Turing and later) use a voltage-frequency table: for each voltage level, there&amp;rsquo;s a maximum boost clock the GPU will run at. Nvidia calls this the &amp;ldquo;boost algorithm&amp;rdquo; — the GPU samples temperature, power, and voltage and picks a point on the curve.&lt;/p>
&lt;p>&lt;strong>Stock behavior:&lt;/strong> the GPU slides up and down the curve dynamically, following the thermal and power constraints. Under sustained load, it finds an equilibrium — typically 50–100MHz below advertised boost clock, at a voltage somewhere in the middle of the curve.&lt;/p>
&lt;p>&lt;strong>Undervolted behavior:&lt;/strong> you find that equilibrium point, lower the voltage while keeping the frequency, and flatten the upper portion of the curve so the GPU can&amp;rsquo;t drift higher. The GPU runs locked to your chosen point instead of hunting dynamically.&lt;/p>
&lt;p>The best silicon (good lottery results) can achieve 2800–2900 MHz at 900–950mV on RTX 5080. Average silicon typically settles 2700–2800 MHz at 950–1000mV. You find out where your card is during the scanning and testing process.&lt;/p>
&lt;h2 id="tools">Tools&lt;/h2>
&lt;p>&lt;strong>MSI Afterburner&lt;/strong> — works with all RTX 5080 cards regardless of manufacturer. The voltage-frequency curve editor is the primary undervolting interface. Download from &lt;a href="https://www.msi.com/Landing/afterburner/" rel="noopener">msi.com/Landing/afterburner&lt;/a>.&lt;/p>
&lt;p>&lt;strong>ASUS GPU Tweak III&lt;/strong> — for ROG/TUF/PRIME cards specifically. Has an OC Scanner that automatically finds a stable overclock curve. The manual curve editor works identically to Afterburner&amp;rsquo;s.&lt;/p>
&lt;p>&lt;strong>HWiNFO64&lt;/strong> — for monitoring junction temperature, hotspot temperature, power draw, and clock speed under load. Run it alongside whatever workload you&amp;rsquo;re testing. Download from &lt;a href="https://www.hwinfo.com/" rel="noopener">hwinfo.com&lt;/a>.&lt;/p>
&lt;h2 id="step-1-baseline-measurements">Step 1: Baseline measurements&lt;/h2>
&lt;p>Before touching any settings, establish your baseline. Run HWiNFO64 and put the GPU under load:&lt;/p>
&lt;ul>
&lt;li>For gaming: run a GPU benchmark or play a demanding title for 15 minutes&lt;/li>
&lt;li>For AI inference: run your inference workload for 15 minutes&lt;/li>
&lt;li>For video encoding: run a long encode pass&lt;/li>
&lt;/ul>
&lt;p>Record from HWiNFO64:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>GPU Core Clock&lt;/strong> (sustained under load)&lt;/li>
&lt;li>&lt;strong>GPU Core Voltage&lt;/strong> (sustained under load)&lt;/li>
&lt;li>&lt;strong>GPU Power&lt;/strong> (total board power)&lt;/li>
&lt;li>&lt;strong>GPU Temp (Junction / Hotspot)&lt;/strong> — more relevant than die temperature&lt;/li>
&lt;/ul>
&lt;p>These are your baselines. The goal of undervolting is to match or exceed the core clock at lower power and temperature.&lt;/p>
&lt;h2 id="step-2-open-the-voltage-frequency-curve-editor">Step 2: Open the voltage-frequency curve editor&lt;/h2>
&lt;p>In MSI Afterburner, click the curve editor button (or press &lt;code>Ctrl+F&lt;/code>). You&amp;rsquo;ll see a scatter plot: X axis is voltage (mV), Y axis is clock frequency (MHz). Each point represents a voltage-frequency pair.&lt;/p>
&lt;p>The curve looks like a staircase — it rises, plateaus, and flattens at the top where boost speeds cap out. The rightmost active point is where your card currently runs under stock boost.&lt;/p>
&lt;p>&lt;strong>Note your stock operating point.&lt;/strong> Under load, GPU-Z or HWiNFO shows your actual core voltage and clock. Find that point on the curve — it&amp;rsquo;s typically somewhere between 900mV and 1050mV.&lt;/p>
&lt;h2 id="step-3-apply-the-undervolt">Step 3: Apply the undervolt&lt;/h2>
&lt;p>&lt;strong>Method:&lt;/strong> lock a point at lower voltage, pull the curve down above it.&lt;/p>
&lt;ol>
&lt;li>In the curve editor, find the voltage point slightly below where your GPU currently operates (e.g., if stock settles at 1000mV / 2750MHz, try 950mV)&lt;/li>
&lt;li>Click that point and drag it up to your target frequency (start with your stock sustained clock — e.g., 2750MHz)&lt;/li>
&lt;li>Select all points to the right of this point and drag them down below this frequency (this prevents the GPU from climbing to higher voltage/frequency pairs)&lt;/li>
&lt;/ol>
&lt;p>In Afterburner, the process:&lt;/p>
&lt;ol>
&lt;li>Press &lt;code>Ctrl+F&lt;/code> to open curve&lt;/li>
&lt;li>Find the voltage you want to test (e.g., 950mV on X axis)&lt;/li>
&lt;li>Click the point at 950mV, drag up to your target clock (say 2750 MHz)&lt;/li>
&lt;li>Click anywhere on the curve, then press &lt;code>Ctrl+A&lt;/code> to select all, then drag all points down — except your locked point, which you shift-click to deselect&lt;/li>
&lt;/ol>
&lt;p>Click the checkmark in Afterburner to apply. The GPU will now target your locked voltage-frequency pair.&lt;/p>
&lt;p>&lt;strong>GPU Tweak III on the ROG Astral:&lt;/strong> the interface is slightly different but the principle is identical. Manual mode in the Performance Tuning tab → Voltage/Frequency Curve. Click your target voltage column, drag to your target frequency.&lt;/p>
&lt;h2 id="step-4-stress-test-and-validate">Step 4: Stress test and validate&lt;/h2>
&lt;p>Run your GPU workload for at least 30 minutes. Watch for:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Crashes or driver resets&lt;/strong> — indicates the voltage is too low for that frequency. Raise voltage by 25–50mV and retry.&lt;/li>
&lt;li>&lt;strong>Throttling below target clock&lt;/strong> — the frequency is too high for that voltage under thermal load. Lower target frequency by 50MHz.&lt;/li>
&lt;li>&lt;strong>Stable at target&lt;/strong> — success. Record the power draw and temperature delta vs baseline.&lt;/li>
&lt;/ul>
&lt;p>Stability testing tools:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>3DMark TimeSpy&lt;/strong> or &lt;strong>Port Royal&lt;/strong> for gaming workloads&lt;/li>
&lt;li>&lt;strong>FurMark&lt;/strong> for thermals and power-limit behavior only — it does NOT validate a curve undervolt. FurMark slams the power limit, which pushes the card &lt;em>down&lt;/em> the V/F curve away from your locked point, so it can pass while games crash. Long sessions in demanding games (or Superposition loops) that hold the card &lt;em>at&lt;/em> the locked clock are the real stability test.&lt;/li>
&lt;li>&lt;strong>llama.cpp benchmark&lt;/strong> or &lt;strong>Ollama&lt;/strong> with a large model for AI inference (this is the actual workload for an inference rig)&lt;/li>
&lt;/ul>
&lt;p>For the ROG Astral specifically: this card&amp;rsquo;s power delivery and VRM are overbuilt relative to even the 5080&amp;rsquo;s demands. The limiting factor in undervolting is the GPU die, not the card&amp;rsquo;s power delivery. Community results across hardware forums have shown the Astral typically requires less voltage to hit a given clock than reference-cooled variants — a benefit of the 3-slot cooler&amp;rsquo;s thermal headroom. The first-party benchmark numbers behind these clocks are in the &lt;a href="https://techfuelhq.com/gpu-reviews/rog-astral-rtx-5080-oc-review-2026/">ASUS ROG Astral RTX 5080 OC review&lt;/a>, measured on the same card used for this guide.&lt;/p>
&lt;h2 id="step-5-make-settings-persistent">Step 5: Make settings persistent&lt;/h2>
&lt;p>In MSI Afterburner:&lt;/p>
&lt;ol>
&lt;li>Click the save icon (disk icon in the profile row)&lt;/li>
&lt;li>Save to Profile 1 (or 2/3 if you want multiple configs)&lt;/li>
&lt;li>In Afterburner settings → General → check &amp;ldquo;Apply overclocking at system startup&amp;rdquo;&lt;/li>
&lt;/ol>
&lt;p>The profile applies on every boot. No manual action required.&lt;/p>
&lt;p>For the ROG Astral on GPU Tweak III: GPU Tweak has a startup option in its settings to apply the saved profile at Windows boot.&lt;/p>
&lt;h2 id="power-limits-and-fan-curve">Power limits and fan curve&lt;/h2>
&lt;p>While you&amp;rsquo;re in Afterburner, set a custom fan curve. The stock aggressive fan ramp on an RTX 5080 at high load is not quiet. With undervolting keeping junction temperatures lower, you can be more conservative:&lt;/p>
&lt;ul>
&lt;li>Below 60°C junction: 0% (fanstop)&lt;/li>
&lt;li>60–70°C junction: 30–40%&lt;/li>
&lt;li>70–80°C junction: 50–60%&lt;/li>
&lt;li>Above 80°C junction: 70–80% (should rarely reach this with undervolt)&lt;/li>
&lt;/ul>
&lt;p>The ROG Astral ships with a zero-RPM mode by default up to about 55°C. With undervolting, the card stays in zero-RPM mode longer.&lt;/p>
&lt;h2 id="what-to-expect-in-practice">What to expect in practice&lt;/h2>
&lt;p>Results vary by silicon lottery — no two RTX 5080 chips are identical. The range seen across community testing at hardware review sites:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Lucky silicon:&lt;/strong> 2850+ MHz stable at 900–925mV&lt;/li>
&lt;li>&lt;strong>Typical:&lt;/strong> 2700–2800 MHz stable at 950–975mV&lt;/li>
&lt;li>&lt;strong>Conservative (all silicon):&lt;/strong> 2600–2700 MHz stable at 900mV&lt;/li>
&lt;/ul>
&lt;p>Power draw reduction depends on what voltage and frequency you end up at. Dropping from 1000mV to 925mV at the same frequency can yield 40–80W reduction in sustained GPU power consumption, depending on the workload&amp;rsquo;s power demand curve.&lt;/p>
&lt;p>For AI inference specifically: LLM inference is memory-bandwidth bound, not shader-bound. The GPU core voltage doesn&amp;rsquo;t dominate power the way it does in gaming. A significant portion of inference power comes from GDDR7 and the memory controllers. Core undervolting still helps — it typically saves 20–50W on inference workloads depending on the model size and GPU utilization pattern.&lt;/p>
&lt;h2 id="always-on-ai-inference-setup">Always-on AI inference setup&lt;/h2>
&lt;p>If you&amp;rsquo;re running the RTX 5080 as a &lt;a href="https://techfuelhq.com/articles/1000-local-ai-workstation-rtx-5080-2026/">local AI workstation&lt;/a> running LLM inference around the clock, prioritize:&lt;/p>
&lt;ol>
&lt;li>Undervolt for sustained efficiency (as above)&lt;/li>
&lt;li>Set power limit to 85–90% of max as a backstop&lt;/li>
&lt;li>Set custom fan curve that keeps junction temp under 75°C continuously&lt;/li>
&lt;li>Monitor with HWiNFO64 + logging enabled — catch thermal drift over time&lt;/li>
&lt;/ol>
&lt;p>At 24/7 operation, 30W of sustained savings is roughly $34/year at $0.13/kWh — a $25 Kill-A-Watt meter pays for itself inside the first year, and everything after that is pure savings.&lt;/p>
&lt;hr>
&lt;p>&lt;em>The ROG Astral RTX 5080 OC that I use for this testing is documented with photos and full spec sheet at the &lt;a href="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/">dataset page&lt;/a>. The &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">Power &amp;amp; Cost Calculator&lt;/a> models what a GPU workstation node costs to run 24/7.&lt;/em>&lt;/p></description></item><item><title>Best GPU for Plex and Jellyfin Transcoding in 2026</title><link>https://techfuelhq.com/articles/best-gpu-plex-jellyfin-transcode-2026/</link><pubDate>Thu, 11 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/best-gpu-plex-jellyfin-transcode-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-11 · ~12 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/articles/best-gpu-plex-jellyfin-transcode-2026.svg" alt="Buying-guide card naming Intel Quick Sync iGPU the top pick for Plex and Jellyfin transcoding at about 3 watts and zero marginal cost, handling 4-8 simultaneous 1080p or 2-4 simultaneous 4K H.265-to-H.264 streams, with picks by use case and idle power costs: Intel iGPU $0/yr, AMD RX 6600 ~+$6/yr, NVIDIA GTX 1650 ~+$8/yr, RTX 3060 ~+$15/yr" width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>The media server GPU question has a counterintuitive answer: the best GPU for transcoding in most homelab setups is the integrated graphics inside a cheap Intel mini PC. A dedicated NVIDIA or AMD card is rarely the right tool for this specific job. Here&amp;rsquo;s why, and when dedicated GPU actually makes sense.&lt;/p>
&lt;h2 id="transcoding-only-matters-when-direct-play-fails">Transcoding only matters when direct play fails&lt;/h2>
&lt;p>Before buying anything, understand when transcoding actually happens:&lt;/p>
&lt;p>&lt;strong>Direct play&lt;/strong> — the client plays the file as-is. No CPU, no GPU involved beyond reading data from disk. This is the preferred state. Plex and Jellyfin show &amp;ldquo;Direct Play&amp;rdquo; in the dashboard.&lt;/p>
&lt;p>&lt;strong>Direct stream&lt;/strong> — the video codec plays directly but the audio or container needs transcoding. Very low CPU load.&lt;/p>
&lt;p>&lt;strong>Transcoding&lt;/strong> — the video codec can&amp;rsquo;t be played by the client, or the bitrate exceeds what the network can handle, so the server converts it on the fly. This is where GPU matters.&lt;/p>
&lt;p>Modern clients that handle direct play for almost everything:&lt;/p>
&lt;ul>
&lt;li>Apple TV 4K (2022+): H.264, H.265/HEVC, VP9, AV1, Dolby Vision&lt;/li>
&lt;li>NVIDIA Shield Pro: same + HDR10+&lt;/li>
&lt;li>Fire TV Cube (3rd gen): H.265, VP9&lt;/li>
&lt;li>Web browser (Chrome): H.264, VP9, AV1, but no DTS audio → transcodes audio only&lt;/li>
&lt;/ul>
&lt;p>If all your clients are in this category and your content is encoded in modern formats (H.265, H.264 at reasonable bitrates), you may never need hardware transcoding.&lt;/p>
&lt;p>&lt;strong>Where transcoding is unavoidable:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Old smart TVs, Roku entry-level, some Android TV devices&lt;/li>
&lt;li>Remote streaming with bandwidth limits (can&amp;rsquo;t push a 50Mbps 4K H.265 Remux over a 20Mbps uplink)&lt;/li>
&lt;li>Converting HDR to SDR for displays that don&amp;rsquo;t support HDR&lt;/li>
&lt;li>Mixed client environment where some clients can and some can&amp;rsquo;t direct play&lt;/li>
&lt;/ul>
&lt;h2 id="quick-sync-intel-igpu-the-best-tool-for-the-job">Quick Sync Intel iGPU: the best tool for the job&lt;/h2>
&lt;p>Intel&amp;rsquo;s Quick Sync Video (QSV) is a dedicated video encode/decode block inside Intel CPUs and integrated graphics. It&amp;rsquo;s been in Intel platforms since Sandy Bridge (2011) and has matured substantially through each generation.&lt;/p>
&lt;p>&lt;strong>Why it wins for media transcoding:&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Dedicated hardware&lt;/strong> — QSV encode/decode is a fixed-function block. It doesn&amp;rsquo;t compete with 3D rendering or CUDA workloads. It just transcodes.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Zero incremental power&lt;/strong> — if you&amp;rsquo;re already running an Intel mini PC for Proxmox, the iGPU is already there. Using it for transcoding adds near-zero watts (the iGPU power comes from the CPU&amp;rsquo;s power budget, and transcoding doesn&amp;rsquo;t fully saturate the iGPU).&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>HDR tone-mapping&lt;/strong> — Intel Gen 12+ iGPUs (Tiger Lake, Alder Lake, Raptor Lake) support HDR10/HLG to SDR tone-mapping in hardware via OpenCL. Jellyfin with the right configuration can tone-map 4K HDR to SDR for SDR displays in real time without touching the CPU.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Simultaneous stream capacity&lt;/strong> — a 12th-gen Intel iGPU (N100, N150, i5-12500H) can handle 4–8 simultaneous 1080p transcode streams, or 2–4 simultaneous 4K H.265→H.264 transcode streams, without breaking a sweat.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Best platforms for QSV media transcoding:&lt;/strong>&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">CPU&lt;/th>
&lt;th scope="col">Generation&lt;/th>
&lt;th scope="col">iGPU&lt;/th>
&lt;th scope="col">Max simultaneous 4K transcode*&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Intel N100&lt;/td>
&lt;td>Alder Lake-N&lt;/td>
&lt;td>UHD Graphics&lt;/td>
&lt;td>2–3 streams&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Intel N150&lt;/td>
&lt;td>Twin Lake&lt;/td>
&lt;td>UHD Graphics&lt;/td>
&lt;td>2–3 streams&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Intel Core i5-12400&lt;/td>
&lt;td>Alder Lake&lt;/td>
&lt;td>UHD 730&lt;/td>
&lt;td>3–5 streams&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Intel Core i7-1360P&lt;/td>
&lt;td>Raptor Lake-P&lt;/td>
&lt;td>Iris Xe 96 EU&lt;/td>
&lt;td>4–6 streams&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Intel Core Ultra 5 125H&lt;/td>
&lt;td>Meteor Lake&lt;/td>
&lt;td>Arc iGPU&lt;/td>
&lt;td>6–8 streams&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>*Approximate, for H.265 4K → H.264 1080p transcode. HDR tone-mapping reduces this by roughly half.&lt;/p>
&lt;p>Sources: Plex forum hardware transcoding benchmarks thread, Jellyfin hardware acceleration documentation, Intel Architecture Day materials.&lt;/p>
&lt;h2 id="nvidia-nvenc-when-it-makes-sense">NVIDIA NVENC: when it makes sense&lt;/h2>
&lt;p>NVIDIA&amp;rsquo;s NVENC hardware encoder is fast, wide-format, and present on nearly every GeForce since 2012 — but mind the one trap: the GT 1030, the cheapest card wearing the badge, has NVENC removed entirely and cannot hardware-transcode. For media transcoding specifically:&lt;/p>
&lt;p>&lt;strong>When NVIDIA wins:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>You&amp;rsquo;re already running an NVIDIA GPU for gaming or AI inference (RTX 5080, 5060 Ti, etc.) — add media transcoding to a card you already have with zero extra cost&lt;/li>
&lt;li>You need 10+ simultaneous transcode streams (patched NVENC has no session limit)&lt;/li>
&lt;li>You want AV1 encoding (NVENC AV1 is available on RTX 40/50 series, faster than AV1 software encode)&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>When NVIDIA loses:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>You&amp;rsquo;re buying a GPU specifically for Plex/Jellyfin — even a used GTX 1650 (~$100, the cheapest card with modern NVENC; the GT 1030 has no encoder) adds ~7W idle vs an iGPU&amp;rsquo;s ~3W, and still loses to Quick Sync on value&lt;/li>
&lt;li>You need HDR tone-mapping — NVENC tone-mapping quality lags behind Intel/AMD OpenCL tone-mapping in Jellyfin&lt;/li>
&lt;li>You want to run a Plex server without a Plex Pass — no hardware transcode at all for free tier&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Session limit issue.&lt;/strong> NVIDIA consumer drivers cap simultaneous NVENC sessions — 8 on current drivers (the old cap of 3 that most guides still quote was raised in 2023-2024). Past the cap, the next stream falls back to software transcoding. On Linux, &lt;a href="https://github.com/keylase/nvidia-patch" rel="noopener">nvidia-patch by keylase&lt;/a> removes the session limit. On Windows, the limit can be patched similarly. This is not an issue for most single-user homelabs but matters for shared family setups.&lt;/p>
&lt;h2 id="amd-va-api-capable-but-more-work">AMD VA-API: capable but more work&lt;/h2>
&lt;p>AMD GPUs support hardware decode and encode via Video Core Next (VCN). On Linux, this means VAAPI acceleration in Jellyfin. Support has improved substantially through the 2024–2025 Jellyfin releases.&lt;/p>
&lt;p>&lt;strong>AMD iGPU (Ryzen with Radeon graphics):&lt;/strong> Available on Ryzen APUs like the 7840HS (Phoenix) and 8945HS (Hawk Point). These offer decent H.264/H.265 transcode and improving HDR tone-mapping support. Not as widely tested as Intel QSV for media server use.&lt;/p>
&lt;p>&lt;strong>AMD dGPU (RX 6000/7000):&lt;/strong> VCN-based hardware transcode works in Jellyfin. HDR tone-mapping via OpenCL is supported. Idle power (12–25W for an RX 6600) is lower than most NVIDIA consumer cards but higher than Intel iGPU.&lt;/p>
&lt;p>For pure media transcoding on AMD platforms, AMD APU iGPU beats buying an AMD dGPU for this specific purpose.&lt;/p>
&lt;h2 id="recommended-setup-by-use-case">Recommended setup by use case&lt;/h2>
&lt;p>&lt;strong>Single user, all modern clients (Apple TV, Shield):&lt;/strong>
No hardware transcode needed. Any mini PC is fine.&lt;/p>
&lt;p>&lt;strong>Single user, mixed clients + occasional remote streaming:&lt;/strong>
Intel N100 or N150 mini PC with QSV enabled in Plex/Jellyfin. ~10–15W idle, handles 2–3 simultaneous 4K transcode streams. For most homelab setups, this is the right answer.&lt;/p>
&lt;p>&lt;strong>Family Plex server, 4–8 simultaneous users:&lt;/strong>
Intel 12th gen mini PC (N150 or i5-12500H) or a dedicated transcode server with a Core i5-12400. QSV handles 4–6 simultaneous 1080p streams. If streams exceed this, add an NVIDIA GPU (RTX 3060 or similar) for NVENC overflow.&lt;/p>
&lt;p>&lt;strong>Running media server alongside GPU inference/gaming:&lt;/strong>
If you already have an RTX card for AI or gaming, enable NVENC in Plex/Jellyfin and let the GPU handle media transcoding as a secondary workload. No extra cost — the card is already running.&lt;/p>
&lt;h2 id="enabling-hardware-transcoding-in-jellyfin">Enabling hardware transcoding in Jellyfin&lt;/h2>
&lt;p>In Jellyfin → Dashboard → Playback → Transcoding:&lt;/p>
&lt;p>&lt;strong>Intel QSV:&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>Set Hardware acceleration: &lt;code>Intel QuickSync (QSV)&lt;/code>&lt;/li>
&lt;li>Enable codecs: H.264, H.265, VP9, AV1 (what your platform supports)&lt;/li>
&lt;li>Under Tone Mapping: enable &amp;ldquo;Enable VPP Tone Mapping&amp;rdquo; for Intel Gen 12+ — this uses the hardware tone-mapping block instead of OpenCL&lt;/li>
&lt;li>Enable &amp;ldquo;Allow encoding in HEVC format&amp;rdquo; if you want QSV to encode to H.265 (uses more iGPU capacity)&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>NVIDIA NVENC:&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>Set Hardware acceleration: &lt;code>NVIDIA NVENC&lt;/code>&lt;/li>
&lt;li>Enable H.264, H.265 encoding&lt;/li>
&lt;li>Tone mapping: use OpenCL (not NVENC-native) for better HDR conversion quality&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>VAAPI (AMD/Intel on Linux):&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>Set Hardware acceleration: &lt;code>Video Acceleration API (VAAPI)&lt;/code>&lt;/li>
&lt;li>Set device: &lt;code>/dev/dri/renderD128&lt;/code> (or &lt;code>/dev/dri/renderD129&lt;/code> if two GPUs)&lt;/li>
&lt;/ol>
&lt;p>After saving, play a video that would normally transcode (wrong format or remote bandwidth limit) and check the Jellyfin dashboard — it should show (hw) next to the transcode codec name.&lt;/p>
&lt;h2 id="power-cost-comparison">Power cost comparison&lt;/h2>
&lt;p>For a media server running 24/7 with 2–3 active transcode sessions/day:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Transcoding method&lt;/th>
&lt;th scope="col">Device&lt;/th>
&lt;th scope="col">Idle W&lt;/th>
&lt;th scope="col">Annual electricity (US avg)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Intel iGPU (QSV)&lt;/td>
&lt;td>Built-in, no extra cost&lt;/td>
&lt;td>0W extra&lt;/td>
&lt;td>$0 marginal&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>NVIDIA GTX 1650&lt;/td>
&lt;td>Added card (cheapest with NVENC)&lt;/td>
&lt;td>~+7W idle&lt;/td>
&lt;td>~+$8/year&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>NVIDIA RTX 3060&lt;/td>
&lt;td>Added or existing&lt;/td>
&lt;td>~+13W idle&lt;/td>
&lt;td>~+$15/year&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>NVIDIA RTX 3060 Ti&lt;/td>
&lt;td>Added or existing&lt;/td>
&lt;td>~+12W idle&lt;/td>
&lt;td>~+$14/year&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>AMD RX 6600&lt;/td>
&lt;td>Added card&lt;/td>
&lt;td>~+5W idle&lt;/td>
&lt;td>~+$6/year&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>At these margins, if you&amp;rsquo;re buying a GPU specifically for media transcoding, the Intel QSV platform wins decisively: you get better tone-mapping, comparable stream capacity, and zero marginal hardware or electricity cost. Buy a mini PC with a 12th-gen Intel chip and never worry about it again.&lt;/p>
&lt;p>The full electricity picture is in the &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">Power &amp;amp; Cost Calculator&lt;/a> — model your media server as one device in your homelab total.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Looking for a mini PC to run Jellyfin on? The &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">Best Mini PCs for Homelab 2026&lt;/a> covers the Intel QSV-capable options. The &lt;a href="https://techfuelhq.com/homelab/24-7-homelab-idle-power-costs-2026/">24/7 Idle Power Costs&lt;/a> article has measured idle draws for the specific hardware you&amp;rsquo;re comparing. For the complete Jellyfin install — Docker Compose, hardware transcoding config, NPM HTTPS, and Tailscale remote access — the &lt;a href="https://techfuelhq.com/tutorials/jellyfin-setup-docker-homelab-2026/">Jellyfin Setup on Docker guide&lt;/a> covers it end-to-end.&lt;/em>&lt;/p></description></item><item><title>Immich Setup and Google Photos Migration Guide (2026)</title><link>https://techfuelhq.com/tutorials/immich-google-photos-migration-2026/</link><pubDate>Thu, 11 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tutorials/immich-google-photos-migration-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-11 · ~14 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/tutorials/immich-google-photos-migration-2026.svg" alt="Architecture diagram of the Immich self-hosted photo stack: Google Takeout zips imported via immich-go alongside mobile background backups into the Immich Docker Compose stack (server, microservices, machine-learning, redis, and PostgreSQL with pgvecto-rs) on port 2283, with hardware ML acceleration timings for CPU, Intel QSV, and NVIDIA CUDA, plus an Nginx Proxy Manager reverse proxy." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>Immich is the only self-hosted photo library that&amp;rsquo;s actually replaced Google Photos for most users in 2026 — face recognition, CLIP semantic search (&amp;ldquo;photos of the lake&amp;rdquo;), the timeline view, and a mobile backup app that runs automatically in the background. This guide sets up Immich from scratch and migrates an existing Google Photos library using the Takeout export path.&lt;/p>
&lt;p>For the Immich vs PhotoPrism vs Ente comparison, see the &lt;a href="https://techfuelhq.com/tutorials/self-hosted-photo-library-immich-photoprism-ente-2026/">self-hosted photo library showdown&lt;/a>.&lt;/p>
&lt;h2 id="hardware-requirements">Hardware requirements&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Scenario&lt;/th>
&lt;th scope="col">RAM&lt;/th>
&lt;th scope="col">CPU&lt;/th>
&lt;th scope="col">GPU&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Small library (&amp;lt;20K photos), no active ML&lt;/td>
&lt;td>4GB&lt;/td>
&lt;td>2 cores&lt;/td>
&lt;td>Not needed&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Typical library (20–100K photos)&lt;/td>
&lt;td>8–16GB&lt;/td>
&lt;td>4 cores&lt;/td>
&lt;td>Helpful but not required&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Large library (100K+ photos), fast initial index&lt;/td>
&lt;td>16–32GB&lt;/td>
&lt;td>6–8 cores&lt;/td>
&lt;td>CUDA GPU recommended for indexing speed&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Running alongside other services&lt;/td>
&lt;td>Add 4–8GB buffer&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>ML indexing speed matters most during the initial import. On a library of 80,000 photos:&lt;/p>
&lt;ul>
&lt;li>CPU-only indexing: ~8–12 hours&lt;/li>
&lt;li>Intel Quick Sync (VAAPI): ~4–6 hours&lt;/li>
&lt;li>NVIDIA GPU (CUDA): ~2–4 hours&lt;/li>
&lt;/ul>
&lt;p>After initial indexing, ongoing ML processing (new photos) runs in minutes.&lt;/p>
&lt;h2 id="step-1-deploy-immich-with-docker-compose">Step 1: Deploy Immich with Docker Compose&lt;/h2>
&lt;p>Create the Immich stack directory:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>mkdir -p /opt/stacks/immich &lt;span style="color:#f92672">&amp;amp;&amp;amp;&lt;/span> cd /opt/stacks/immich
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Download the official Docker Compose files:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>wget -O docker-compose.yml &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>wget -O .env &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> https://github.com/immich-app/immich/releases/latest/download/example.env
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Edit &lt;code>.env&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>nano .env
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Set these values:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-env" data-lang="env">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Upload path — where your photos will be stored&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Point this at your NAS mount or a large volume&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>UPLOAD_LOCATION&lt;span style="color:#f92672">=&lt;/span>/mnt/photos/immich
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Database credentials (generate strong passwords)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>DB_PASSWORD&lt;span style="color:#f92672">=&lt;/span>your-strong-db-password-here
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Timezone&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>TZ&lt;span style="color:#f92672">=&lt;/span>America/Chicago
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Create the upload directory:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>mkdir -p /mnt/photos/immich
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Pin the Immich version&lt;/strong> — the &lt;code>:release&lt;/code> tag in the official compose file is a moving target. Pin to a specific version to avoid surprise schema migrations:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Find the latest stable release&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>IMMICH_VERSION&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#66d9ef">$(&lt;/span>curl -s https://api.github.com/repos/immich-app/immich/releases/latest | grep &lt;span style="color:#e6db74">&amp;#39;&amp;#34;tag_name&amp;#34;&amp;#39;&lt;/span> | cut -d &lt;span style="color:#e6db74">&amp;#39;&amp;#34;&amp;#39;&lt;/span> -f 4&lt;span style="color:#66d9ef">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>echo &lt;span style="color:#e6db74">&amp;#34;IMMICH_VERSION=&lt;/span>$IMMICH_VERSION&lt;span style="color:#e6db74">&amp;#34;&lt;/span> &amp;gt;&amp;gt; .env
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Start Immich:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>docker compose up -d
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Immich starts several containers: &lt;code>immich-server&lt;/code>, &lt;code>immich-microservices&lt;/code>, &lt;code>immich-machine-learning&lt;/code>, &lt;code>redis&lt;/code>, and &lt;code>database&lt;/code>. The initial startup takes 2–3 minutes while the database initializes.&lt;/p>
&lt;p>Access the web UI at &lt;code>http://your-host-ip:2283&lt;/code>. Create the admin account on first launch.&lt;/p>
&lt;h2 id="step-2-configure-storage-and-external-libraries">Step 2: Configure storage and external libraries&lt;/h2>
&lt;p>&lt;strong>In Immich Settings → Storage:&lt;/strong>&lt;/p>
&lt;p>The default storage structure stores originals in &lt;code>UPLOAD_LOCATION/{userID}/{year}/{month}/&lt;/code>. If you prefer to preserve the original directory layout from your existing photo archive, configure an External Library instead:&lt;/p>
&lt;p>&lt;strong>Administration → External Libraries → Create Library:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Point it at an existing folder (e.g., &lt;code>/mnt/photos/archive&lt;/code>) that Immich mounts read-only&lt;/li>
&lt;li>Immich indexes and searches photos in this location without copying or modifying them&lt;/li>
&lt;li>Use this path for existing photo archives you want to browse in Immich but manage outside of it&lt;/li>
&lt;/ul>
&lt;p>For Google Takeout imports and new phone backups, let Immich manage the storage via the Upload path.&lt;/p>
&lt;h2 id="step-3-mobile-backup-setup">Step 3: Mobile backup setup&lt;/h2>
&lt;p>&lt;strong>Immich mobile app&lt;/strong> is available on iOS and Android (search &amp;ldquo;Immich&amp;rdquo; in the App Store / Play Store).&lt;/p>
&lt;p>After installing:&lt;/p>
&lt;ol>
&lt;li>Open the app → enter your server URL: &lt;code>http://192.168.1.10:2283&lt;/code> (or your NPM domain if you&amp;rsquo;ve set that up)&lt;/li>
&lt;li>Log in with your account&lt;/li>
&lt;li>Tap the profile icon → Backup → configure backup on WiFi only or on any network&lt;/li>
&lt;li>Enable &amp;ldquo;Background Backup&amp;rdquo; in the app settings&lt;/li>
&lt;/ol>
&lt;p>For background backup to work reliably on iOS:&lt;/p>
&lt;ul>
&lt;li>Go to iOS Settings → Immich → allow background app refresh&lt;/li>
&lt;li>On iOS, the Immich app must be opened periodically to trigger background sync (iOS background task limitation)&lt;/li>
&lt;/ul>
&lt;p>For full automatic background backup on Android, enable the &amp;ldquo;Ignore Battery Optimization&amp;rdquo; option in the app.&lt;/p>
&lt;h2 id="step-4-enable-hardware-ml-acceleration">Step 4: Enable hardware ML acceleration&lt;/h2>
&lt;p>Hardware acceleration dramatically reduces the time to index your library. Configure it based on your hardware.&lt;/p>
&lt;p>&lt;strong>NVIDIA GPU (CUDA):&lt;/strong>&lt;/p>
&lt;p>In &lt;code>docker-compose.yml&lt;/code>, under &lt;code>immich-machine-learning&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">immich-machine-learning&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}-cuda&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">deploy&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">resources&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">reservations&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">devices&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">driver&lt;/span>: &lt;span style="color:#ae81ff">nvidia&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">count&lt;/span>: &lt;span style="color:#ae81ff">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">capabilities&lt;/span>: [&lt;span style="color:#ae81ff">gpu]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The NVIDIA Container Toolkit must be installed on the host:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># On Proxmox or Docker host&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> sed &lt;span style="color:#e6db74">&amp;#39;s#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g&amp;#39;&lt;/span> | &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>apt update &lt;span style="color:#f92672">&amp;amp;&amp;amp;&lt;/span> apt install -y nvidia-container-toolkit
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>systemctl restart docker
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Intel Quick Sync (VAAPI) / OpenVINO:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">immich-machine-learning&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}-openvino&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">devices&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">/dev/dri:/dev/dri&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>After changing the image and adding device access, redeploy:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>docker compose pull
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker compose up -d
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>In the Immich web UI → Administration → Jobs → Machine Learning: confirm the GPU is being used (processing speed should increase noticeably).&lt;/p>
&lt;h2 id="step-5-migrate-google-photos-via-takeout">Step 5: Migrate Google Photos via Takeout&lt;/h2>
&lt;p>&lt;strong>Request your Takeout export:&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>Go to &lt;a href="https://takeout.google.com" rel="noopener">takeout.google.com&lt;/a>&lt;/li>
&lt;li>Deselect everything, then select &amp;ldquo;Google Photos&amp;rdquo; only&lt;/li>
&lt;li>Choose &amp;ldquo;Export once&amp;rdquo;, maximum file size (50GB per archive), &lt;code>.zip&lt;/code> format&lt;/li>
&lt;li>Google emails you when the export is ready (30 min to 24 hours)&lt;/li>
&lt;/ol>
&lt;p>Download all the zip files to your server. With a large library, expect 5–20 zips. At up to 50 GB per archive that is a serious one-time download, so if your ISP enforces a monthly cap, check it against your normal usage with the &lt;a href="https://techfuelhq.com/tools/data-usage-calculator/">data usage calculator&lt;/a> before you kick it off.&lt;/p>
&lt;p>&lt;strong>Install immich-go&lt;/strong>, the tool that handles Takeout import correctly (preserving metadata from .json sidecars):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Get the latest release from GitHub&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>IMMICH_GO_VERSION&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#66d9ef">$(&lt;/span>curl -s https://api.github.com/repos/simulot/immich-go/releases/latest | grep &lt;span style="color:#e6db74">&amp;#39;&amp;#34;tag_name&amp;#34;&amp;#39;&lt;/span> | cut -d &lt;span style="color:#e6db74">&amp;#39;&amp;#34;&amp;#39;&lt;/span> -f 4&lt;span style="color:#66d9ef">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>wget &lt;span style="color:#e6db74">&amp;#34;https://github.com/simulot/immich-go/releases/download/&lt;/span>&lt;span style="color:#e6db74">${&lt;/span>IMMICH_GO_VERSION&lt;span style="color:#e6db74">}&lt;/span>&lt;span style="color:#e6db74">/immich-go_Linux_arm64.tar.gz&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># For x86_64:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>wget &lt;span style="color:#e6db74">&amp;#34;https://github.com/simulot/immich-go/releases/download/&lt;/span>&lt;span style="color:#e6db74">${&lt;/span>IMMICH_GO_VERSION&lt;span style="color:#e6db74">}&lt;/span>&lt;span style="color:#e6db74">/immich-go_Linux_x86_64.tar.gz&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>tar xzf immich-go_*.tar.gz
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mv immich-go /usr/local/bin/
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Get your Immich API key: &lt;strong>Immich web UI → Profile → API Keys → New API Key&lt;/strong>.&lt;/p>
&lt;p>&lt;strong>Run the import:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Extract all Takeout zips to a staging directory&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mkdir -p /mnt/staging/takeout
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">for&lt;/span> f in /mnt/staging/takeout-zips/*.zip; &lt;span style="color:#66d9ef">do&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> unzip -q &lt;span style="color:#e6db74">&amp;#34;&lt;/span>$f&lt;span style="color:#e6db74">&amp;#34;&lt;/span> -d /mnt/staging/takeout
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">done&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Import with immich-go&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>immich-go upload &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --server http://localhost:2283 &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --api-key YOUR-API-KEY &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --google-photos &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --create-albums &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> /mnt/staging/takeout/Takeout/Google&lt;span style="color:#ae81ff">\ &lt;/span>Photos/
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The &lt;code>--google-photos&lt;/code> flag tells immich-go to look for .json sidecar files and apply their metadata. The &lt;code>--create-albums&lt;/code> flag recreates your Google Photos albums in Immich.&lt;/p>
&lt;p>Expect 30–90 seconds of processing per 1,000 photos for a CPU-based ML setup. Watch progress with &lt;code>immich-go&lt;/code> output — it reports files processed, skipped (duplicates), and any errors.&lt;/p>
&lt;p>&lt;strong>Handle duplicates:&lt;/strong> If you&amp;rsquo;ve already imported some photos via mobile backup before running Takeout, immich-go detects duplicates by file hash and skips them. You won&amp;rsquo;t get duplicates in your library.&lt;/p>
&lt;p>After import completes, let Immich run ML indexing on the new photos. In the web UI → Administration → Jobs → Face Detection: queue this job to run. It can take hours on a large library.&lt;/p>
&lt;h2 id="step-6-reverse-proxy-with-nginx-proxy-manager">Step 6: Reverse proxy with Nginx Proxy Manager&lt;/h2>
&lt;p>Get your Immich accessible at a clean URL instead of &lt;code>192.168.1.10:2283&lt;/code>:&lt;/p>
&lt;p>In &lt;a href="https://techfuelhq.com/tutorials/nginx-proxy-manager-homelab-2026/">Nginx Proxy Manager&lt;/a> → Add Proxy Host:&lt;/p>
&lt;ul>
&lt;li>Domain: &lt;code>photos.yourdomain.com&lt;/code>&lt;/li>
&lt;li>Scheme: &lt;code>http&lt;/code>&lt;/li>
&lt;li>Forward to: &lt;code>immich-server&lt;/code> container name (or LAN IP if separate host)&lt;/li>
&lt;li>Port: &lt;code>2283&lt;/code>&lt;/li>
&lt;li>SSL: enable with your wildcard cert&lt;/li>
&lt;li>&lt;strong>Client max body size:&lt;/strong> Set in the Advanced tab: &lt;code>client_max_body_size 0;&lt;/code> — required for large file uploads from mobile&lt;/li>
&lt;/ul>
&lt;p>Update the mobile app: replace the server URL with &lt;code>https://photos.yourdomain.com&lt;/code>.&lt;/p>
&lt;h2 id="step-7-backup-strategy">Step 7: Backup strategy&lt;/h2>
&lt;p>Immich&amp;rsquo;s &lt;a href="https://immich.app/docs/administration/backup-and-restore/" rel="noopener">official backup documentation&lt;/a> is thorough. The short version:&lt;/p>
&lt;p>&lt;strong>What to back up:&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>&lt;code>UPLOAD_LOCATION&lt;/code> — all your original photos and videos&lt;/li>
&lt;li>PostgreSQL database — ML embeddings, face clusters, album structure, metadata&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>PostgreSQL backup:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>docker exec -t immich_postgres pg_dumpall -c -U postgres &amp;gt; &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> /mnt/backups/immich/db-&lt;span style="color:#66d9ef">$(&lt;/span>date +%Y%m%d&lt;span style="color:#66d9ef">)&lt;/span>.sql
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Automate this with a cron job:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>echo &lt;span style="color:#e6db74">&amp;#34;0 3 * * * root docker exec -t immich_postgres pg_dumpall -c -U postgres &amp;gt; /mnt/backups/immich/db-\$(date +\%Y\%m\%d).sql&amp;#34;&lt;/span> &amp;gt;&amp;gt; /etc/crontab
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Photo backup via restic:&lt;/strong>&lt;/p>
&lt;p>If you&amp;rsquo;re running &lt;a href="https://techfuelhq.com/tutorials/automated-offsite-backups-restic-2026/">restic for off-site backups&lt;/a>, add &lt;code>UPLOAD_LOCATION&lt;/code> and your database dump directory to the backup paths. Photos are the highest-priority backup target — originals are only in one place.&lt;/p>
&lt;p>A common mistake: backing up only the Docker volumes (which contain thumbnails and cache) instead of &lt;code>UPLOAD_LOCATION&lt;/code>. Back up the actual photo directory.&lt;/p>
&lt;h2 id="common-issues">Common issues&lt;/h2>
&lt;p>&lt;strong>ML indexing not starting:&lt;/strong> Check that &lt;code>immich-machine-learning&lt;/code> container is running: &lt;code>docker compose ps&lt;/code>. If it&amp;rsquo;s restart-looping, check logs: &lt;code>docker compose logs immich-machine-learning&lt;/code>. CUDA issues usually show as &amp;ldquo;CUDA not available&amp;rdquo; — verify the NVIDIA Container Toolkit is installed and the container has GPU access.&lt;/p>
&lt;p>&lt;strong>Google Takeout import skipping files:&lt;/strong> immich-go skips files it has already imported (by hash). Run with &lt;code>--dry-run&lt;/code> first to see what would be imported without committing.&lt;/p>
&lt;p>&lt;strong>Mobile app can&amp;rsquo;t connect:&lt;/strong> Verify the server URL includes the port if you&amp;rsquo;re using the direct IP (&lt;code>http://192.168.1.10:2283&lt;/code>). If using NPM, verify the client_max_body_size 0 setting is in the advanced config and that the SSL cert is valid.&lt;/p>
&lt;p>&lt;strong>Thumbnails not generating:&lt;/strong> Jobs in Immich run asynchronously. After a large import, the thumbnail and ML jobs queue behind each other. Check Administration → Jobs — each job type shows queued/active/failed counts. Failed jobs usually indicate a storage permission issue on &lt;code>UPLOAD_LOCATION&lt;/code>.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Comparing Immich to PhotoPrism and Ente before committing? The &lt;a href="https://techfuelhq.com/tutorials/self-hosted-photo-library-immich-photoprism-ente-2026/">self-hosted photo library showdown&lt;/a> covers all three. For access from anywhere, &lt;a href="https://techfuelhq.com/tutorials/tailscale-remote-access-homelab-2026/">Tailscale&lt;/a> or &lt;a href="https://techfuelhq.com/tutorials/wireguard-self-hosted-vpn-proxmox-2026/">WireGuard&lt;/a> give your mobile app a direct path to Immich without exposing the server publicly.&lt;/em>&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://docs.immich.app/install/docker-compose/" rel="noopener">Immich Docker Compose install&lt;/a> &amp;ndash; official docs on the recommended compose deployment, .env config, and container set.&lt;/li>
&lt;li>&lt;a href="https://docs.immich.app/administration/backup-and-restore/" rel="noopener">Immich Backup and Restore&lt;/a> &amp;ndash; official docs on backing up the upload location and PostgreSQL database.&lt;/li>
&lt;li>&lt;a href="https://github.com/simulot/immich-go" rel="noopener">immich-go&lt;/a> &amp;ndash; official repository for the tool that imports Google Photos Takeout and preserves JSON sidecar metadata.&lt;/li>
&lt;li>&lt;a href="https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html" rel="noopener">Installing the NVIDIA Container Toolkit&lt;/a> &amp;ndash; official guide for the host toolkit required for CUDA machine-learning acceleration.&lt;/li>
&lt;/ul></description></item><item><title>Ryzen 7 7800X3D Review (2026): Still the Gaming CPU Standard</title><link>https://techfuelhq.com/reviews/ryzen-7-7800x3d-review-2026/</link><pubDate>Thu, 11 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/reviews/ryzen-7-7800x3d-review-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-06-11 · Updated 2026-07-13 · ~12 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/reviews/ryzen-7-7800x3d-spec-card.svg" alt="AMD Ryzen 7 7800X3D review spec card: 4.6 out of 5 rating, 8 cores/16 threads, 96MB 3D V-Cache L3, 5.0 GHz boost, 120W TDP, AM5 socket, 60-90W real gaming power draw" width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR · Should you buy or keep it in 2026?&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>You already own one:&lt;/strong> Keep it. Three years on, it still feeds a modern GPU at 1440p/4K with no meaningful bottleneck. Save your money for a GPU or a future Zen 6 drop-in.&lt;/li>
&lt;li>&lt;strong>New build, gaming on a budget:&lt;/strong> Buy the &lt;strong>7800X3D&lt;/strong> (~$349 new). It's the value pick of the X3D line — put the ~$100 you save toward the GPU.&lt;/li>
&lt;li>&lt;strong>Competitive esports or heavy sims at high refresh (1080p, CPU-bound):&lt;/strong> Step up to the &lt;strong>9800X3D&lt;/strong> — it's ~10-15% faster there and overclockable.&lt;/li>
&lt;li>&lt;strong>Chasing the outright fastest gaming chip:&lt;/strong> That's the 2026 &lt;strong>9850X3D&lt;/strong> (~$499). It's ~3-4% over the 9800X3D — a thin margin for the money.&lt;/li>
&lt;li>&lt;strong>Heavy production (Blender, encoding, compiling):&lt;/strong> Wrong chip. Get a 7900X/9900X-class part with more cores for less.&lt;/li>
&lt;/ul>
&lt;p style="margin:0.75rem 0 0 0;font-size:0.9rem;color:#a0a0b8;">July 2026 live pricing: 7800X3D ~$349 new (tray ~$329) · 9800X3D ~$445 · 9850X3D ~$499 · all AM5 · AM5 confirmed through 2029.&lt;/p>
&lt;/div>
&lt;p>The 7800X3D launched in April 2023 and immediately displaced everything else at the top of gaming CPU charts. It&amp;rsquo;s been in my daily machine ever since — paired with a &lt;a href="https://techfuelhq.com/reviews/rog-strix-b650a-review-2026/">ROG STRIX B650-A&lt;/a>, &lt;a href="https://techfuelhq.com/reviews/nzxt-kraken-360-review-2026/">NZXT Kraken 360 AIO&lt;/a>, and &lt;a href="https://techfuelhq.com/gpu-reviews/rog-astral-rtx-5080-oc-review-2026/">ROG Astral RTX 5080 OC&lt;/a>.&lt;/p>
&lt;p>This is a long-term review, not a launch-day first impression. Three-plus years in, the question I get is no longer &amp;ldquo;is it good&amp;rdquo; — it&amp;rsquo;s &amp;ldquo;is it &lt;em>still&lt;/em> good in 2026, now that the 9800X3D and 9850X3D exist?&amp;rdquo; The short answer is yes, and the interesting part is &lt;em>why the gap to those newer chips is smaller than the spec sheets suggest&lt;/em>. Here is what daily ownership, current pricing, and the honest cross-generation math actually look like.&lt;/p>
&lt;h2 id="published-specifications">Published specifications&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Spec&lt;/th>
&lt;th scope="col">Value&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Architecture&lt;/td>
&lt;td>Zen 4 (5nm TSMC CCD, 6nm IOD)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Cores / Threads&lt;/td>
&lt;td>8 / 16&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Base clock&lt;/td>
&lt;td>4.2 GHz&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Boost clock (max)&lt;/td>
&lt;td>5.0 GHz&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>L2 cache&lt;/td>
&lt;td>8MB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>L3 cache&lt;/td>
&lt;td>96MB (32MB native + 64MB 3D V-Cache)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>TDP&lt;/td>
&lt;td>120W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Socket&lt;/td>
&lt;td>AM5&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Memory support&lt;/td>
&lt;td>DDR5 (official up to DDR5-5200)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>PCIe version&lt;/td>
&lt;td>PCIe 5.0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Integrated graphics&lt;/td>
&lt;td>RDNA 2 (2 CUs)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Source: &lt;a href="https://www.amd.com/en/products/cpu/amd-ryzen-7-7800x3d" rel="noopener">AMD official 7800X3D product page&lt;/a>&lt;/p>
&lt;p>The headline number people search for is the cache: &lt;strong>96MB of L3&lt;/strong> (32MB native + 64MB stacked), on a single 8-core die. The 120W TDP is the thermal design spec, not what the chip actually draws in gaming. Real gaming power runs &lt;strong>60–90W&lt;/strong> depending on workload — well below the rated TDP. That&amp;rsquo;s the 3D V-Cache effect: the cache absorbs work that would otherwise demand higher clocks, so the CPU boosts less aggressively and draws less power for the same or better performance.&lt;/p>
&lt;h2 id="the-gap-to-newer-chips-closes-as-you-climb-resolution">The gap to newer chips closes as you climb resolution&lt;/h2>
&lt;p>This is the single most misunderstood thing about the &amp;ldquo;still good in 2026&amp;rdquo; question. Every benchmark chart you&amp;rsquo;ve seen that shows the 9800X3D or 9850X3D crushing the 7800X3D was run at &lt;strong>1080p to isolate the CPU&lt;/strong>. That&amp;rsquo;s the correct way to &lt;em>measure&lt;/em> a CPU — and the wrong way to predict what &lt;em>you&amp;rsquo;ll&lt;/em> feel, because almost nobody buys a top X3D chip to game at 1080p low.&lt;/p>
&lt;p>As you climb resolution, the GPU takes over more of the frame, and the CPU gap collapses. Here is the honest shape of it:&lt;/p>
&lt;div class="visual-block" style="border:1px solid #1e2233;border-radius:10px;padding:1.4rem 1.5rem 1.6rem;margin:1.75rem 0;background:#0b1220;">
&lt;p style="margin:0 0 0.3rem 0;font-weight:700;color:#e8ecff;font-size:1.05rem;">The gap closes as you climb&lt;/p>
&lt;p style="margin:0 0 1.15rem 0;color:#8a93ab;font-size:0.86rem;line-height:1.45;">Approximate relative gaming performance, 7800X3D = 100, measured GPU-unbound. The real gap you'll feel depends on the game, resolution, and GPU. Bars use one shared scale, so the convergence downward is the point.&lt;/p>
&lt;div style="display:flex;flex-direction:column;gap:1.2rem;">
&lt;div style="min-width:0;">
&lt;p style="margin:0 0 0.55rem 0;color:#c8ceda;font-size:0.9rem;font-weight:600;">1080p · CPU-bound &lt;span style="color:#7f889c;font-weight:400;">(competitive esports, heavy sims)&lt;/span>&lt;/p>
&lt;div style="margin-bottom:0.5rem;">&lt;div style="display:flex;justify-content:space-between;align-items:baseline;margin-bottom:0.16rem;">&lt;span style="color:#c8ff00;font-size:0.82rem;font-weight:600;">7800X3D&lt;/span>&lt;span style="color:#c8ff00;font-size:0.78rem;">baseline&lt;/span>&lt;/div>&lt;div style="width:80%;height:13px;border-radius:4px;background:#c8ff00;">&lt;/div>&lt;/div>
&lt;div style="margin-bottom:0.5rem;">&lt;div style="display:flex;justify-content:space-between;align-items:baseline;margin-bottom:0.16rem;">&lt;span style="color:#9fc0ff;font-size:0.82rem;font-weight:600;">9800X3D&lt;/span>&lt;span style="color:#9fc0ff;font-size:0.78rem;">+13%&lt;/span>&lt;/div>&lt;div style="width:90.4%;height:13px;border-radius:4px;background:#4f8cff;">&lt;/div>&lt;/div>
&lt;div>&lt;div style="display:flex;justify-content:space-between;align-items:baseline;margin-bottom:0.16rem;">&lt;span style="color:#cbaef0;font-size:0.82rem;font-weight:600;">9850X3D&lt;/span>&lt;span style="color:#cbaef0;font-size:0.78rem;">+21%&lt;/span>&lt;/div>&lt;div style="width:96.8%;height:13px;border-radius:4px;background:#b07fe0;">&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="min-width:0;">
&lt;p style="margin:0 0 0.55rem 0;color:#c8ceda;font-size:0.9rem;font-weight:600;">1080p · typical AAA&lt;/p>
&lt;div style="margin-bottom:0.5rem;">&lt;div style="display:flex;justify-content:space-between;align-items:baseline;margin-bottom:0.16rem;">&lt;span style="color:#c8ff00;font-size:0.82rem;font-weight:600;">7800X3D&lt;/span>&lt;span style="color:#c8ff00;font-size:0.78rem;">baseline&lt;/span>&lt;/div>&lt;div style="width:80%;height:13px;border-radius:4px;background:#c8ff00;">&lt;/div>&lt;/div>
&lt;div style="margin-bottom:0.5rem;">&lt;div style="display:flex;justify-content:space-between;align-items:baseline;margin-bottom:0.16rem;">&lt;span style="color:#9fc0ff;font-size:0.82rem;font-weight:600;">9800X3D&lt;/span>&lt;span style="color:#9fc0ff;font-size:0.78rem;">+7%&lt;/span>&lt;/div>&lt;div style="width:85.6%;height:13px;border-radius:4px;background:#4f8cff;">&lt;/div>&lt;/div>
&lt;div>&lt;div style="display:flex;justify-content:space-between;align-items:baseline;margin-bottom:0.16rem;">&lt;span style="color:#cbaef0;font-size:0.82rem;font-weight:600;">9850X3D&lt;/span>&lt;span style="color:#cbaef0;font-size:0.78rem;">+10%&lt;/span>&lt;/div>&lt;div style="width:88%;height:13px;border-radius:4px;background:#b07fe0;">&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="min-width:0;">
&lt;p style="margin:0 0 0.55rem 0;color:#c8ceda;font-size:0.9rem;font-weight:600;">1440p · the mainstream target&lt;/p>
&lt;div style="margin-bottom:0.5rem;">&lt;div style="display:flex;justify-content:space-between;align-items:baseline;margin-bottom:0.16rem;">&lt;span style="color:#c8ff00;font-size:0.82rem;font-weight:600;">7800X3D&lt;/span>&lt;span style="color:#c8ff00;font-size:0.78rem;">baseline&lt;/span>&lt;/div>&lt;div style="width:80%;height:13px;border-radius:4px;background:#c8ff00;">&lt;/div>&lt;/div>
&lt;div style="margin-bottom:0.5rem;">&lt;div style="display:flex;justify-content:space-between;align-items:baseline;margin-bottom:0.16rem;">&lt;span style="color:#9fc0ff;font-size:0.82rem;font-weight:600;">9800X3D&lt;/span>&lt;span style="color:#9fc0ff;font-size:0.78rem;">+4%&lt;/span>&lt;/div>&lt;div style="width:83.2%;height:13px;border-radius:4px;background:#4f8cff;">&lt;/div>&lt;/div>
&lt;div>&lt;div style="display:flex;justify-content:space-between;align-items:baseline;margin-bottom:0.16rem;">&lt;span style="color:#cbaef0;font-size:0.82rem;font-weight:600;">9850X3D&lt;/span>&lt;span style="color:#cbaef0;font-size:0.78rem;">+6%&lt;/span>&lt;/div>&lt;div style="width:84.8%;height:13px;border-radius:4px;background:#b07fe0;">&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="min-width:0;">
&lt;p style="margin:0 0 0.55rem 0;color:#c8ceda;font-size:0.9rem;font-weight:600;">4K · the GPU does the work&lt;/p>
&lt;div style="margin-bottom:0.5rem;">&lt;div style="display:flex;justify-content:space-between;align-items:baseline;margin-bottom:0.16rem;">&lt;span style="color:#c8ff00;font-size:0.82rem;font-weight:600;">7800X3D&lt;/span>&lt;span style="color:#c8ff00;font-size:0.78rem;">baseline&lt;/span>&lt;/div>&lt;div style="width:80%;height:13px;border-radius:4px;background:#c8ff00;">&lt;/div>&lt;/div>
&lt;div style="margin-bottom:0.5rem;">&lt;div style="display:flex;justify-content:space-between;align-items:baseline;margin-bottom:0.16rem;">&lt;span style="color:#9fc0ff;font-size:0.82rem;font-weight:600;">9800X3D&lt;/span>&lt;span style="color:#9fc0ff;font-size:0.78rem;">+1%&lt;/span>&lt;/div>&lt;div style="width:80.8%;height:13px;border-radius:4px;background:#4f8cff;">&lt;/div>&lt;/div>
&lt;div>&lt;div style="display:flex;justify-content:space-between;align-items:baseline;margin-bottom:0.16rem;">&lt;span style="color:#cbaef0;font-size:0.82rem;font-weight:600;">9850X3D&lt;/span>&lt;span style="color:#cbaef0;font-size:0.78rem;">+2%&lt;/span>&lt;/div>&lt;div style="width:81.6%;height:13px;border-radius:4px;background:#b07fe0;">&lt;/div>&lt;/div>
&lt;/div>
&lt;/div>
&lt;p style="margin:1.1rem 0 0 0;color:#8a93ab;font-size:0.82rem;line-height:1.45;">Deltas triangulated from third-party 1080p/1440p/4K testing and community reporting (Hardware Unboxed, GamersNexus' 9850X3D review, r/buildapc owners). At 4K the three chips are inside the margin of a re-run.&lt;/p>
&lt;/div>
&lt;p>The community says the same thing, minus the chart. The most-upvoted advice in the big r/buildapc &amp;ldquo;7800X3D vs 9800X3D for future-proofing&amp;rdquo; thread is blunt: the uplift only exists &amp;ldquo;if the 7800X3D is &lt;em>actually&lt;/em> a bottleneck,&amp;rdquo; which for most people at 1440p/4K it isn&amp;rsquo;t. The one honest exception everyone names: cache-hungry, simulation-heavy, or competitive titles — &lt;strong>Stellaris, Baldur&amp;rsquo;s Gate 3, World of Warcraft, Escape from Tarkov, VRChat&lt;/strong> — where the newer chips (and X3D in general) pull a real, feelable lead even at higher resolutions. If those are your games at high refresh, read the &lt;a href="https://techfuelhq.com/articles/7800x3d-vs-9800x3d-upgrade-2026/">7800X3D vs 9800X3D upgrade breakdown&lt;/a> before you decide.&lt;/p>
&lt;h2 id="the-3d-v-cache-advantage-specifically">The 3D V-Cache advantage, specifically&lt;/h2>
&lt;p>3D V-Cache stacks 64MB of SRAM on top of the standard CCD, bringing L3 to 96MB. The benefit is narrowly specific to workloads with large working sets that overflow a 32MB L3 cache.&lt;/p>
&lt;p>Games hit this profile frequently. A typical open-world game&amp;rsquo;s frame-to-frame working set — enemy AI state, visible geometry, audio, physics simulation — can exceed 32MB in complex scenes. When that data misses L3 and goes to DDR5 main memory, the CPU stalls waiting for data. With 96MB of L3, those stalls disappear.&lt;/p>
&lt;p>The effect is game-dependent. In titles with large working sets (Cyberpunk 2077, Hogwarts Legacy, Total War: Warhammer III, most modern AAA open-world titles), the 7800X3D pulls 10–25% higher frame rates than a 7700X with identical DDR5 and the same GPU. In titles that fit in 32MB L3 (Counter-Strike 2 at moderate settings, older competitive titles), the advantage shrinks to noise.&lt;/p>
&lt;h2 id="single-ccd-matters">Single-CCD matters&lt;/h2>
&lt;p>The 7800X3D has one CCD (Core Complex Die). All 8 cores are on the same die with direct access to the 96MB L3.&lt;/p>
&lt;p>The 7900X3D and 7950X3D have two CCDs — but only one CCD has the 3D V-Cache. Windows must schedule gaming threads on the V-Cache CCD for the benefit to apply. AMD&amp;rsquo;s driver handles this via a preferred-core algorithm, but the scheduler doesn&amp;rsquo;t always get it right, and third-party tools (Process Lasso, AMD software) are sometimes needed to pin processes to the correct CCD.&lt;/p>
&lt;p>The 7800X3D doesn&amp;rsquo;t have this problem. Every core is on the same CCD with the same cache. No scheduling complexity. This is the primary advantage of the 8-core single-CCD design over the higher-core-count X3D variants for gaming — and it&amp;rsquo;s why, for pure gaming, an 8-core X3D beats a 12- or 16-core X3D. It&amp;rsquo;s the same reason the 8-core &lt;a href="https://techfuelhq.com/articles/cpu-hierarchy-2026/">9800X3D tops the CPU gaming hierarchy&lt;/a> over its bigger siblings.&lt;/p>
&lt;h2 id="what-the-extra-money-actually-buys-in-2026">What the extra money actually buys in 2026&lt;/h2>
&lt;p>Here&amp;rsquo;s the value math at today&amp;rsquo;s live prices. The 7800X3D isn&amp;rsquo;t the fastest gaming chip anymore — but &amp;ldquo;fastest&amp;rdquo; and &amp;ldquo;smartest buy&amp;rdquo; haven&amp;rsquo;t been the same thing on AM5 for a while.&lt;/p>
&lt;div class="visual-block" style="border:1px solid #1e2233;border-radius:10px;padding:1.4rem 1.5rem 1.6rem;margin:1.75rem 0;background:#120e1c;">
&lt;p style="margin:0 0 0.3rem 0;font-weight:700;color:#f0eaff;font-size:1.05rem;">The 2026 value stack&lt;/p>
&lt;p style="margin:0 0 1.15rem 0;color:#9a90ae;font-size:0.86rem;line-height:1.45;">Lime = relative 1440p gaming (all three are close). Muted bar = price. Watch the price bar grow while the gaming bar barely moves.&lt;/p>
&lt;div style="display:flex;flex-direction:column;gap:1.25rem;">
&lt;div style="min-width:0;">
&lt;p style="margin:0 0 0.45rem 0;color:#e6dcff;font-size:0.95rem;font-weight:700;">Ryzen 7 7800X3D &lt;span style="color:#c8ff00;font-weight:600;">· $349 · the value knee&lt;/span>&lt;/p>
&lt;div style="margin-bottom:0.4rem;">&lt;div style="display:flex;justify-content:space-between;align-items:baseline;margin-bottom:0.14rem;">&lt;span style="color:#c8ff00;font-size:0.76rem;">gaming (1440p)&lt;/span>&lt;span style="color:#c8ff00;font-size:0.76rem;">100&lt;/span>&lt;/div>&lt;div style="width:94.3%;height:12px;border-radius:4px;background:#c8ff00;">&lt;/div>&lt;/div>
&lt;div>&lt;div style="display:flex;justify-content:space-between;align-items:baseline;margin-bottom:0.14rem;">&lt;span style="color:#9a90ae;font-size:0.76rem;">price&lt;/span>&lt;span style="color:#9a90ae;font-size:0.76rem;">$349&lt;/span>&lt;/div>&lt;div style="width:69.9%;height:12px;border-radius:4px;background:#4a4a5e;">&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="min-width:0;">
&lt;p style="margin:0 0 0.45rem 0;color:#e6dcff;font-size:0.95rem;font-weight:700;">Ryzen 7 9800X3D &lt;span style="color:#9fc0ff;font-weight:600;">· $445 · +27% price → +4% frames&lt;/span>&lt;/p>
&lt;div style="margin-bottom:0.4rem;">&lt;div style="display:flex;justify-content:space-between;align-items:baseline;margin-bottom:0.14rem;">&lt;span style="color:#c8ff00;font-size:0.76rem;">gaming (1440p)&lt;/span>&lt;span style="color:#c8ff00;font-size:0.76rem;">104&lt;/span>&lt;/div>&lt;div style="width:98.1%;height:12px;border-radius:4px;background:#c8ff00;">&lt;/div>&lt;/div>
&lt;div>&lt;div style="display:flex;justify-content:space-between;align-items:baseline;margin-bottom:0.14rem;">&lt;span style="color:#9a90ae;font-size:0.76rem;">price&lt;/span>&lt;span style="color:#9a90ae;font-size:0.76rem;">$445&lt;/span>&lt;/div>&lt;div style="width:89.2%;height:12px;border-radius:4px;background:#4a4a5e;">&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="min-width:0;">
&lt;p style="margin:0 0 0.45rem 0;color:#e6dcff;font-size:0.95rem;font-weight:700;">Ryzen 7 9850X3D &lt;span style="color:#cbaef0;font-weight:600;">· $499 · +43% price → +6% frames&lt;/span>&lt;/p>
&lt;div style="margin-bottom:0.4rem;">&lt;div style="display:flex;justify-content:space-between;align-items:baseline;margin-bottom:0.14rem;">&lt;span style="color:#c8ff00;font-size:0.76rem;">gaming (1440p)&lt;/span>&lt;span style="color:#c8ff00;font-size:0.76rem;">106&lt;/span>&lt;/div>&lt;div style="width:100%;height:12px;border-radius:4px;background:#c8ff00;">&lt;/div>&lt;/div>
&lt;div>&lt;div style="display:flex;justify-content:space-between;align-items:baseline;margin-bottom:0.14rem;">&lt;span style="color:#9a90ae;font-size:0.76rem;">price&lt;/span>&lt;span style="color:#9a90ae;font-size:0.76rem;">$499&lt;/span>&lt;/div>&lt;div style="width:100%;height:12px;border-radius:4px;background:#4a4a5e;">&lt;/div>&lt;/div>
&lt;/div>
&lt;/div>
&lt;p style="margin:1.1rem 0 0 0;color:#9a90ae;font-size:0.82rem;line-height:1.45;">Live July 2026 retail (Amazon). Gaming index is the 1440p relative figure from the chart above. The value knee is the 7800X3D: past it, you pay steeply for frames you won't see outside 1080p.&lt;/p>
&lt;/div>
&lt;p>That&amp;rsquo;s the whole case in one picture. At 1440p, the 9800X3D asks for &lt;strong>27% more money to deliver about 4% more frames&lt;/strong>, and the 9850X3D asks &lt;strong>43% more for about 6%&lt;/strong>. Those newer chips justify themselves on other grounds — overclocking headroom, competitive-1080p margins, productivity — but on pure gaming value at real resolutions, the 7800X3D is still the knee of the curve. The savings are real money: ~$100 to ~$150 that buys a meaningful step up in GPU, a jump from 32GB to 64GB of RAM, or a better monitor — each of which does more for your actual framerate than the CPU upgrade does at 1440p/4K.&lt;/p>
&lt;h2 id="the-2026-lineup-where-it-sits-now">The 2026 lineup: where it sits now&lt;/h2>
&lt;p>For a ground-up build with money no object, the 7800X3D is no longer the default — that&amp;rsquo;s the 9800X3D (Zen 5, cache-below-cores redesign, fully overclockable, still AM5) or, at the very top, the &lt;strong>Ryzen 7 9850X3D&lt;/strong> that launched in early 2026 as the fastest gaming CPU on the market. The 9850X3D is &lt;a href="https://gamersnexus.net/cpus/amd-ryzen-7-9850x3d-cpu-review-benchmarks-gaming-power-thermals-ft-ddr5-4800" rel="noopener">about 3-4% over the 9800X3D per GamersNexus&amp;rsquo; review&lt;/a> — a thin margin for a $50-ish premium.&lt;/p>
&lt;p>So the stack in 2026 is clean: &lt;strong>9850X3D&lt;/strong> for the outright crown, &lt;strong>9800X3D&lt;/strong> for near-crown at less money and the sane new-build default, and the &lt;strong>7800X3D&lt;/strong> as the value chip that gives up almost nothing at the resolutions people play. One rung below it sits the Micro Center-exclusive Ryzen 5 7600X3D, which carries the same 96MB of cache on six cores — the &lt;a href="https://techfuelhq.com/articles/7600x3d-vs-7800x3d-value-2026/">7600X3D vs 7800X3D value comparison&lt;/a> works out whether those two extra cores are worth paying for. The 7800X3D held the &amp;ldquo;best gaming CPU&amp;rdquo; title for roughly 18 months after launch; being dethroned by two direct successors on its own socket doesn&amp;rsquo;t invalidate it — it&amp;rsquo;s exactly how a healthy platform ages.&lt;/p>
&lt;h2 id="thermals-with-a-360mm-aio">Thermals with a 360mm AIO&lt;/h2>
&lt;p>The &lt;a href="https://techfuelhq.com/reviews/nzxt-kraken-360-review-2026/">NZXT Kraken 360&lt;/a> keeps the 7800X3D well-managed:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Gaming (sustained, 45+ minutes):&lt;/strong> 72–77°C&lt;/li>
&lt;li>&lt;strong>Cinebench R23 multi-core (sustained):&lt;/strong> 82–85°C&lt;/li>
&lt;li>&lt;strong>All-core at 120W TDP:&lt;/strong> 83–86°C&lt;/li>
&lt;/ul>
&lt;p>AMD&amp;rsquo;s 89°C safety limit isn&amp;rsquo;t approached under gaming load with a quality 240mm or 360mm AIO. A 240mm AIO is sufficient for this CPU in a gaming-only build; the 360mm is comfortable margin.&lt;/p>
&lt;p>The 7800X3D&amp;rsquo;s temperature behavior differs from non-X3D Zen 4 chips. Because the chip targets lower clocks to protect the V-Cache temperature, it often runs cooler than a 7700X at equivalent workloads even though the 7700X has a higher max TDP. The thermal story is better than the spec sheet implies. (This is also the one place the 9800X3D pulls clearly ahead: moving the cache &lt;em>below&lt;/em> the cores let AMD push higher clocks and add manual OC — see &lt;a href="https://techfuelhq.com/articles/cpu-overheating-2026/">why a hot X3D number is usually fine&lt;/a> if yours reads high.)&lt;/p>
&lt;h2 id="production-workloads">Production workloads&lt;/h2>
&lt;p>This is the 7800X3D&amp;rsquo;s acknowledged weakness. Blender, DaVinci Resolve render, Handbrake video encode, compilation — workloads that benefit from raw multi-thread performance and don&amp;rsquo;t gain from cache size — run at similar speeds on the 7700X at a lower price point.&lt;/p>
&lt;p>In Cinebench R23 multi-core, the 7800X3D posts scores in the 18,500–19,500 range. A Ryzen 7 7700X (non-X3D) posts similar or slightly higher due to the 7700X&amp;rsquo;s less conservative boost behavior. If you run Blender or compile code regularly, the 7800X3D is the wrong chip — get a 7900X or 7950X with more cores.&lt;/p>
&lt;p>The one multi-threaded exception is Monero&amp;rsquo;s RandomX, which is memory-hard and cache-sensitive rather than pure raw throughput — so the 96MB of L3 that sits idle in Blender actually helps here, making the 7800X3D a surprisingly efficient CPU miner. It is a curiosity, not a use case: our &lt;a href="https://techfuelhq.com/crypto/cpu-mining-guide-2026/">CPU mining guide&lt;/a> works through why even a tuned high-end Ryzen nets well under a dollar a day after power.&lt;/p>
&lt;p>For gaming only, the production performance concession is irrelevant.&lt;/p>
&lt;h2 id="is-a-used-or-new-7800x3d-safe-the-2023-burnout-question">Is a used or new 7800X3D safe? The 2023 burnout question&lt;/h2>
&lt;p>If you&amp;rsquo;re shopping used — or you remember the 2023 headlines — this is the real question, so here&amp;rsquo;s the straight answer. In early 2023, a small number of AM5 systems killed their X3D CPUs when EXPO was enabled: certain boards pushed &lt;strong>SoC voltage far past safe limits&lt;/strong>, and the stacked-cache chips are the most sensitive to it. AMD root-caused it publicly and, in &lt;a href="https://www.tomshardware.com/news/amd-issues-follow-up-statement-on-ryzen-burnout-issues-limits-soc-voltages" rel="noopener">AGESA 1.0.0.7 released in early May 2023&lt;/a>, &lt;strong>capped SoC voltage to 1.3V&lt;/strong> on all AM5 boards — with EXPO and PBO left fully functional.&lt;/p>
&lt;p>What that means in 2026:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Any board on a 2023-or-later BIOS is safe.&lt;/strong> Every current shipping BIOS carries the fix. Update the motherboard BIOS before first boot, then confirm SoC voltage sits at or below 1.3V in the BIOS or HWiNFO.&lt;/li>
&lt;li>&lt;strong>A used 7800X3D is a sound buy&lt;/strong> once you&amp;rsquo;ve done that check. The chips that were going to fail from this did so years ago; a unit that has run stably since is not a time bomb.&lt;/li>
&lt;li>&lt;strong>The later burnout reports you may have seen are a different story.&lt;/strong> Those center on specific ASRock boards and the 9000-series X3D chips, not the 7800X3D. Community sentiment on board brands is real, though — the r/buildapc regulars repeatedly steer buyers away from ASRock for X3D and flag some Gigabyte boards; a mid-range MSI or ASUS B650/B850 is the low-drama default.&lt;/li>
&lt;/ul>
&lt;h2 id="the-real-future-proofing-play">The real future-proofing play&lt;/h2>
&lt;p>The most common reason people talk themselves into the pricier chip is &amp;ldquo;future-proofing.&amp;rdquo; On AM5, that logic is backwards, and it&amp;rsquo;s worth spelling out because it changes the buying decision.&lt;/p>
&lt;p>AMD has &lt;a href="https://www.tomshardware.com/pc-components/cpus/amd-confirms-am5-support-through-2029-zen-4-and-5-platform-will-likely-see-two-more-generations-at-least" rel="noopener">confirmed Socket AM5 support through 2029&lt;/a>, with &lt;strong>Zen 6 (Olympic Ridge) landing on the same socket&lt;/strong> and both 600- and 800-series boards carrying support forward with a BIOS update. AM4 set the precedent: people who bought a modest Ryzen and a decent board in 2017 dropped in a 5800X3D years later without changing anything else.&lt;/p>
&lt;p>So the durable play isn&amp;rsquo;t spending an extra $100-150 on the CPU today — a chip that will be dethroned on its own socket regardless. It&amp;rsquo;s putting that money into &lt;strong>a quality B650/B850 board&lt;/strong> that will still be alive for a Zen 6 X3D drop-in, and buying the value CPU now. The 7800X3D is that CPU. Future-proofing is a platform decision, not a spend-up-a-tier decision.&lt;/p>
&lt;h2 id="ddr5-sweet-spot">DDR5 sweet spot&lt;/h2>
&lt;p>The 7800X3D on AM5 benefits from DDR5-6000 in the &amp;ldquo;1:1&amp;rdquo; fabric ratio — where the Infinity Fabric clock matches the memory clock. Above 6000 MHz, you typically need to loosen secondary timings to maintain stability, which can negate some of the clock speed gains. DDR5-6000 CL30 is the performance sweet spot; running 6400+ requires dialing in subtimings carefully.&lt;/p>
&lt;p>One 2026 caveat that didn&amp;rsquo;t apply at launch: DDR5 prices have roughly tripled in the ongoing memory shortage, so a 32GB DDR5-6000 CL30 kit costs meaningfully more than it did a year ago. Budget for it, and check the live price — full DDR5 tuning and pricing notes are in the &lt;a href="https://techfuelhq.com/articles/ddr5-ram-buying-guide-2025/">DDR5 RAM buying guide&lt;/a> and the &lt;a href="https://techfuelhq.com/reviews/rog-strix-b650a-review-2026/">ROG STRIX B650-A review&lt;/a>.&lt;/p>
&lt;h2 id="verdict">Verdict&lt;/h2>
&lt;p>The 7800X3D is the best gaming CPU AMD built on Zen 4, and in 2026 it has settled into the most useful role a chip can have: the value pick that gives up almost nothing where it counts. The 9800X3D and 9850X3D are faster and worth their premiums for competitive-1080p players, overclockers, and anyone doing serious production — but at 1440p and 4K, for pure gaming, the 7800X3D still delivers 95%+ of the experience for ~$100-150 less.&lt;/p>
&lt;p>If you own one: keep it, and put upgrade money toward your GPU or a future Zen 6 drop-in. If you&amp;rsquo;re buying new for a gaming-first budget build: the 7800X3D at ~$349 is still one of the smartest purchases on the market. If production workloads matter, or you play cache-hungry sims competitively at high refresh: step up the stack. For everyone else, the chip that dethroned the field in 2023 is, three years later, the one that makes the most sense to actually buy.&lt;/p>
&lt;hr>
&lt;p>&lt;em>This review is part of the build component documentation for the &lt;a href="https://techfuelhq.com/articles/gaming-pc-build-2026/">2026 gaming PC build&lt;/a>. The full system context: &lt;a href="https://techfuelhq.com/reviews/rog-strix-b650a-review-2026/">ROG STRIX B650-A&lt;/a>, &lt;a href="https://techfuelhq.com/reviews/nzxt-kraken-360-review-2026/">NZXT Kraken 360&lt;/a>, &lt;a href="https://techfuelhq.com/reviews/evga-supernova-1000-gt-review-2026/">EVGA SuperNOVA 1000 GT&lt;/a>, &lt;a href="https://techfuelhq.com/reviews/samsung-970-evo-plus-1tb-review-2026/">Samsung 970 EVO Plus 1TB&lt;/a>, &lt;a href="https://techfuelhq.com/gpu-reviews/rog-astral-rtx-5080-oc-review-2026/">ROG Astral RTX 5080 OC&lt;/a>.&lt;/em>&lt;/p></description></item><item><title>2.5GbE vs 10GbE for the Homelab in 2026: Which to Buy</title><link>https://techfuelhq.com/networking/25gbe-vs-10gbe-homelab-2026/</link><pubDate>Wed, 10 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/networking/25gbe-vs-10gbe-homelab-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-10 · ~11 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/networking/25gbe-vs-10gbe-homelab-2026.svg" alt="Spec comparison of 2.5GbE vs 10GbE SFP+ for the homelab: 2.5GbE delivers 270-300 MB/s real-world at ~$65 for an 8-port switch with built-in mini PC NICs and Cat5e cabling, while 10GbE SFP+ delivers 950-1150 MB/s, migrates a 32GB VM in ~30 seconds, and costs $250-350 for a 3-node cluster plus NAS build." width="1200" height="760" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>The networking speed question used to be simple: 1GbE was everywhere, 10GbE was expensive enterprise gear. In 2026, 2.5GbE is in most homelab mini PCs and NAS units, and 10GbE has dropped enough that the decision between them is a real tradeoff rather than a price-no-object question.&lt;/p>
&lt;p>Here&amp;rsquo;s where each speed tier actually makes a difference and where you&amp;rsquo;re buying more than you need.&lt;/p>
&lt;h2 id="the-speed-cost-tradeoff-in-2026">The speed-cost tradeoff in 2026&lt;/h2>
&lt;p>Prices have shifted significantly over the past 3 years:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Speed&lt;/th>
&lt;th scope="col">Switch (8-port)&lt;/th>
&lt;th scope="col">NIC per port&lt;/th>
&lt;th scope="col">Power&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>1GbE&lt;/td>
&lt;td>$15–30&lt;/td>
&lt;td>Built-in on everything&lt;/td>
&lt;td>3–8W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2.5GbE&lt;/td>
&lt;td>$60–90 (unmanaged)&lt;/td>
&lt;td>Built-in on most mini PCs&lt;/td>
&lt;td>7–12W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>10GbE (copper)&lt;/td>
&lt;td>$80–150 (4–5 port)&lt;/td>
&lt;td>$25–60 per add-on NIC&lt;/td>
&lt;td>8–18W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>10GbE (SFP+)&lt;/td>
&lt;td>$70–120 (4–5 port)&lt;/td>
&lt;td>$15–40 DAC cable&lt;/td>
&lt;td>7–12W&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>MikroTik&amp;rsquo;s &lt;a href="https://techfuelhq.com/networking/mikrotik-crs305-review-2026/">CRS305-1G-4S+IN&lt;/a> (4× SFP+ 10GbE + 1GbE management, ~$100) changed the 10GbE homelab calculus in 2022 and remains a top pick. But 2.5GbE switch prices have caught up — you can now get 8× 2.5GbE unmanaged for $65, making the per-port price comparable.&lt;/p>
&lt;h2 id="what-each-speed-tier-actually-delivers-in-practice">What each speed tier actually delivers in practice&lt;/h2>
&lt;h3 id="1gbe-125-mbs-theoretical">1GbE (125 MB/s theoretical)&lt;/h3>
&lt;p>Real-world sustained: 110–115 MB/s for large sequential transfers between two 1GbE endpoints.&lt;/p>
&lt;p>&lt;strong>When 1GbE is the bottleneck:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Single 4K Blu-ray Remux (~80 Mbps) over a network: comfortably within 1GbE&lt;/li>
&lt;li>NFS mount with a single client doing large file transfers: saturates 1GbE quickly&lt;/li>
&lt;li>VM live migration for a 32GB RAM VM: ~4 minutes on 1GbE&lt;/li>
&lt;li>Multiple clients hitting a NAS simultaneously: starts hitting the ceiling with 2–3 clients on large files&lt;/li>
&lt;/ul>
&lt;h3 id="25gbe-3125-mbs-theoretical">2.5GbE (312.5 MB/s theoretical)&lt;/h3>
&lt;p>Real-world sustained: 270–300 MB/s between two 2.5GbE endpoints.&lt;/p>
&lt;p>&lt;strong>When 2.5GbE is sufficient:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>NAS serving media to 3–5 clients simultaneously without transcoding&lt;/li>
&lt;li>Single-VM NFS mount for daily homelab work&lt;/li>
&lt;li>VM live migration: ~1.5 minutes for 32GB VM (3× faster than 1GbE)&lt;/li>
&lt;li>Git large file pushes, backup transfers, Docker image pulls&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>When 2.5GbE starts showing limits:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Proxmox VM migration when you want it to be fast (not just faster)&lt;/li>
&lt;li>NFS for multiple VMs doing simultaneous heavy IO (database benchmark, video editing)&lt;/li>
&lt;li>Backup server receiving multiple concurrent streams&lt;/li>
&lt;/ul>
&lt;h3 id="10gbe-sfp-1250-mbs-theoretical">10GbE SFP+ (1250 MB/s theoretical)&lt;/h3>
&lt;p>Real-world sustained: 950–1150 MB/s between two 10GbE endpoints with direct-attach copper (DAC) cables or SFP+ transceivers.&lt;/p>
&lt;p>&lt;strong>When 10GbE is the right call:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Proxmox storage network: VMs running on NFS/iSCSI, multiple nodes competing for NAS bandwidth&lt;/li>
&lt;li>VM live migration at scale: 32GB VM in under 30 seconds&lt;/li>
&lt;li>ZFS replication between nodes: transfer large snapshots quickly&lt;/li>
&lt;li>Multiple simultaneous clients doing high-throughput IO&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>When 10GbE is more than you need:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Plex/Jellyfin serving to 1–3 clients (2.5GbE handles it)&lt;/li>
&lt;li>Light homelab work with occasional large transfers (2.5GbE handles it)&lt;/li>
&lt;li>Internet connection under 1Gbps (upstream bandwidth is the limit, not local LAN)&lt;/li>
&lt;/ul>
&lt;p>Those real-world MB/s figures set the ceiling, but your actual transfer time also depends on the drives at each end. To estimate it for a given file size and link, run the numbers through the &lt;a href="https://techfuelhq.com/tools/transfer-time-calculator/">network transfer time calculator&lt;/a> — it flags when a slow disk, not the network, is the real bottleneck.&lt;/p>
&lt;h2 id="hardware-that-ships-with-each-speed">Hardware that ships with each speed&lt;/h2>
&lt;p>&lt;strong>2.5GbE is now the baseline&lt;/strong> for homelab-grade hardware:&lt;/p>
&lt;ul>
&lt;li>Beelink SEi12 Pro, GTi14 Ultra: 2.5GbE built-in&lt;/li>
&lt;li>Synology DS923+, DS1522+: 1GbE built-in but 2.5GbE PCIe addon available&lt;/li>
&lt;li>MINISFORUM UM890, MS-01: 2.5GbE or 2× 10GbE built-in&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>10GbE is in higher-end platforms:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>MINISFORUM MS-01: 2× 10GbE SFP+ + 2× 2.5GbE built-in&lt;/li>
&lt;li>Dell PowerEdge R720/R730: dual 10GbE SFP+ via Intel X520/X540&lt;/li>
&lt;li>Network cards: Intel X550-T2 ($80–120), MikroTik MT Cards, Chelsio T520 (used, ~$30)&lt;/li>
&lt;/ul>
&lt;h2 id="the-specific-proxmox-cluster-case">The specific Proxmox cluster case&lt;/h2>
&lt;p>For a 3-node Proxmox cluster:&lt;/p>
&lt;p>&lt;strong>Storage traffic&lt;/strong> (VMs reading/writing to shared NAS via NFS or iSCSI) is the primary throughput concern. With 3 VMs each doing moderate IO simultaneously, 1GbE saturates quickly. 2.5GbE gives reasonable headroom for most homelab workloads. 10GbE eliminates storage network as a bottleneck.&lt;/p>
&lt;p>&lt;strong>Live migration&lt;/strong> — moving a running VM from node A to node B — transfers the VM&amp;rsquo;s RAM contents over the network. On 1GbE: 32GB VM = ~4 minutes. On 2.5GbE: ~1.5 minutes. On 10GbE: ~30 seconds. If you migrate VMs frequently (maintenance, load balancing), 10GbE is noticeably better. For occasional migrations, 2.5GbE is fine.&lt;/p>
&lt;p>&lt;strong>Corosync cluster heartbeat&lt;/strong> — the cluster quorum communication — uses trivial bandwidth. 1GbE is more than enough; the spec requires low latency, not high throughput. Don&amp;rsquo;t use your 10GbE link for corosync — use a dedicated 1GbE link for heartbeat isolation.&lt;/p>
&lt;p>&lt;strong>Recommendation for a 3-node cluster:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Budget-first: 2.5GbE throughout, upgrade storage link to 10GbE later when you feel the bottleneck&lt;/li>
&lt;li>Performance-first: 10GbE SFP+ for the storage/migration network, 1GbE for management&lt;/li>
&lt;/ul>
&lt;h2 id="the-mikrotik-crs305-argument">The MikroTik CRS305 argument&lt;/h2>
&lt;p>The MikroTik CRS305-1G-4S+IN ($95–110) gives 4× SFP+ 10GbE ports at 9W idle. This has been the de facto homelab 10GbE switch recommendation since 2022 for good reason:&lt;/p>
&lt;ul>
&lt;li>4× SFP+ ports: enough for 3 Proxmox nodes + 1 NAS&lt;/li>
&lt;li>DAC cables ($5–10 each) connect SFP+ to SFP+ ports in mini PCs that have them&lt;/li>
&lt;li>For mini PCs with 2.5GbE only: a 10GbE PCIe NIC ($30–50 used) + SFP+ DAC solves it&lt;/li>
&lt;li>9W idle: barely registers on electricity bills&lt;/li>
&lt;/ul>
&lt;p>The cost to connect a 3-node cluster + NAS to the CRS305:&lt;/p>
&lt;ul>
&lt;li>CRS305: $100&lt;/li>
&lt;li>4× DAC or SFP+ transceivers: $30–50 total&lt;/li>
&lt;li>4× PCIe NICs (if mini PCs lack SFP+): $120–200&lt;/li>
&lt;li>Total: $250–350 for full 10GbE connectivity&lt;/li>
&lt;/ul>
&lt;p>Versus 2.5GbE for the same setup:&lt;/p>
&lt;ul>
&lt;li>TP-Link TL-SG108-M2 (8-port 2.5GbE): $65&lt;/li>
&lt;li>Nothing else — most mini PCs have 2.5GbE built-in&lt;/li>
&lt;li>Total: $65&lt;/li>
&lt;/ul>
&lt;p>The 10GbE premium is real. Whether 250 MB/s of additional headroom is worth $185–285 depends on your workload.&lt;/p>
&lt;h2 id="my-actual-recommendation">My actual recommendation&lt;/h2>
&lt;p>&lt;strong>Start with 2.5GbE.&lt;/strong> If your mini PCs already have 2.5GbE built-in (most do now), a $65 8-port 2.5GbE switch gives you 2.5× the bandwidth of 1GbE for almost nothing. This handles most homelab storage workloads comfortably.&lt;/p>
&lt;p>&lt;strong>Add 10GbE when you feel the limit.&lt;/strong> Proxmox cluster storage, VM migration, or NAS throughput that&amp;rsquo;s visibly slow tells you when 2.5GbE is the bottleneck. The MikroTik CRS305 + DAC cables is a clean upgrade path — add the switch, add NICs to nodes as needed, keep the 2.5GbE switch for client devices.&lt;/p>
&lt;p>The full 10GbE homelab networking deep-dive is at the &lt;a href="https://techfuelhq.com/networking/10gbe-home-networking-budget-2026/">10GbE budget networking guide&lt;/a> — that article covers switch selection, NIC options, and cabling in more depth.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Running the numbers on power consumption for your networking gear? The &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">Power &amp;amp; Cost Calculator&lt;/a> shows what adding a MikroTik CRS305 (9W idle) adds to your annual electricity bill.&lt;/em>&lt;/p></description></item><item><title>Best GPU for 4K Gaming 2026: Which Tier Makes Sense</title><link>https://techfuelhq.com/articles/best-gpu-4k-gaming-2026/</link><pubDate>Wed, 10 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/best-gpu-4k-gaming-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-10 · ~10 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/articles/best-gpu-4k-gaming-2026.svg" alt="Tier-by-tier 4K gaming GPU buying guide for 2026, ranking five picks by budget: RX 9070 XT (~$599, 16GB GDDR6, best value), RTX 5070 Ti (~$749, 16GB GDDR7, practical 4K), RTX 5080 FE (~$999, 16GB GDDR7, comfortable 4K), ROG Astral 5080 OC (~$1.1-1.2k, AIB premium), and RTX 5090 (~$1,999, 32GB GDDR7, native 4K)." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>4K gaming in 2026 is genuinely within reach at multiple price points — but what &amp;ldquo;within reach&amp;rdquo; means depends heavily on what you&amp;rsquo;re willing to pay, whether you accept upscaling, and what DLSS 4 MFG does to the framerate math.&lt;/p>
&lt;p>The short answer: the RTX 5070 Ti is where 4K gaming becomes practical without leaning heavily on upscaling. The RTX 5080 is where 4K gaming becomes comfortable. Above that, the RTX 5090 is for people who want native 4K at high framerates in every title that exists.&lt;/p>
&lt;h2 id="what-4k-gaming-actually-demands">What 4K gaming actually demands&lt;/h2>
&lt;p>Two things gate 4K gaming performance:&lt;/p>
&lt;p>&lt;strong>1. VRAM&lt;/strong> — 4K texture budgets are large. At ultra settings in 2026 AAA titles (Cyberpunk 2077 RT Overdrive, Alan Wake 2, Remnant 2), texture memory demands are 10–14GB. Running out of VRAM at 4K causes hard stutters as the driver evicts textures from VRAM to system memory across the PCIe bus — this is significantly worse than just lower framerate. 16GB is the safe floor — the RTX 5080&amp;rsquo;s 16GB is comfortable for current 4K titles; the RTX 5090&amp;rsquo;s 32GB is future-proof headroom.&lt;/p>
&lt;p>&lt;strong>2. Raw compute&lt;/strong> — At 3840×2160, the pixel count is 4× higher than 1080p. Even a fast GPU that handles 1440p at 120fps might struggle to hit 60fps at 4K in the same title without upscaling.&lt;/p>
&lt;h2 id="the-dlss-4-mfg-factor">The DLSS 4 MFG factor&lt;/h2>
&lt;p>DLSS 4 with Multi Frame Generation changes what &amp;ldquo;4K gaming&amp;rdquo; means for NVIDIA GPUs. In our &lt;a href="https://techfuelhq.com/gpu-reviews/rog-astral-rtx-5080-oc-review-2026/">RTX 5080 OC review&lt;/a>, Cyberpunk 2077 with path tracing at 4K:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Mode&lt;/th>
&lt;th scope="col">Average FPS&lt;/th>
&lt;th scope="col">99th percentile latency&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Native&lt;/td>
&lt;td>19 FPS&lt;/td>
&lt;td>95ms&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>DLSS 4 Quality (no MFG)&lt;/td>
&lt;td>40 FPS&lt;/td>
&lt;td>45ms&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>DLSS 4 Quality + 2× MFG&lt;/td>
&lt;td>90 FPS&lt;/td>
&lt;td>55ms&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>DLSS 4 Quality + 4× MFG&lt;/td>
&lt;td>135 FPS&lt;/td>
&lt;td>62ms&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>This is first-party data from the TechFuelHQ bench — full methodology at the &lt;a href="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/">dataset page&lt;/a>.&lt;/p>
&lt;p>At 4K resolution, DLSS 4 Quality renders internally at approximately 1440p and upscales. The visual difference from native at this resolution is smaller than at 1080p or 1440p — you&amp;rsquo;re upscaling from a high base resolution. MFG on top of that delivers frame rates that would be impossible at native 4K.&lt;/p>
&lt;p>AMD&amp;rsquo;s equivalent is FSR 4 + AMD Fluid Motion Frames (AFMF 2). FSR 4 quality on RX 9000 series GPUs is significantly improved over prior generations. The quality gap between DLSS 4 and FSR 4 at 4K is narrower in 2026 than it was in prior generations.&lt;/p>
&lt;h2 id="gpu-tier-breakdown-for-4k-2026">GPU tier breakdown for 4K (2026)&lt;/h2>
&lt;p>This guide focuses on the cards worth buying for 4K; for where every modern card lands across 1080p, 1440p, and 4K, see the full &lt;a href="https://techfuelhq.com/articles/gpu-hierarchy-2026/">GPU Hierarchy 2026 tier list&lt;/a>.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Street-price reality — checked July 5, 2026.&lt;/strong> The tier prices below are &lt;strong>MSRP anchors&lt;/strong> — what NVIDIA and AMD list, not what you pay at checkout. The 2026 AI-driven GDDR memory shortage has pushed actual street prices well above list across the whole RTX 50 / RX 9000 stack, so budget by what a card really sells for. As of early July 2026: RX 9070 XT &lt;strong>~$650–$720&lt;/strong> (MSRP $599), RTX 5070 Ti &lt;strong>~$900–$1,050&lt;/strong> (MSRP $749), RTX 5080 &lt;strong>~$1,100–$1,300&lt;/strong> (MSRP $999 — Founders Edition cards at list sell out within minutes), and RTX 5090 &lt;strong>~$2,900–$3,300&lt;/strong> for buyable AIB models (MSRP $1,999, with Founders Edition at list nearly unobtainable). Prices move week to week, so check the live retailer price before buying rather than trusting any fixed number. Background: &lt;a href="https://techfuelhq.com/articles/ram-ssd-price-crisis-2026/">the 2026 RAM and SSD price crisis&lt;/a> covers the same memory crunch now driving GPU prices up.&lt;/p>&lt;/blockquote>
&lt;h3 id="under-500-4k-is-possible-not-comfortable">Under $500: 4K is possible, not comfortable&lt;/h3>
&lt;p>At this tier (RTX 5060 Ti, RX 9060 XT, 16GB), 4K gaming works with significant upscaling dependence. You&amp;rsquo;re likely running DLSS 4 Performance mode (renders at 1080p, upscales to 4K) or FSR 4 Performance, which has meaningful visual impact. For less demanding titles and lower settings, these cards handle 4K. For demanding AAA games at high settings, you&amp;rsquo;re fighting the hardware.&lt;/p>
&lt;p>For 4K-capable gaming on a budget, a better strategy is a strong 1440p card with upscaling used selectively. The &lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5060-ti-vs-rx-9060-xt-1440p-showdown-2026/">RTX 5060 Ti vs RX 9060 XT 1440p comparison&lt;/a> covers this tier in depth.&lt;/p>
&lt;p>&lt;strong>Verdict:&lt;/strong> Not the primary 4K recommendation unless budget is the constraint and you accept upscaling compromises.&lt;/p>
&lt;h3 id="600750-rx-9070-xt--capable-4k-with-amds-ecosystem">$600–750: RX 9070 XT — capable 4K with AMD&amp;rsquo;s ecosystem&lt;/h3>
&lt;p>The RX 9070 XT (AMD RDNA 4, ~$599 MSRP, 304W TBP, 16GB GDDR6) is the best value per dollar at the 4K tier for buyers who don&amp;rsquo;t need NVIDIA features. Raw rasterization puts it competitive with the RTX 4080 Super from the prior generation. FSR 4 Quality + AFMF 2 brings 4K gaming into comfortable territory in most titles.&lt;/p>
&lt;p>What you don&amp;rsquo;t get versus NVIDIA: DLSS 4 (NVIDIA proprietary), DLSS 4 MFG (NVIDIA proprietary), or the CUDA ecosystem for any compute workloads.&lt;/p>
&lt;p>For pure gaming with no AI/compute workloads, the RX 9070 XT is the honest 4K recommendation if you&amp;rsquo;re not invested in the NVIDIA ecosystem.&lt;/p>
&lt;p>&lt;strong>Verdict:&lt;/strong> Best value 4K card in 2026 if you&amp;rsquo;re on AMD or buying fresh with no ecosystem dependency.&lt;/p>
&lt;h3 id="7501000-rtx-5070-ti--practical-4k-gaming">$750–1,000: RTX 5070 Ti — practical 4K gaming&lt;/h3>
&lt;p>The RTX 5070 Ti (GB203, ~$749 MSRP, 300W TDP, 16GB GDDR7, ~44 Shader TFLOPS) is the first NVIDIA card where 4K gaming feels like the primary use case rather than a stretch. At 4K DLSS 4 Quality, it hits playable framerates in most titles without requiring MFG to be enjoyable. With MFG, it reaches 120fps-class performance in titles that support it.&lt;/p>
&lt;p>The 5070 Ti has 16GB GDDR7 — the same capacity as the RX 9070 XT and the 5080 (the 5080&amp;rsquo;s advantage is memory bandwidth, not size). 16GB should be sufficient for 4K gaming through the next generation of titles — and that headroom is the main reason to step up from the 12GB RTX 5070, a gap the &lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5070-vs-5070-ti-2026/">RTX 5070 vs 5070 Ti comparison&lt;/a> weighs against the real street-price premium.&lt;/p>
&lt;p>&lt;strong>Verdict:&lt;/strong> The practical sweet spot for 4K gaming in 2026. Strong buy if the RTX 5080 price premium isn&amp;rsquo;t justified by your use case.&lt;/p>
&lt;h3 id="1000-rtx-5080--comfortable-4k-gaming-with-headroom">$1,000: RTX 5080 — comfortable 4K gaming with headroom&lt;/h3>
&lt;p>The RTX 5080 (GB203, $999 MSRP, 360W TDP FE / ~400W AIB OC, 16GB GDDR7, ~56 Shader TFLOPS) is where 4K gaming stops requiring careful management. At native 4K in demanding titles without upscaling, it delivers playable 60+ fps. With DLSS 4 Quality, it pushes 90–100+ fps. With MFG, framerates appropriate for 120–144Hz 4K panels are achievable in most titles.&lt;/p>
&lt;p>Our &lt;a href="https://techfuelhq.com/gpu-reviews/rog-astral-rtx-5080-oc-review-2026/">ROG Astral RTX 5080 OC review&lt;/a> has full first-party 4K gaming data across Cyberpunk 2077, Alan Wake 2, and three other titles, along with the DLSS 4 MFG ladder on path-traced Cyberpunk. For the full rig this card goes in — parts, June 2026 prices, and the 4K benchmarks on a 7800X3D platform — see the &lt;a href="https://techfuelhq.com/pc-builds/2500-dollar-7800x3d-rtx-5080-4k-build-2026/">$2,500 RTX 5080 + 7800X3D 4K build&lt;/a>.&lt;/p>
&lt;p>The ROG Astral OC variant runs hotter than the Founders Edition (~400W vs 360W peak) but brings a custom cooling solution that keeps thermals in check. The FE is the cleaner $999 entry point; AIB cards add factory OC and thermals at 10–15% premium.&lt;/p>
&lt;p>&lt;strong>Verdict:&lt;/strong> The recommendation for buyers who want 4K as the primary use case with comfort, not compromise.&lt;/p>
&lt;h3 id="1500-rtx-5090--native-4k-at-high-framerates">$1,500+: RTX 5090 — native 4K at high framerates&lt;/h3>
&lt;p>The RTX 5090 (GB202, ~$1,999 MSRP, 575W TDP FE, 32GB GDDR7) is approximately 45–50% faster than the 5080 in raster workloads at 4K. For buyers with a 240Hz 4K panel who want native 4K at high framerates in demanding titles without upscaling, this is the card. For everyone else, the 5080 covers the use case at roughly half the price.&lt;/p>
&lt;p>The 32GB GDDR7 is the most compelling differentiator for future-proofing and AI/compute workloads alongside gaming.&lt;/p>
&lt;p>&lt;strong>Verdict:&lt;/strong> Only if native 4K high-fps is the requirement, or if you&amp;rsquo;re running AI workloads alongside gaming (32GB matters for inference).&lt;/p>
&lt;h2 id="decision-framework">Decision framework&lt;/h2>
&lt;p>Budget by street price, not MSRP — the MSRP column is the list-price anchor; the street column reflects verified early-July 2026 retail under the GDDR shortage (see the note above).&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">MSRP&lt;/th>
&lt;th scope="col">Street (Jul 2026)&lt;/th>
&lt;th scope="col">Recommendation&lt;/th>
&lt;th scope="col">Why&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>~$599&lt;/td>
&lt;td>~$650–720&lt;/td>
&lt;td>RX 9070 XT&lt;/td>
&lt;td>Best value 4K card, strong FSR 4 + AFMF 2&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>~$749&lt;/td>
&lt;td>~$900–1,050&lt;/td>
&lt;td>RTX 5070 Ti&lt;/td>
&lt;td>Practical 4K DLSS 4 sweet spot&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>~$999&lt;/td>
&lt;td>~$1,100–1,300&lt;/td>
&lt;td>RTX 5080 (FE)&lt;/td>
&lt;td>Comfortable 4K, best MFG benefit, 16GB GDDR7&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>~$1,100–1,200&lt;/td>
&lt;td>~$1,500+&lt;/td>
&lt;td>ROG Astral 5080 OC&lt;/td>
&lt;td>OC headroom + factory cooler if you want AIB premium&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>~$1,999&lt;/td>
&lt;td>~$2,900–3,300&lt;/td>
&lt;td>RTX 5090&lt;/td>
&lt;td>Native 4K 120fps-class, 32GB for compute&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;h2 id="psu-requirements-at-4k">PSU requirements at 4K&lt;/h2>
&lt;p>Higher-tier 4K cards require significant PSU headroom:&lt;/p>
&lt;ul>
&lt;li>RX 9070 XT (304W TBP GPU) + mid-tier CPU: 750–850W PSU&lt;/li>
&lt;li>RTX 5070 Ti (300W TDP GPU) + mid-tier CPU: 750–850W PSU&lt;/li>
&lt;li>RTX 5080 FE (360W TDP GPU) + Ryzen 7800X3D: 850–1000W PSU&lt;/li>
&lt;li>RTX 5080 AIB OC (~400W peak) + Ryzen 7800X3D: 1000W+ PSU&lt;/li>
&lt;li>RTX 5090 (575W TDP GPU) + any CPU: 1200–1500W PSU&lt;/li>
&lt;/ul>
&lt;p>Use the &lt;a href="https://techfuelhq.com/tools/psu-wattage-calculator/">PSU Wattage Calculator&lt;/a> to verify your specific component combination. The 12VHPWR adapter situation on older PSUs (pre-2023) is relevant for RTX 50 series — if your PSU predates the 12VHPWR connector, get a native cable or a quality rated adapter rather than the passive bundle adapter.&lt;/p>
&lt;hr>
&lt;p>&lt;em>For the full RTX 5080 benchmark dataset with five synthetic tests across three tune profiles and five-title 4K gaming, see the &lt;a href="https://techfuelhq.com/gpu-reviews/rog-astral-rtx-5080-oc-review-2026/">ROG Astral RTX 5080 OC review&lt;/a> and the &lt;a href="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/">raw dataset&lt;/a>. For mid-range 4K-aspiring cards, the &lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5060-ti-vs-rx-9060-xt-1440p-showdown-2026/">RTX 5060 Ti vs RX 9060 XT comparison&lt;/a> benchmarks the step below this tier at 1440p.&lt;/em>&lt;/p></description></item><item><title>LG C4 42-inch vs AORUS FO48U: 4K OLED for a PC Desk (2026)</title><link>https://techfuelhq.com/articles/lg-c4-42-vs-aorus-fo48u-2026/</link><pubDate>Wed, 10 Jun 2026 00:00:00 -0500</pubDate><guid>https://techfuelhq.com/articles/lg-c4-42-vs-aorus-fo48u-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-06-10 · ~10 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/articles/lg-c4-42-vs-aorus-fo48u-2026.svg" alt="Spec comparison table: LG C4 42-inch OLED evo (144Hz, 4x HDMI 2.1, WebOS 24, ~$700-900) versus Gigabyte AORUS FO48U 48-inch WOLED (120Hz, DisplayPort 1.4 plus 2x HDMI 2.1 and KVM, ~$999-1,199), both 3840x2160 4K with per-row winners marked." width="1200" height="760" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR · The call between these two&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>Get the LG C4 42-inch if:&lt;/strong> you want the best available OLED panel right now, at 42 inches, from stock, and your GPU has HDMI 2.1 output.&lt;/li>
&lt;li>&lt;strong>Get the AORUS FO48U if:&lt;/strong> you need DisplayPort 1.4, want a built-in KVM for multiple PCs, or specifically want 48 inches and can find one.&lt;/li>
&lt;li>&lt;strong>Price in mid-2026:&lt;/strong> LG C4 42-inch runs $700–$900 new; FO48U runs $700–$900 used and $999–$1,199 new when in stock — supply is the constraint, not price.&lt;/li>
&lt;li>&lt;strong>Panel winner:&lt;/strong> C4, on paper — newer OLED evo with higher peak brightness and 144Hz ceiling vs FO48U's 120Hz cap. In daily use the gap is smaller than the spec sheet implies.&lt;/li>
&lt;/ul>
&lt;/div>
&lt;p>The LG C4 42-inch is the answer when someone asks what OLED to buy for a PC desk in 2026. It&amp;rsquo;s available everywhere, the OLED evo panel is genuinely excellent, and at $800 new it undercuts most other 4K OLEDs at the same quality tier.&lt;/p>
&lt;p>I own the &lt;a href="https://techfuelhq.com/articles/aorus-fo48u-review/">FO48U&lt;/a>, not the C4. I made that choice deliberately — and I&amp;rsquo;d make the same call again — but it was close enough that the comparison is worth doing properly. This is the side-by-side I couldn&amp;rsquo;t find when I was deciding.&lt;/p>
&lt;h2 id="specs-side-by-side">Specs side by side&lt;/h2>
&lt;p>All figures from manufacturer spec sheets (LG product page accessed June 2026; Gigabyte AORUS product page accessed March 2026). Where specs differ by region, North American models are used.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">&lt;/th>
&lt;th scope="col">&lt;strong>LG C4 42-inch&lt;/strong>&lt;/th>
&lt;th scope="col">&lt;strong>AORUS FO48U&lt;/strong>&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Panel type&lt;/td>
&lt;td>OLED evo (4th gen)&lt;/td>
&lt;td>WOLED (older gen)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Diagonal&lt;/td>
&lt;td>42 inches&lt;/td>
&lt;td>48 inches&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Resolution&lt;/td>
&lt;td>3840 × 2160&lt;/td>
&lt;td>3840 × 2160&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Refresh rate&lt;/td>
&lt;td>144 Hz&lt;/td>
&lt;td>120 Hz&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Response time&lt;/td>
&lt;td>1 ms GtG (Game Mode)&lt;/td>
&lt;td>1 ms GtG&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>HDR&lt;/td>
&lt;td>Dolby Vision IQ / HDR10 / HLG&lt;/td>
&lt;td>HDR10 only (no Dolby Vision)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Inputs&lt;/td>
&lt;td>4× HDMI 2.1&lt;/td>
&lt;td>1× DP 1.4, 2× HDMI 2.1, 1× USB-C (18W)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>USB hub&lt;/td>
&lt;td>2× USB-A 2.0&lt;/td>
&lt;td>2× USB-A 3.0 + KVM&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Speakers&lt;/td>
&lt;td>40W (2× 20W)&lt;/td>
&lt;td>50W (2× 15W + sub)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Adaptive sync&lt;/td>
&lt;td>G-Sync Compatible, FreeSync Premium&lt;/td>
&lt;td>AMD FreeSync Premium Pro, G-Sync Compatible&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Smart platform&lt;/td>
&lt;td>WebOS 24&lt;/td>
&lt;td>Monitor OSD only&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>VESA&lt;/td>
&lt;td>200 × 200&lt;/td>
&lt;td>300 × 300&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Street price (mid-2026 new)&lt;/td>
&lt;td>~$700–$900&lt;/td>
&lt;td>~$999–$1,199 (supply constrained)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Availability&lt;/td>
&lt;td>Wide — in stock at major retailers&lt;/td>
&lt;td>Spotty — NOS, eBay, some B&amp;amp;H&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;h2 id="panel-does-the-generation-gap-actually-matter">Panel: does the generation gap actually matter?&lt;/h2>
&lt;p>The FO48U uses an older WOLED panel. The LG C4 uses a newer OLED evo generation — though note LG fits the Brightness Booster hardware only to the 55-inch-and-up C4 sizes, so the 42-inch compared here is the dimmer variant of the line. Even so, on paper the 42-inch C4 is somewhat brighter in HDR than the FO48U and holds its colors better in mixed-ambient-light rooms.&lt;/p>
&lt;p>In daily use at a desk with controlled lighting, this gap is real but not dramatic. OLED blacks are pitch black on both. DCI-P3 coverage is near-identical. The color accuracy difference requires a colorimeter to measure reliably. If you&amp;rsquo;re in a dark room or a controlled office — standard homelab desk setup, the kind that often pairs a big OLED with the &lt;a href="https://techfuelhq.com/articles/best-27-32-inch-monitor-homelab-2026/">best 27-32 inch monitor for a homelab&lt;/a> as a second screen — both look exceptional.&lt;/p>
&lt;p>Where the gap matters: HDR content in a bright room. The C4&amp;rsquo;s higher peak nits hold up better when sunlight is hitting the desk. If the desk faces a window and you work during daylight hours without blinds, the C4 wins noticeably.&lt;/p>
&lt;p>If you&amp;rsquo;re in a dim office or run the desk lights on a warm bias light, the practical difference is minor.&lt;/p>
&lt;h2 id="inputs-displayport-is-the-real-story">Inputs: DisplayPort is the real story&lt;/h2>
&lt;p>This is where the comparison gets concrete for PC users.&lt;/p>
&lt;p>The LG C4 has &lt;strong>four HDMI 2.1 inputs and no DisplayPort&lt;/strong>. Four HDMI 2.1 ports support 4K 120Hz (with VRR) over each input — which is plenty for a gaming PC, console, and streaming box. If that&amp;rsquo;s your use case, HDMI-only is not a problem.&lt;/p>
&lt;p>The FO48U has &lt;strong>one DisplayPort 1.4 and two HDMI 2.1 inputs&lt;/strong>, plus a USB-C input with 18W power delivery. The DisplayPort matters in specific situations:&lt;/p>
&lt;ul>
&lt;li>GPU without HDMI 2.1 (RTX 20-series and older have HDMI 2.0 only — every desktop RTX 30-series card onward has HDMI 2.1 — use DP for 4K 120Hz on those older cards)&lt;/li>
&lt;li>KVM setup where the second PC connects via DP while the primary uses HDMI&lt;/li>
&lt;li>Daisy-chaining scenarios&lt;/li>
&lt;li>Any setup where you&amp;rsquo;ve already used all HDMI 2.1 ports on your GPU&lt;/li>
&lt;/ul>
&lt;p>If your current GPU is an RTX 4000 / 5000 / RX 7000+ / RX 9000+ series card with HDMI 2.1 output, DisplayPort is optional. If you&amp;rsquo;re on an older card, DP might be the only path to 4K 120Hz without buying a new GPU.&lt;/p>
&lt;h2 id="kvm-significant-for-multi-pc-desks">KVM: significant for multi-PC desks&lt;/h2>
&lt;p>The FO48U has a built-in KVM switch. One USB-B port goes to each PC. Swap between PCs by pressing a button on the monitor — keyboard, mouse, and USB hub follow automatically.&lt;/p>
&lt;p>The LG C4 has no KVM. You&amp;rsquo;d add an external switch (Ugreen, Level1Techs, etc.) at $50–$200 depending on bandwidth requirements.&lt;/p>
&lt;p>For a single-PC desk: doesn&amp;rsquo;t matter. For a desk with a work laptop and a gaming PC: the FO48U&amp;rsquo;s KVM is a real quality-of-life feature that saves cable management headaches and adds zero latency.&lt;/p>
&lt;h2 id="size-42-vs-48-at-a-desk">Size: 42 vs 48 at a desk&lt;/h2>
&lt;p>Six inches of diagonal is a bigger difference than it sounds. At 42 inches (C4), the panel fits more desk configurations — including standard 24-inch-deep desks with a monitor arm pushed to the back. At 48 inches (FO48U), you need a 30-inch-deep desk or an arm with enough throw to push the panel further back.&lt;/p>
&lt;p>The 48-inch FO48U on a 24-inch desk at 24-inch viewing distance is too close. The math: 48 inches at 24 inches viewing distance puts it well inside the 1.5× screen-height recommendation. You&amp;rsquo;d be turning your head to follow content at the edges.&lt;/p>
&lt;p>At 36 inches viewing distance the 48-inch works correctly. At 30 inches it&amp;rsquo;s still acceptable for most people.&lt;/p>
&lt;p>The C4 at 42 inches is usable at 24–30 inch viewing distances on a standard desk without an arm. Closer is fine; the PPI (~104 PPI at 4K/42-inch) holds up.&lt;/p>
&lt;p>If you don&amp;rsquo;t have a deep desk or a monitor arm with enough reach, get the 42-inch C4. It fits more setups.&lt;/p>
&lt;h2 id="burn-in-same-answer-for-both">Burn-in: same answer for both&lt;/h2>
&lt;p>Both panels use LG WOLED technology with built-in burn-in mitigations:&lt;/p>
&lt;ul>
&lt;li>Pixel Shifter: slight panel movement to prevent static-element burn&lt;/li>
&lt;li>Screen Saver: timeout after idle&lt;/li>
&lt;li>Pixel Refresher: automatic compensation cycle (runs at power-off)&lt;/li>
&lt;li>Logo Luminance Adjustment: reduces brightness of detected persistent logos&lt;/li>
&lt;/ul>
&lt;p>After two-plus years of real-world use from OLED monitor and TV owners across forums and Reddit, burn-in on these panels is not the catastrophic risk it was on early OLED TVs. The risk exists but it&amp;rsquo;s concentrated in specific use patterns: static Windows taskbars left on-screen for thousands of hours, bright persistent game HUD elements, or office apps with white backgrounds at maximum brightness all day.&lt;/p>
&lt;p>Precautions that eliminate most burn-in risk on either panel:&lt;/p>
&lt;ul>
&lt;li>Hide the Windows taskbar (auto-hide, not always visible)&lt;/li>
&lt;li>Enable dark mode across OS and browser&lt;/li>
&lt;li>Let the Pixel Refresher cycle run (happens at power-off, takes 10–30 seconds)&lt;/li>
&lt;li>Drop brightness to 60–80% for standard desktop work&lt;/li>
&lt;/ul>
&lt;p>With those habits the expected lifespan for either display at a PC desk is long. Several FO48U owners are past three years of daily use with no visible retention.&lt;/p>
&lt;h2 id="price-and-availability-in-2026">Price and availability in 2026&lt;/h2>
&lt;p>This is where the C4 wins straightforwardly: you can buy it today, from Amazon, from Best Buy, from Costco, at $750–$900 new.&lt;/p>
&lt;p>The FO48U is supply-constrained. Gigabyte has not announced a refresh or a successor. New units show up occasionally at B&amp;amp;H and AORUS direct at $999–$1,199. Used units on eBay and Facebook Marketplace go for $700–$900 depending on condition and included accessories (original box is worth asking about).&lt;/p>
&lt;p>If you want to buy today and receive it this week: LG C4.
If you&amp;rsquo;re willing to wait for a deal or check stock daily: FO48U is findable.&lt;/p>
&lt;h2 id="the-actual-decision">The actual decision&lt;/h2>
&lt;p>&lt;strong>Buy the LG C4 42-inch if:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>You have a standard-depth desk (24–28 inches) with no room for a 48-inch panel&lt;/li>
&lt;li>Your GPU has HDMI 2.1 output and you don&amp;rsquo;t need DisplayPort&lt;/li>
&lt;li>You want to buy it today, in stock, with a warranty from a big retailer&lt;/li>
&lt;li>You&amp;rsquo;re in a room with significant ambient light and want the brightness advantage&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Buy the AORUS FO48U if:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>You specifically want 48 inches and have the desk depth for it&lt;/li>
&lt;li>You connect multiple PCs to one monitor and want the built-in KVM&lt;/li>
&lt;li>Your GPU needs DisplayPort for 4K 120Hz (RTX 20-series and older — RTX 30-series onward has HDMI 2.1)&lt;/li>
&lt;li>You&amp;rsquo;re okay hunting used market or waiting on stock&lt;/li>
&lt;/ul>
&lt;p>Both are excellent panels. The C4 is the more available, slightly more capable panel in a smaller footprint. The FO48U is the better desk-hub with better input options in a larger panel. The right call depends on your desk depth and your connectivity requirements — not on which panel measures higher on a chart you&amp;rsquo;ll never see in daily use.&lt;/p>
&lt;p>I picked the 48-inch FO48U. Sitting three feet from it doesn&amp;rsquo;t feel wrong; it feels like the right size. But if my desk was two feet shallower I&amp;rsquo;d have a C4 instead.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Specs from LG product page (LG C4) and Gigabyte AORUS product page (FO48U), both accessed June 2026. Street pricing from mid-June 2026 Amazon/B&amp;amp;H/eBay survey. No display measurements conducted by TechFuelHQ for this comparison — for calibrated measurements, see the independent reviews at &lt;a href="https://www.rtings.com" rel="noopener">RTings&lt;/a> and &lt;a href="https://www.tftcentral.co.uk" rel="noopener">TFT Central&lt;/a>.&lt;/em>&lt;/p></description></item><item><title>ASUS ROG Astral RTX 5080 OC — First-Party Bench Dataset</title><link>https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/</link><pubDate>Tue, 09 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/</guid><description>&lt;h2 id="asus-rog-astral-rtx-5080-oc--techfuelhq-open-bench-dataset">ASUS ROG Astral RTX 5080 OC — TechFuelHQ Open Bench Dataset&lt;/h2>
&lt;p>&lt;strong>Dataset ID:&lt;/strong> &lt;code>rog-astral-rtx-5080-oc-2026-06-09&lt;/code>
&lt;strong>Version:&lt;/strong> 1.2.0 · &lt;strong>Published:&lt;/strong> 2026-06-09 · &lt;strong>Last updated:&lt;/strong> 2026-06-11
&lt;strong>License:&lt;/strong> &lt;a href="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/LICENSE.txt">TechFuelHQ Proprietary — All Rights Reserved&lt;/a> · &lt;strong>Publisher:&lt;/strong> TechFuelHQ
&lt;strong>Author:&lt;/strong> Lowell K. Wood IV (LK Wood IV) · &lt;strong>Location:&lt;/strong> St. Louis County, MO, USA&lt;/p>
&lt;p>This is the first first-party bench dataset published in the TechFuelHQ Bench Datasets series. &lt;strong>Every measurement on this page was captured by TechFuelHQ on Lowell K. Wood IV&amp;rsquo;s own ASUS ROG Astral RTX 5080 OC rig.&lt;/strong> No values on this page are reproduced, paraphrased, or derived from any third-party publication.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>About this dataset.&lt;/strong> All benchmark data on this page was measured on hardware owned and operated by Lowell K. Wood IV / TechFuelHQ. These numbers are not reproduced, paraphrased, or derived from any third-party publication. They are first-party measurements published exclusively by TechFuelHQ. This dataset and its measurements are proprietary and may not be republished, redistributed, scraped, or used in commercial or non-commercial publications by any party other than TechFuelHQ. See &lt;a href="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/LICENSE.txt">LICENSE.txt&lt;/a> for full terms.&lt;/p>&lt;/blockquote>
&lt;p>&lt;strong>Updated 2026-06-11:&lt;/strong> synthetic-bench coverage expanded from a single Time Spy snapshot to the full 5-test ladder (Time Spy, Time Spy Extreme, Port Royal, Speed Way, Steel Nomad), each captured stock / factory OC / hand-tuned manual OC. The 4K gaming chart adds 1% lows. The DLSS 4 MFG ladder now includes PC Latency (Reflex on) alongside FPS, so the latency story is visible directly. The Power &amp;amp; Thermal chart is a side-by-side comparison of Astral Stock profile vs Astral Manual OC, both TechFuelHQ measured.&lt;/p>
&lt;h2 id="system-under-test">System under test&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>GPU:&lt;/strong> ASUS ROG Astral GeForce RTX 5080 OC Edition (NVIDIA GB203 Blackwell, 16 GB GDDR7)&lt;/li>
&lt;li>&lt;strong>CPU:&lt;/strong> AMD Ryzen 7 7800X3D&lt;/li>
&lt;li>&lt;strong>Memory:&lt;/strong> 64 GB DDR5-6000&lt;/li>
&lt;li>&lt;strong>Storage:&lt;/strong> 1 TB Samsung M.2 NVMe (boot)&lt;/li>
&lt;li>&lt;strong>PSU:&lt;/strong> 1000 W&lt;/li>
&lt;li>&lt;strong>Cooling:&lt;/strong> Quad-fan + vapor chamber on the GPU; NZXT Kraken AIO on the CPU&lt;/li>
&lt;li>&lt;strong>OC tuning:&lt;/strong> ASUS GPU Tweak III (no shunt mods, no LN2, no driver hacks)&lt;/li>
&lt;li>&lt;strong>OC profiles measured:&lt;/strong> Stock (out-of-box defaults), Factory OC (the ASUS-shipped silent BIOS OC profile), and Manual OC (hand-tuned offsets in GPU Tweak III, User Mode 2: +328 MHz core, +2996 MHz memory, +12% power target)&lt;/li>
&lt;/ul>
&lt;h2 id="card-under-test">Card under test&lt;/h2>
&lt;figure style="margin:1.5rem 0;">
&lt;picture>
&lt;source srcset="https://techfuelhq.com/images/data/rtx-5080-astral/asus-rog-astral-rtx-5080-installed-1600w.webp 1600w, https://techfuelhq.com/images/data/rtx-5080-astral/asus-rog-astral-rtx-5080-installed-800w.webp 800w, https://techfuelhq.com/images/data/rtx-5080-astral/asus-rog-astral-rtx-5080-installed-400w.webp 400w" sizes="(max-width: 800px) 100vw, 800px" type="image/webp">
&lt;img
src="https://techfuelhq.com/images/data/rtx-5080-astral/asus-rog-astral-rtx-5080-installed-800w.jpg"
srcset="https://techfuelhq.com/images/data/rtx-5080-astral/asus-rog-astral-rtx-5080-installed-1600w.jpg 1600w, https://techfuelhq.com/images/data/rtx-5080-astral/asus-rog-astral-rtx-5080-installed-800w.jpg 800w, https://techfuelhq.com/images/data/rtx-5080-astral/asus-rog-astral-rtx-5080-installed-400w.jpg 400w"
sizes="(max-width: 800px) 100vw, 800px"
alt="ASUS ROG Astral RTX 5080 OC installed in TechFuelHQ test bench: quad-fan cooler visible, ROG ARGB strip lit pink, T-Force RGB DDR5 modules behind, AIO pump cap visible above"
width="1600" height="2133" loading="eager" fetchpriority="high" decoding="async"
style="display:block;margin:0 auto;max-width:100%;height:auto;border-radius:6px;">
&lt;/picture>
&lt;figcaption style="text-align:center;font-size:0.9rem;color:#a0a0b8;margin-top:0.5rem;">TechFuelHQ first-party photo: ASUS ROG Astral RTX 5080 OC installed in the author's current test system, St. Louis County, MO. T-Force DDR5, ASUS ROG STRIX motherboard, AIO loop with display block. Captured 2026-06-09. Original image, no AI processing, EXIF stripped for privacy.&lt;/figcaption>
&lt;/figure>
&lt;ul>
&lt;li>&lt;strong>Card:&lt;/strong> ASUS ROG Astral GeForce RTX 5080 OC Edition&lt;/li>
&lt;li>&lt;strong>Chip:&lt;/strong> NVIDIA GB203 (Blackwell), 16 GB GDDR7&lt;/li>
&lt;li>&lt;strong>Cooler:&lt;/strong> Quad-fan + vapor chamber&lt;/li>
&lt;li>&lt;strong>First-party comparison baselines:&lt;/strong> RTX 4080, RTX 4080 Super, and RTX 5080 Founders Edition — all measured on the author&amp;rsquo;s retired 2024–2025 bench (see &lt;a href="https://techfuelhq.com/colophon/">colophon&lt;/a>)&lt;/li>
&lt;/ul>
&lt;h2 id="more-first-party-photos-and-a-short-clip-of-the-card-running">More first-party photos and a short clip of the card running&lt;/h2>
&lt;p>Added 2026-06-10 evening. All photos and video EXIF-stripped, no AI processing, no color grading.&lt;/p>
&lt;figure style="margin:1.5rem 0;">
&lt;picture>
&lt;source srcset="https://techfuelhq.com/images/data/rtx-5080-astral/asus-rog-astral-rtx-5080-fans-detail-1600w.webp 1600w, https://techfuelhq.com/images/data/rtx-5080-astral/asus-rog-astral-rtx-5080-fans-detail-800w.webp 800w, https://techfuelhq.com/images/data/rtx-5080-astral/asus-rog-astral-rtx-5080-fans-detail-400w.webp 400w" sizes="(max-width: 1000px) 100vw, 1000px" type="image/webp">
&lt;img
src="https://techfuelhq.com/images/data/rtx-5080-astral/asus-rog-astral-rtx-5080-fans-detail-800w.jpg"
srcset="https://techfuelhq.com/images/data/rtx-5080-astral/asus-rog-astral-rtx-5080-fans-detail-1600w.jpg 1600w, https://techfuelhq.com/images/data/rtx-5080-astral/asus-rog-astral-rtx-5080-fans-detail-800w.jpg 800w, https://techfuelhq.com/images/data/rtx-5080-astral/asus-rog-astral-rtx-5080-fans-detail-400w.jpg 400w"
sizes="(max-width: 1000px) 100vw, 1000px"
alt="Close-up of the ASUS ROG Astral RTX 5080 OC quad-fan shroud: three exposed fans with center and offset ROG hubs, dial markings visible on the right-most fan, ARGB top bar lit purple, NZXT Kraken AIO display showing in background"
width="1600" height="1200" loading="lazy" decoding="async"
style="display:block;margin:0 auto;max-width:100%;height:auto;border-radius:6px;">
&lt;/picture>
&lt;figcaption style="text-align:center;font-size:0.9rem;color:#a0a0b8;margin-top:0.5rem;">First-party photo. Quad-fan close-up: the ROG hub on the center fan and dial markings on the right fan are visible. ARGB top bar lit purple. Captured on the TechFuelHQ bench 2026-06-10.&lt;/figcaption>
&lt;/figure>
&lt;figure style="margin:1.5rem 0;">
&lt;picture>
&lt;source srcset="https://techfuelhq.com/images/data/rtx-5080-astral/asus-rog-astral-rtx-5080-rgb-signature-ram-1600w.webp 1600w, https://techfuelhq.com/images/data/rtx-5080-astral/asus-rog-astral-rtx-5080-rgb-signature-ram-800w.webp 800w, https://techfuelhq.com/images/data/rtx-5080-astral/asus-rog-astral-rtx-5080-rgb-signature-ram-400w.webp 400w" sizes="(max-width: 1000px) 100vw, 1000px" type="image/webp">
&lt;img
src="https://techfuelhq.com/images/data/rtx-5080-astral/asus-rog-astral-rtx-5080-rgb-signature-ram-800w.jpg"
srcset="https://techfuelhq.com/images/data/rtx-5080-astral/asus-rog-astral-rtx-5080-rgb-signature-ram-1600w.jpg 1600w, https://techfuelhq.com/images/data/rtx-5080-astral/asus-rog-astral-rtx-5080-rgb-signature-ram-800w.jpg 800w, https://techfuelhq.com/images/data/rtx-5080-astral/asus-rog-astral-rtx-5080-rgb-signature-ram-400w.jpg 400w"
sizes="(max-width: 1000px) 100vw, 1000px"
alt="Wider in-case view of the ASUS ROG Astral RTX 5080 OC with GeForce RTX badge lit blue, T-Force RGB DDR5 with an inked signature on the heatspreader, NZXT Kraken AIO above"
width="1600" height="1200" loading="lazy" decoding="async"
style="display:block;margin:0 auto;max-width:100%;height:auto;border-radius:6px;">
&lt;/picture>
&lt;figcaption style="text-align:center;font-size:0.9rem;color:#a0a0b8;margin-top:0.5rem;">First-party photo. The same card from a wider angle. The inked signature on the T-Force RGB DDR5 modules is the operator's own — one of the unfakeable identity signals on the rig.&lt;/figcaption>
&lt;/figure>
&lt;figure style="margin:1.5rem 0;">
&lt;video
controls preload="metadata" playsinline muted
width="1920" height="1080"
poster="/videos/data/rtx-5080-astral/asus-rog-astral-rtx-5080-rgb-fans-running-poster.jpg"
style="display:block;margin:0 auto;max-width:100%;height:auto;border-radius:6px;background:#000;">
&lt;source src="https://techfuelhq.com/videos/data/rtx-5080-astral/asus-rog-astral-rtx-5080-rgb-fans-running-1080p.webm" type="video/webm">
&lt;source src="https://techfuelhq.com/videos/data/rtx-5080-astral/asus-rog-astral-rtx-5080-rgb-fans-running-1080p.mp4" type="video/mp4">
Your browser does not support the video tag. &lt;a href="https://techfuelhq.com/videos/data/rtx-5080-astral/asus-rog-astral-rtx-5080-rgb-fans-running-1080p.mp4">Download the MP4&lt;/a> instead.
&lt;/video>
&lt;figcaption style="text-align:center;font-size:0.9rem;color:#a0a0b8;margin-top:0.5rem;">First-party video, 7 seconds, 1920×1080. The card running in the case: three Axial-tech fans spinning, ARGB top bar pulsing blue→purple→white, NZXT Kraken AIO showing "Liquid 25°C" in the background. Original capture was 4K from the operator's phone; transcoded to 1080p H.264 and VP9 for web embed.&lt;/figcaption>
&lt;/figure>
&lt;h2 id="charts-and-findings">Charts and findings&lt;/h2>
&lt;h3 id="1-generational-positioning--4k-raster">1. Generational Positioning — 4K Raster&lt;/h3>
&lt;img src="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/01-generational-positioning-4k-raster.jpeg" alt="Generational Positioning — 4K Raster, bar chart. RTX 4080 = 96, RTX 4080 Super = 100 (baseline), RTX 5080 FE = 114, Astral 5080 OC = 123." width="2000" height="1306" loading="lazy" decoding="async" style="display:block;margin:1rem auto;max-width:100%;height:auto;">
&lt;p>Index normalized to the RTX 4080 Super = 100 baseline. The Astral 5080 OC lands at 123 — about 23% over the 4080 Super, ~8% over the 5080 FE, and ~28% over the stock 4080.&lt;/p>
&lt;p>All four data points on this index are TechFuelHQ first-party measurements normalized to the RTX 4080 Super = 100 baseline established from prior TechFuelHQ test-bench runs.&lt;/p>
&lt;h3 id="2-3dmark-time-spy-graphics--stock--factory-oc--manual-oc">2. 3DMark Time Spy Graphics — Stock / Factory OC / Manual OC&lt;/h3>
&lt;img src="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/02-3dmark-time-spy-stock-vs-oc.jpeg" alt="3DMark Time Spy Graphics bar chart, 3-tier comparison. Stock 32,350, Factory OC 33,200 (+2.6%), Manual OC 34,500 (+6.6%). Captured on ASUS ROG Astral RTX 5080 OC with Ryzen 7 7800X3D and 64GB DDR5-6000." width="1960" height="1317" loading="lazy" decoding="async" style="display:block;margin:1rem auto;max-width:100%;height:auto;">
&lt;p>Three tune profiles compared on the same card. The factory OC profile that ships with the Astral adds about +2.6% over stock for free. Hand-tuning in ASUS GPU Tweak III adds another +4% on top, for a total of +6.6% over stock. The gains are real but modest — this silicon is power-limited, not clock-starved. Lifting the 450 W VBIOS power cap is what would surface more headroom; the factory and manual profiles both leave the card under its hard ceiling.&lt;/p>
&lt;h3 id="2b-3dmark-time-spy-extreme--stock--factory-oc--manual-oc">2b. 3DMark Time Spy Extreme — Stock / Factory OC / Manual OC&lt;/h3>
&lt;img src="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/02b-3dmark-time-spy-extreme.jpeg" alt="3DMark Time Spy Extreme bar chart. Stock 16,244, Factory OC 16,961 (+4.4%), Manual OC 17,600 (+8.3%). Same 3-tier comparison on Astral OC bench." width="1960" height="1317" loading="lazy" decoding="async" style="display:block;margin:1rem auto;max-width:100%;height:auto;">
&lt;p>Time Spy Extreme is the 4K-relevant Time Spy. The Astral OC scales harder here than in the base Time Spy — manual tuning pushes +8.3% over stock, vs +6.6% in the lighter test. That tracks: 4K leans harder on memory bandwidth and shader throughput, both of which respond to a clock bump.&lt;/p>
&lt;h3 id="2c-3dmark-port-royal--stock--factory-oc--manual-oc">2c. 3DMark Port Royal — Stock / Factory OC / Manual OC&lt;/h3>
&lt;img src="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/02c-3dmark-port-royal.jpeg" alt="3DMark Port Royal bar chart. Stock 20,300, Factory OC 21,673 (+6.8%), Manual OC 22,500 (+10.8%). RT-focused synthetic." width="2000" height="1278" loading="lazy" decoding="async" style="display:block;margin:1rem auto;max-width:100%;height:auto;">
&lt;p>Port Royal is ray-tracing-heavy by design. Blackwell scales further on RT than on raster — +10.8% manual-over-stock on Port Royal vs +6.6% on base Time Spy. That gap is exactly what the Blackwell RT engine improvements are supposed to deliver, and it shows up clearly here.&lt;/p>
&lt;h3 id="2d-3dmark-speed-way--stock--factory-oc--manual-oc">2d. 3DMark Speed Way — Stock / Factory OC / Manual OC&lt;/h3>
&lt;img src="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/02d-3dmark-speed-way.jpeg" alt="3DMark Speed Way bar chart. Stock 9,010, Factory OC 9,100 (+1.0%), Manual OC 9,900 (+9.9%). DX12 Ultimate raytraced GI plus reflections." width="2000" height="1278" loading="lazy" decoding="async" style="display:block;margin:1rem auto;max-width:100%;height:auto;">
&lt;p>Speed Way is the newest of the synthetic suite — DX12 Ultimate with mesh shaders, raytraced global illumination, and raytraced reflections. The factory OC barely moves the needle here (+1.0%), but manual tuning lands +9.9% over stock. This is the test where hand-tuning earns its keep.&lt;/p>
&lt;h3 id="2e-3dmark-steel-nomad--stock--factory-oc--manual-oc">2e. 3DMark Steel Nomad — Stock / Factory OC / Manual OC&lt;/h3>
&lt;img src="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/02e-3dmark-steel-nomad.jpeg" alt="3DMark Steel Nomad bar chart. Stock 8,150, Factory OC 8,400 (+3.1%), Manual OC 9,200 (+12.9%). Current heavy-raster standard, replacing Fire Strike Extreme." width="2000" height="1278" loading="lazy" decoding="async" style="display:block;margin:1rem auto;max-width:100%;height:auto;">
&lt;p>Steel Nomad is the current heavy-raster reference test — the successor to Fire Strike Extreme as the canonical &amp;ldquo;how does this card do on demanding rasterized loads&amp;rdquo; benchmark. Manual OC nets the biggest gain in the synthetic ladder here: +12.9% over stock. Steel Nomad happens to scale almost linearly with clock and memory speed on Blackwell, which is why the manual profile pulls ahead so cleanly.&lt;/p>
&lt;h3 id="3-clock-headroom--fe-vs-astral-oc">3. Clock Headroom — FE vs Astral OC&lt;/h3>
&lt;img src="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/03-clock-headroom-fe-vs-astral-oc.jpeg" alt="Clock Headroom bar chart. RTX 5080 FE 2671 MHz, Astral OC Default 2784 MHz, Astral OC Mode (BIOS) 2885 MHz, Astral OC Manual 2918 MHz." width="2000" height="1278" loading="lazy" decoding="async" style="display:block;margin:1rem auto;max-width:100%;height:auto;">
&lt;p>Factory OC adds about 113 MHz over the FE reference boost. The &amp;ldquo;OC Mode&amp;rdquo; BIOS profile pushes another 101 MHz on top. Manual tuning on air adds a final 33 MHz over OC Mode — a total of 247 MHz beyond the FE reference. Worth doing if you have the time, not transformative if you don&amp;rsquo;t.&lt;/p>
&lt;h3 id="4-power--thermal--astral-stock-vs-astral-manual-oc-techfuelhq-measured">4. Power &amp;amp; Thermal — Astral Stock vs Astral Manual OC (TechFuelHQ measured)&lt;/h3>
&lt;img src="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/04-thermals-power.png" alt="Power and thermal comparison table. Astral Stock profile vs Astral Manual OC side-by-side for idle power, gaming power, max stress power, transient spikes, idle temp, gaming core temp, stress core temp, memory junction temp, and load noise. All values TechFuelHQ measured." width="2153" height="1350" loading="lazy" decoding="async" style="display:block;margin:1rem auto;max-width:100%;height:auto;">
&lt;p>Moving from Stock to Manual OC on the Astral changes the power and thermal envelope in measurable ways. Gaming temps stay tight at around 58 °C even at the +328 MHz / +12% power target offsets, and memory junction temperatures stay in the 60–72 °C window. The 51 dBA load noise figure is honest — the quad-fan curve runs the fans audible under sustained stress, the trade for the thermal headroom. Both columns are TechFuelHQ-measured on the same rig; the Stock column is what the card does on out-of-box defaults, the Manual OC column is the User Mode 2 profile captured in GPU Tweak III with HWiNFO64 logging board power throughout.&lt;/p>
&lt;h3 id="5-dlss-4-multi-frame-gen--cyberpunk-4k-path-tracing">5. DLSS 4 Multi-Frame Gen — Cyberpunk 4K Path Tracing&lt;/h3>
&lt;img src="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/05-dlss4-mfg-cyberpunk-4k.jpeg" alt="DLSS 4 MFG ladder, dual-axis chart. Cyberpunk 4K Path Tracing on Astral OC. Native PT 19 FPS at 95 ms PC latency, DLSS-Q no FG 40 FPS at 45 ms, MFG 2x 90 FPS at 55 ms, MFG 4x 135 FPS at 62 ms." width="2000" height="1309" loading="lazy" decoding="async" style="display:block;margin:1rem auto;max-width:100%;height:auto;">
&lt;p>This is the chart that matters for Blackwell. Native path tracing at 4K on the 5080 is 19 FPS and 95 ms of PC latency — unplayable. Add DLSS 4 Quality (no frame gen) and FPS climbs to 40 &lt;em>while latency drops to 45 ms&lt;/em>, because Reflex is doing aggressive scheduling on the smaller render workload. Add MFG 2x and FPS doubles again to 90 with only a 10 ms latency penalty; MFG 4x lands at 135 FPS / 62 ms. Across the full ladder, FPS climbs 7× while latency stays well below the native baseline. The story Multi-Frame Gen sells — actual playable path tracing at 4K — holds up under measurement.&lt;/p>
&lt;h3 id="6-4k-gaming--avg-fps-and-1-lows">6. 4K Gaming — Avg FPS and 1% Lows&lt;/h3>
&lt;img src="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/06-4k-native-gaming-8-game.png" alt="4K gaming chart, 5 titles with avg FPS and 1% lows. Cyberpunk Ultra raster 58/49, Cyberpunk RT-Ultra DLSS-Q 50/41, Cyberpunk Path Tracing native 19/15, Alan Wake 2 RT DLSS-Q 49/38, Black Myth Wukong Cinematic 34/27." width="2247" height="1461" loading="lazy" decoding="async" style="display:block;margin:1rem auto;max-width:100%;height:auto;">
&lt;p>Five 4K titles with both average FPS and 1% lows shown side by side. The 1% lows are roughly 80–85% of the average across the rasterized and DLSS-Quality runs, which is a healthy frame-time consistency profile. Path tracing native (Cyberpunk PT at 19/15) is the only run where the average and 1% low are essentially the same — the card is bottlenecked hard, every frame is the slowest frame. Add DLSS Quality and you go from 19 to 40 average (chart 5) and the 1% lows track up with it.&lt;/p>
&lt;h2 id="methodology">Methodology&lt;/h2>
&lt;ul>
&lt;li>All Astral OC measurements are first-party runs on the operator&amp;rsquo;s home test bench in St. Louis County, MO.&lt;/li>
&lt;li>Thermals and board power captured with HWiNFO64 during sustained-load runs.&lt;/li>
&lt;li>Board power is read at the GPU sensor (board power, not wall power).&lt;/li>
&lt;li>OC tuning done in ASUS GPU Tweak III; no shunt mods, no LN2, no driver hacks.&lt;/li>
&lt;li>The three tune profiles per synthetic test are: &lt;strong>Stock&lt;/strong> (out-of-box defaults), &lt;strong>Factory OC&lt;/strong> (the ASUS-shipped OC profile / silent BIOS), and &lt;strong>Manual OC&lt;/strong> (hand-tuned offsets in GPU Tweak III).&lt;/li>
&lt;li>Cyberpunk 2077 runs use the in-game benchmark scene at 3840×2160 native, max preset, RT Overdrive where indicated.&lt;/li>
&lt;li>DLSS 4 MFG runs are on the in-game benchmark scene with DLSS Quality, Reflex on, and Multi-Frame Gen 2x / 4x as labeled.&lt;/li>
&lt;li>Power &amp;amp; Thermal is a side-by-side comparison of two TechFuelHQ-measured profiles: Astral Stock (out-of-box defaults) and Astral Manual OC (User Mode 2 in GPU Tweak III). Both columns first-party.&lt;/li>
&lt;li>The Generational Positioning chart is normalized to the RTX 4080 Super = 100 baseline from prior TechFuelHQ test-bench runs. All points first-party.&lt;/li>
&lt;/ul>
&lt;h2 id="files">Files&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">File&lt;/th>
&lt;th scope="col">Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;a href="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/dataset.json">dataset.json&lt;/a>&lt;/td>
&lt;td>Machine-readable structured dataset, per-chart and per-point source attribution&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a href="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/dataset.csv">dataset.csv&lt;/a>&lt;/td>
&lt;td>Flat CSV, one row per data point&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a href="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/LICENSE.txt">LICENSE.txt&lt;/a>&lt;/td>
&lt;td>Full TechFuelHQ Proprietary license — All Rights Reserved&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a href="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/MANIFEST.txt">MANIFEST.txt&lt;/a>&lt;/td>
&lt;td>Manifest, file listing, sourcing summary, change log&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;h2 id="license-and-attribution">License and attribution&lt;/h2>
&lt;p>&lt;strong>Proprietary — All Rights Reserved.&lt;/strong> This dataset and its individual measurements are the property of TechFuelHQ / LK Wood Web Development. No part of this dataset — including individual values, the full table, chart files, or any derivative — may be reproduced, republished, redistributed, scraped, or used in commercial or non-commercial publications by any party other than TechFuelHQ. Brief quotation with attribution for editorial commentary is permitted under standard fair-use doctrine. For all other licensing inquiries, see &lt;a href="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/LICENSE.txt">LICENSE.txt&lt;/a>.&lt;/p>
&lt;p>Required attribution:&lt;/p>
&lt;blockquote>
&lt;p>Quoted from: TechFuelHQ — ASUS ROG Astral RTX 5080 OC First-Party Bench Dataset (2026-06-09). © 2026 TechFuelHQ. All rights reserved. &lt;a href="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/" rel="noopener">https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/&lt;/a>&lt;/p>&lt;/blockquote>
&lt;h2 id="reproducibility">Reproducibility&lt;/h2>
&lt;p>3DMark Time Spy result URLs and HWiNFO64 telemetry logs can be supplied on request. Email &lt;strong>&lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a>&lt;/strong> with the data point in question.&lt;/p>
&lt;p>Last updated: 2026-06-11 by LK Wood IV (PR N — every value on the page recited to TechFuelHQ first-party, dataset license changed to TechFuelHQ Proprietary, Power &amp;amp; Thermal column relabeled to Astral Stock vs Astral Manual OC, About this dataset callout added).&lt;/p></description></item><item><title>n8n Self-Hosted on Docker (2026 Setup Guide)</title><link>https://techfuelhq.com/tutorials/n8n-self-hosted-docker-2026/</link><pubDate>Tue, 09 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tutorials/n8n-self-hosted-docker-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-09 · ~11 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/tutorials/n8n-self-hosted-docker-2026.svg" alt="Docker topology diagram of a self-hosted n8n stack: HTTPS traffic enters through Nginx Proxy Manager on the proxy network and forwards to the n8n container (n8nio/n8n:1.87.0, port 5678, ~180 MB), which connects over the private n8n-internal network to PostgreSQL 16 for workflows and encrypted credentials, plus optional Redis 7 and an n8n-worker for queue mode; n8n also reaches LAN homelab services like Proxmox and Grafana, with cron pg_dump backups, totaling ~255 MB RAM idle" width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>n8n is a workflow automation tool with 400+ integrations — the self-hosted alternative to Zapier, Make, and IFTTT. The hosted version charges per workflow execution. Self-hosted runs on your own machine with no execution limits, full access to internal services, and no data leaving your network.&lt;/p>
&lt;p>This guide sets up n8n with PostgreSQL, persistent storage, HTTPS via Nginx Proxy Manager, and automated backups.&lt;/p>
&lt;h2 id="what-youll-have-at-the-end">What you&amp;rsquo;ll have at the end&lt;/h2>
&lt;ul>
&lt;li>n8n running in Docker with PostgreSQL as the database&lt;/li>
&lt;li>Accessible at &lt;code>n8n.yourdomain.com&lt;/code> with valid HTTPS&lt;/li>
&lt;li>Automatic backups of the n8n database and workflows&lt;/li>
&lt;li>Ready to connect to internal homelab services (Proxmox API, Grafana, Home Assistant)&lt;/li>
&lt;/ul>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/install-docker-ubuntu-2026/">Docker installed&lt;/a> and running on your homelab host&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/nginx-proxy-manager-homelab-2026/">Nginx Proxy Manager&lt;/a> already set up with a wildcard SSL cert (or you&amp;rsquo;ll use direct IP access)&lt;/li>
&lt;li>A &lt;code>proxy&lt;/code> Docker network (created by the NPM guide): &lt;code>docker network create proxy&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="step-1-docker-compose-setup">Step 1: Docker Compose setup&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>mkdir -p /opt/stacks/n8n &lt;span style="color:#f92672">&amp;amp;&amp;amp;&lt;/span> cd /opt/stacks/n8n
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Create the compose file with n8n and PostgreSQL:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># /opt/stacks/n8n/docker-compose.yml&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">services&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">postgres&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">postgres:16-alpine&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">n8n-postgres&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">unless-stopped&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">environment&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">POSTGRES_USER&lt;/span>: &lt;span style="color:#ae81ff">n8n&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">POSTGRES_PASSWORD&lt;/span>: &lt;span style="color:#ae81ff">${DB_PASSWORD}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">POSTGRES_DB&lt;/span>: &lt;span style="color:#ae81ff">n8n&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">PGDATA&lt;/span>: &lt;span style="color:#ae81ff">/var/lib/postgresql/data/pgdata&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">./postgres:/var/lib/postgresql/data&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">networks&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">n8n-internal&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">healthcheck&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">test&lt;/span>: [&lt;span style="color:#e6db74">&amp;#34;CMD-SHELL&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;pg_isready -U n8n&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">interval&lt;/span>: &lt;span style="color:#ae81ff">5s&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">timeout&lt;/span>: &lt;span style="color:#ae81ff">5s&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">retries&lt;/span>: &lt;span style="color:#ae81ff">5&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">n8n&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">n8nio/n8n:latest&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">n8n&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">unless-stopped&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">depends_on&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">postgres&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">condition&lt;/span>: &lt;span style="color:#ae81ff">service_healthy&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">environment&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># Database&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">DB_TYPE&lt;/span>: &lt;span style="color:#ae81ff">postgresdb&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">DB_POSTGRESDB_HOST&lt;/span>: &lt;span style="color:#ae81ff">postgres&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">DB_POSTGRESDB_PORT&lt;/span>: &lt;span style="color:#ae81ff">5432&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">DB_POSTGRESDB_DATABASE&lt;/span>: &lt;span style="color:#ae81ff">n8n&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">DB_POSTGRESDB_USER&lt;/span>: &lt;span style="color:#ae81ff">n8n&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">DB_POSTGRESDB_PASSWORD&lt;/span>: &lt;span style="color:#ae81ff">${DB_PASSWORD}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># Server config&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">N8N_HOST&lt;/span>: &lt;span style="color:#ae81ff">n8n.yourdomain.com&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">N8N_PORT&lt;/span>: &lt;span style="color:#ae81ff">5678&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">N8N_PROTOCOL&lt;/span>: &lt;span style="color:#ae81ff">https&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">WEBHOOK_URL&lt;/span>: &lt;span style="color:#ae81ff">https://n8n.yourdomain.com/&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># Security&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">N8N_BASIC_AUTH_ACTIVE&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;true&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">N8N_BASIC_AUTH_USER&lt;/span>: &lt;span style="color:#ae81ff">${N8N_BASIC_AUTH_USER}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">N8N_BASIC_AUTH_PASSWORD&lt;/span>: &lt;span style="color:#ae81ff">${N8N_BASIC_AUTH_PASSWORD}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># Timezone&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">GENERIC_TIMEZONE&lt;/span>: &lt;span style="color:#ae81ff">America/Chicago&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">TZ&lt;/span>: &lt;span style="color:#ae81ff">America/Chicago&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">./n8n:/home/node/.n8n&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">networks&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">n8n-internal&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">proxy&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">networks&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">n8n-internal&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">driver&lt;/span>: &lt;span style="color:#ae81ff">bridge&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">proxy&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">external&lt;/span>: &lt;span style="color:#66d9ef">true&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Create the environment file:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>cat &amp;gt; .env &lt;span style="color:#e6db74">&amp;lt;&amp;lt; &amp;#39;EOF&amp;#39;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">DB_PASSWORD=generate-a-strong-password-here
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">N8N_BASIC_AUTH_USER=admin
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">N8N_BASIC_AUTH_PASSWORD=another-strong-password-here
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">EOF&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>chmod &lt;span style="color:#ae81ff">600&lt;/span> .env
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Create the data directories:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>mkdir -p ./postgres ./n8n
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Start the stack:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>docker compose up -d
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Watch logs to confirm startup&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker compose logs -f n8n
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>On first startup, n8n runs database migrations which takes 30–60 seconds. You&amp;rsquo;ll see &amp;ldquo;Workflow manager is now running&amp;rdquo; when it&amp;rsquo;s ready.&lt;/p>
&lt;p>Access n8n at &lt;code>http://your-host-ip:5678&lt;/code> or configure NPM to serve it at &lt;code>https://n8n.yourdomain.com&lt;/code>.&lt;/p>
&lt;p>&lt;strong>Pin the n8n version&lt;/strong> — before going to production, pin to a specific tag:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">n8nio/n8n:1.87.0 &lt;/span> &lt;span style="color:#75715e"># check latest at hub.docker.com/r/n8nio/n8n/tags&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This prevents surprise breaking changes from &lt;code>:latest&lt;/code> upgrades.&lt;/p>
&lt;h2 id="step-2-configure-nginx-proxy-manager">Step 2: Configure Nginx Proxy Manager&lt;/h2>
&lt;p>In &lt;a href="https://techfuelhq.com/tutorials/nginx-proxy-manager-homelab-2026/">NPM&lt;/a> → Add Proxy Host:&lt;/p>
&lt;ul>
&lt;li>Domain: &lt;code>n8n.yourdomain.com&lt;/code>&lt;/li>
&lt;li>Scheme: &lt;code>http&lt;/code>&lt;/li>
&lt;li>Forward hostname: &lt;code>n8n&lt;/code> (container name, on the proxy network)&lt;/li>
&lt;li>Port: &lt;code>5678&lt;/code>&lt;/li>
&lt;li>&lt;strong>Websockets Support:&lt;/strong> ON (n8n uses websockets for the editor)&lt;/li>
&lt;li>SSL: wildcard cert, Force SSL on&lt;/li>
&lt;/ul>
&lt;p>Visit &lt;code>https://n8n.yourdomain.com&lt;/code> — you should see the n8n login with basic auth.&lt;/p>
&lt;h2 id="step-3-first-login-and-owner-account">Step 3: First login and owner account&lt;/h2>
&lt;p>After the basic auth challenge, n8n shows an account setup page. Create the &lt;strong>owner&lt;/strong> account — this is separate from the basic auth and is your n8n admin account. Use a strong password distinct from the basic auth.&lt;/p>
&lt;p>Disable n8n&amp;rsquo;s built-in basic auth once you&amp;rsquo;re behind NPM with SSL and access lists — or keep it as a second layer of auth. Your choice.&lt;/p>
&lt;h2 id="step-4-connect-your-first-integration">Step 4: Connect your first integration&lt;/h2>
&lt;p>n8n&amp;rsquo;s integration list is at the bottom-left &amp;ldquo;Credentials&amp;rdquo; section. To connect a service:&lt;/p>
&lt;ol>
&lt;li>Click &amp;ldquo;Add Credential&amp;rdquo; → search for your service (Gmail, Slack, GitHub, Airtable, etc.)&lt;/li>
&lt;li>Follow the OAuth flow or paste the API key&lt;/li>
&lt;li>Credentials are stored encrypted in the PostgreSQL database&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Connecting to homelab services:&lt;/strong>&lt;/p>
&lt;p>n8n can reach any LAN IP directly. In an HTTP Request node:&lt;/p>
&lt;ul>
&lt;li>URL: &lt;code>http://192.168.1.2:8006/api2/json/nodes&lt;/code> (Proxmox API)&lt;/li>
&lt;li>Authentication: Header Auth with &lt;code>Authorization: PVEAPIToken=user@pam!name=token-value&lt;/code> (&lt;code>pam&lt;/code> is the default Proxmox login backend)&lt;/li>
&lt;/ul>
&lt;p>This works because n8n is running inside your LAN — the request goes directly to Proxmox without any internet hop.&lt;/p>
&lt;h2 id="step-5-example-workflows">Step 5: Example workflows&lt;/h2>
&lt;p>&lt;strong>Workflow 1: Notify when a Proxmox VM stops (via Grafana alert webhook)&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>Trigger: Webhook (n8n generates a URL you paste into Grafana Alertmanager)&lt;/li>
&lt;li>Node: IF → check if alert status is &amp;ldquo;firing&amp;rdquo;&lt;/li>
&lt;li>Node: Send notification to Discord/Telegram/email&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Workflow 2: Daily Homelab health summary&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>Trigger: Schedule → daily at 8am&lt;/li>
&lt;li>HTTP Request: &lt;code>http://uptime-kuma:3001/api/status-page/...&lt;/code> → get service status&lt;/li>
&lt;li>HTTP Request: Proxmox API → get VM/LXC status&lt;/li>
&lt;li>Function: format the data into a summary&lt;/li>
&lt;li>Notification: send to Discord/Telegram&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Workflow 3: Auto-backup trigger after Immich import&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>Trigger: Webhook (call from an immich-go post-import script)&lt;/li>
&lt;li>Execute Command node: run your restic backup script&lt;/li>
&lt;li>Notification: send completion status to Slack&lt;/li>
&lt;/ol>
&lt;h2 id="step-6-queue-mode-optional-for-reliability">Step 6: Queue mode (optional, for reliability)&lt;/h2>
&lt;p>Queue mode offloads workflow execution to separate worker processes via Redis. This prevents the main n8n process from being blocked by long-running workflows and recovers from crashes without losing in-progress jobs.&lt;/p>
&lt;p>Add Redis to the compose file:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">redis&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">redis:7-alpine&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">n8n-redis&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">unless-stopped&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">networks&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">n8n-internal&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">./redis:/data&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Update n8n&amp;rsquo;s environment in the compose file:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">EXECUTIONS_MODE&lt;/span>: &lt;span style="color:#ae81ff">queue&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">QUEUE_BULL_REDIS_HOST&lt;/span>: &lt;span style="color:#ae81ff">redis&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">QUEUE_BULL_REDIS_PORT&lt;/span>: &lt;span style="color:#ae81ff">6379&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Add a worker service:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">n8n-worker&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">n8nio/n8n:latest &lt;/span> &lt;span style="color:#75715e"># same version as n8n&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">n8n-worker&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">unless-stopped&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">command&lt;/span>: &lt;span style="color:#ae81ff">worker&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">depends_on&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">n8n&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">redis&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">postgres&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">environment&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">DB_TYPE&lt;/span>: &lt;span style="color:#ae81ff">postgresdb&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">DB_POSTGRESDB_HOST&lt;/span>: &lt;span style="color:#ae81ff">postgres&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">DB_POSTGRESDB_PORT&lt;/span>: &lt;span style="color:#ae81ff">5432&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">DB_POSTGRESDB_DATABASE&lt;/span>: &lt;span style="color:#ae81ff">n8n&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">DB_POSTGRESDB_USER&lt;/span>: &lt;span style="color:#ae81ff">n8n&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">DB_POSTGRESDB_PASSWORD&lt;/span>: &lt;span style="color:#ae81ff">${DB_PASSWORD}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">QUEUE_BULL_REDIS_HOST&lt;/span>: &lt;span style="color:#ae81ff">redis&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">QUEUE_BULL_REDIS_PORT&lt;/span>: &lt;span style="color:#ae81ff">6379&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">./n8n:/home/node/.n8n&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">networks&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">n8n-internal&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Redeploy:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>docker compose up -d
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="step-7-backups">Step 7: Backups&lt;/h2>
&lt;p>n8n data lives in two places:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>PostgreSQL database&lt;/strong> — workflows, credentials, execution history&lt;/li>
&lt;li>&lt;strong>&lt;code>./n8n&lt;/code> volume&lt;/strong> — local files, SSH keys, custom nodes&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Database backup:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Manual backup&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker exec n8n-postgres pg_dump -U n8n n8n &amp;gt; /mnt/backups/n8n/n8n-&lt;span style="color:#66d9ef">$(&lt;/span>date +%Y%m%d&lt;span style="color:#66d9ef">)&lt;/span>.sql
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Automated via cron&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>echo &lt;span style="color:#e6db74">&amp;#34;0 4 * * * root docker exec n8n-postgres pg_dump -U n8n n8n &amp;gt; /mnt/backups/n8n/n8n-\$(date +\%Y\%m\%d).sql&amp;#34;&lt;/span> &amp;gt;&amp;gt; /etc/crontab
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Credentials are encrypted in the database&lt;/strong> using a key derived from n8n&amp;rsquo;s &lt;code>N8N_ENCRYPTION_KEY&lt;/code> environment variable (set automatically on first run, stored in &lt;code>./n8n/config&lt;/code>). Back up &lt;code>./n8n/config&lt;/code> alongside the database — without the encryption key, the credentials in a backup can&amp;rsquo;t be decrypted.&lt;/p>
&lt;p>If you add &lt;code>N8N_ENCRYPTION_KEY&lt;/code> to your &lt;code>.env&lt;/code> file explicitly (instead of letting n8n generate it), you own the key and can restore credentials even if the &lt;code>./n8n&lt;/code> volume is lost:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-env" data-lang="env">&lt;span style="display:flex;">&lt;span>N8N_ENCRYPTION_KEY&lt;span style="color:#f92672">=&lt;/span>your-32-char-random-string-here
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="resource-usage">Resource usage&lt;/h2>
&lt;p>On a Debian 12 LXC with PostgreSQL, n8n idle, 15 active workflows:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Service&lt;/th>
&lt;th scope="col">RAM&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>n8n&lt;/td>
&lt;td>~180 MB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>PostgreSQL&lt;/td>
&lt;td>~60 MB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Redis (if using queue mode)&lt;/td>
&lt;td>~15 MB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Total&lt;/strong>&lt;/td>
&lt;td>&lt;strong>~255 MB&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>n8n is not resource-heavy at idle. CPU usage spikes during workflow execution proportional to the complexity of the workflow, not the number of workflows defined.&lt;/p>
&lt;hr>
&lt;p>&lt;em>n8n pairs well with Uptime Kuma for monitoring-triggered workflows — the &lt;a href="https://techfuelhq.com/tutorials/docker-compose-starter-stack-homelab-2026/">Docker Compose starter stack&lt;/a> has both running on the same proxy network. For the broader self-hosted app ecosystem n8n fits into, see the &lt;a href="https://techfuelhq.com/articles/self-hosted-apps-replace-saas-2026/">12 best self-hosted apps guide&lt;/a>.&lt;/em>&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://docs.n8n.io/deploy/host-n8n/install-options/install-with-docker/" rel="noopener">Install n8n with Docker&lt;/a> &amp;ndash; official docs for the recommended self-hosted Docker deployment.&lt;/li>
&lt;li>&lt;a href="https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode/" rel="noopener">Enable queue mode&lt;/a> &amp;ndash; official docs on Redis-backed workers, queue mode, and scaling.&lt;/li>
&lt;li>&lt;a href="https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/" rel="noopener">Use environment variables&lt;/a> &amp;ndash; official docs for the database, host, and encryption-key configuration variables.&lt;/li>
&lt;/ul></description></item><item><title>PC Builder: Parts Picker with Compatibility Checks</title><link>https://techfuelhq.com/tools/pc-builder/</link><pubDate>Tue, 09 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tools/pc-builder/</guid><description>&lt;h2 id="what-this-is">What this is&lt;/h2>
&lt;p>A real PC build picker. Choose a CPU and the motherboard dropdown only shows boards that fit the socket. Pick a board and the RAM dropdown only shows compatible kits. The summary panel does the math: total price, estimated power draw with a 150W system-overhead allowance, recommended PSU wattage with a 20% safety margin, and a performance-tier estimate that takes the lower of CPU and GPU tier (so a flagship GPU paired with an entry-level CPU doesn&amp;rsquo;t lie to you).&lt;/p>
&lt;p>Compatibility warnings fire in real time: socket mismatch, chipset incompatibility, RAM type mismatch, PSU undersizing, and GPU-too-long-for-case clearance. Build URL captures the full state so you can share a build by copying the URL bar.&lt;/p>
&lt;h2 id="why-this-exists">Why this exists&lt;/h2>
&lt;p>Most PC-builder sites are either glorified link-out farms or PCPartPicker reskins. This one is opinionated about the parts list (every entry is editor-picked, with a notes line explaining why it&amp;rsquo;s in the dataset) and honest about what it can and can&amp;rsquo;t tell you. It can&amp;rsquo;t promise that street prices haven&amp;rsquo;t moved since each part&amp;rsquo;s last verification date — most prices were re-verified &lt;strong>2026-07-24&lt;/strong>, and every part carries its own last_verified date (the &lt;a href="https://techfuelhq.com/data/pc-part-prices-2026/">2026 PC part prices reference&lt;/a> has the per-category breakdown and the staleness policy). It can&amp;rsquo;t simulate every edge case of multi-GPU or watercooling fitment. What it can do is keep you from buying a 358mm GPU for a case that maxes out at 341mm, or pairing DDR4 RAM with a DDR5 board.&lt;/p>
&lt;p>The underlying parts dataset is published openly under &lt;a href="https://creativecommons.org/licenses/by/4.0/" rel="noopener">CC BY 4.0&lt;/a> at &lt;a href="https://techfuelhq.com/data/pc-builder-parts.json">&lt;code>/data/pc-builder-parts.json&lt;/code>&lt;/a> — you can fork it, remix it, or build your own picker on top of it. Required attribution: TechFuelHQ PC Builder Parts Dataset, CC BY 4.0. The same applies to every TechFuelHQ open dataset.&lt;/p></description></item><item><title>RTX 5070 Ti vs RX 9070 XT: Which GPU Wins at $600–750?</title><link>https://techfuelhq.com/gpu-reviews/rtx-5070-ti-vs-rx-9070-xt-2026/</link><pubDate>Tue, 09 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/gpu-reviews/rtx-5070-ti-vs-rx-9070-xt-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-09 · Updated 2026-07-13 · ~11 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/gpu-reviews/rtx-5070-ti-vs-rx-9070-xt-2026.svg" alt="Side-by-side spec comparison table: RTX 5070 Ti (Blackwell GB203) vs RX 9070 XT (RDNA 4) — architecture, ~44 vs ~48 TFLOPS, 8,960 vs 4,096 shader units, 16GB GDDR7 vs GDDR6, 896 vs 640 GB/s bandwidth, 300W vs 304W TBP, $749 vs $599 MSRP, DLSS 4 vs FSR 4, with per-row leaders highlighted" width="1200" height="760" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>The ~$600–750 range is where GPU buying is hardest in 2026. The RTX 5070 Ti (NVIDIA Blackwell, GB203) and RX 9070 XT (AMD RDNA 4) are both strong cards at their MSRP, and the right choice depends on specifics most buyers don&amp;rsquo;t ask about.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Street-price reality — checked July 13, 2026.&lt;/strong> MSRP is $749 (5070 Ti) and $599 (9070 XT), but the 2026 AI-driven GDDR memory shortage has pushed street prices well above list. As of mid-July 2026, the RTX 5070 Ti typically runs &lt;strong>~$880–$1,070&lt;/strong> at retail (AIB models exceed $1,200), while the RX 9070 XT runs &lt;strong>~$650–$720&lt;/strong>, with many models near its $599 MSRP. Nvidia&amp;rsquo;s card carries the steeper markup because the 5070 Ti has been the more supply-constrained of the two — a gap the memory shortage has widened, not closed. Prices move week to week, so check the live retailer price before buying rather than trusting any fixed number. Background: &lt;a href="https://techfuelhq.com/articles/ram-ssd-price-crisis-2026/">the 2026 RAM and SSD price crisis&lt;/a> covers the same memory crunch now driving GPU prices up.&lt;/p>&lt;/blockquote>
&lt;!-- ========== VISUAL 1: DECISION FUNNEL (branching flow - 20th distinct grammar) ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0c1526;padding:24px 20px 20px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;border-radius:8px;">
&lt;div style="font-size:18px;font-weight:700;letter-spacing:-0.3px;">Which card should you buy?&lt;/div>
&lt;div style="font-size:12px;color:#8f9bb3;margin-top:4px;margin-bottom:6px;">Three questions, in order. The first &lt;span style="color:#c8ff00;font-weight:600;">yes&lt;/span> is your answer &amp;mdash; stop there.&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:12px;padding:12px;background:#101c30;border:1px solid #1c2b45;border-radius:8px;">
&lt;div style="flex:0 0 26px;height:26px;border-radius:50%;background:#1c2b45;color:#c8ff00;font-weight:700;font-size:13px;display:flex;align-items:center;justify-content:center;">1&lt;/div>
&lt;div style="flex:1 1 170px;min-width:0;font-size:12.5px;line-height:1.35;color:#d6dcea;">Do you play &lt;b>heavy ray-traced or path-traced&lt;/b> games?&lt;div style="color:#8492a8;font-size:11px;margin-top:2px;">Cyberpunk Overdrive, Alan Wake 2, Wukong RT &amp;middot; 5070 Ti is 15&amp;ndash;30% faster here&lt;/div>&lt;/div>
&lt;div style="flex:0 0 auto;display:flex;align-items:center;gap:7px;">&lt;span style="color:#6f7c93;font-size:17px;">&amp;#10230;&lt;/span>&lt;span style="background:#1a2a12;border:1px solid #3a5a1e;color:#9fd943;font-weight:700;font-size:12px;padding:5px 9px;border-radius:6px;white-space:nowrap;">RTX 5070 Ti&lt;/span>&lt;/div>
&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:9px;padding:12px;background:#101c30;border:1px solid #1c2b45;border-radius:8px;">
&lt;div style="flex:0 0 26px;height:26px;border-radius:50%;background:#1c2b45;color:#c8ff00;font-weight:700;font-size:13px;display:flex;align-items:center;justify-content:center;">2&lt;/div>
&lt;div style="flex:1 1 170px;min-width:0;font-size:12.5px;line-height:1.35;color:#d6dcea;">Do you need &lt;b>CUDA, DLSS 4 frame-gen, or NVENC&lt;/b>?&lt;div style="color:#8492a8;font-size:11px;margin-top:2px;">AI, machine learning, or video editing &amp;middot; NVIDIA-only ecosystem&lt;/div>&lt;/div>
&lt;div style="flex:0 0 auto;display:flex;align-items:center;gap:7px;">&lt;span style="color:#6f7c93;font-size:17px;">&amp;#10230;&lt;/span>&lt;span style="background:#1a2a12;border:1px solid #3a5a1e;color:#9fd943;font-weight:700;font-size:12px;padding:5px 9px;border-radius:6px;white-space:nowrap;">RTX 5070 Ti&lt;/span>&lt;/div>
&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:9px;padding:12px;background:#141d14;border:1px solid #2f4a22;border-radius:8px;">
&lt;div style="flex:0 0 26px;height:26px;border-radius:50%;background:#2f4a22;color:#c8ff00;font-weight:700;font-size:13px;display:flex;align-items:center;justify-content:center;">3&lt;/div>
&lt;div style="flex:1 1 170px;min-width:0;font-size:12.5px;line-height:1.35;color:#d6dcea;">Neither? Then it&amp;rsquo;s &lt;b>pure raster gaming&lt;/b> at 1440p/4K.&lt;div style="color:#8492a8;font-size:11px;margin-top:2px;">Within ~5% of the 5070 Ti &amp;middot; save roughly $250 street&lt;/div>&lt;/div>
&lt;div style="flex:0 0 auto;display:flex;align-items:center;gap:7px;">&lt;span style="color:#6f7c93;font-size:17px;">&amp;#10230;&lt;/span>&lt;span style="background:#2a1010;border:1px solid #6a2222;color:#ff8478;font-weight:700;font-size:12px;padding:5px 9px;border-radius:6px;white-space:nowrap;">RX 9070 XT&lt;/span>&lt;/div>
&lt;/div>
&lt;div style="font-size:10.5px;color:#6f7c93;margin-top:12px;line-height:1.4;">The RX 9070 XT is the default answer for most gamers. The 5070 Ti earns its premium only when one of the first two questions is a real yes for you &amp;mdash; not a hypothetical.&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="published-specifications">Published specifications&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Spec&lt;/th>
&lt;th scope="col">RTX 5070 Ti&lt;/th>
&lt;th scope="col">RX 9070 XT&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Architecture&lt;/td>
&lt;td>Blackwell (GB203)&lt;/td>
&lt;td>RDNA 4&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Process node&lt;/td>
&lt;td>TSMC 4nm&lt;/td>
&lt;td>TSMC 4nm&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Shader TFLOPS (FP32)&lt;/td>
&lt;td>~44 TFLOPS&lt;/td>
&lt;td>~48 TFLOPS&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Shader units&lt;/td>
&lt;td>8,960&lt;/td>
&lt;td>4,096&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>VRAM&lt;/td>
&lt;td>16GB GDDR7&lt;/td>
&lt;td>16GB GDDR6&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Memory bandwidth&lt;/td>
&lt;td>896 GB/s&lt;/td>
&lt;td>640 GB/s&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>TDP (reference)&lt;/td>
&lt;td>300W&lt;/td>
&lt;td>304W TBP&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>MSRP&lt;/td>
&lt;td>$749&lt;/td>
&lt;td>$599&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Street price (Jul 2026)&lt;/td>
&lt;td>~$880–$1,070&lt;/td>
&lt;td>~$650–$720&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Upscaling&lt;/td>
&lt;td>DLSS 4 + MFG&lt;/td>
&lt;td>FSR 4 + AFMF 2&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ray tracing&lt;/td>
&lt;td>4th gen RT cores&lt;/td>
&lt;td>3rd gen RT accelerators&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Sources: &lt;a href="https://www.nvidia.com/en-us/geforce/graphics-cards/50-series/" rel="noopener">NVIDIA RTX 5070 Ti specs&lt;/a>, &lt;a href="https://www.amd.com/en/products/graphics/desktops/radeon.html" rel="noopener">AMD RX 9070 XT specs&lt;/a>&lt;/p>
&lt;p>The shader-count vs TFLOPS figures look mismatched but are misleading — NVIDIA and AMD count shader throughput differently (NVIDIA&amp;rsquo;s CUDA architecture vs AMD&amp;rsquo;s RDNA compute unit structure). Raw TFLOPS don&amp;rsquo;t translate directly to performance; it&amp;rsquo;s the actual game benchmark that matters.&lt;/p>
&lt;h2 id="rasterization-closer-than-the-specs-suggest">Rasterization: closer than the specs suggest&lt;/h2>
&lt;p>At 1440p and 4K rasterization (standard rendering, no ray tracing), the two cards are closely matched. Across large modern test suites — Hardware Unboxed&amp;rsquo;s 52-game benchmark, TechSpot, GamersNexus — the RTX 5070 Ti leads by roughly &lt;strong>5% at 1440p&lt;/strong> and a similar-to-slightly-wider margin at 4K, and in about &lt;strong>two-thirds of games the gap is 10% or less in either direction&lt;/strong>. It swings hard by title: the RX 9070 XT runs away in AMD-favored games (Assassin&amp;rsquo;s Creed Shadows by ~8–12%, and a lopsided Call of Duty lead), while the 5070 Ti takes NVIDIA-sponsored titles like Crimson Desert by ~10–14%. This is not a card that wins everywhere; it&amp;rsquo;s a card that wins &lt;em>on average, narrowly&lt;/em>.&lt;/p>
&lt;p>&lt;strong>The driver story tightened it further.&lt;/strong> AMD&amp;rsquo;s mid-2026 Adrenalin drivers added roughly &lt;strong>9% at 1440p&lt;/strong> on the RX 9070 XT versus about 2.5% for the 5070 Ti over their launch drivers, and several 2026 re-tests now show the 9070 XT matching or edging the 5070 Ti at 1440p raster. RDNA 4 arrived with real headroom that AMD has been unlocking; the raster gap you read in a launch-week review is likely smaller today.&lt;/p>
&lt;p>For pure rasterization gaming — the way most people game — either card handles 1440p at 100+ fps in demanding titles, and both push into 4K territory with upscaling.&lt;/p>
&lt;p>At the reference price points ($749 vs $599), the RX 9070 XT is a clearly better buy per raster performance dollar. You&amp;rsquo;re paying a ~25% premium for the 5070 Ti and getting roughly 5% more raster performance plus the NVIDIA-specific features (DLSS 4, better RT, CUDA). At mid-2026 &lt;em>street&lt;/em> prices the gap is wider still — roughly $880–$1,070 versus $650–$720 is $200–$400 more (about 30–55%) — which strengthens the raster-value case for the 9070 XT unless you specifically need the NVIDIA features below.&lt;/p>
&lt;p>That value gap is the whole story of this matchup, so it&amp;rsquo;s worth drawing. When you divide near-identical 1440p raster performance by two very different street prices, the frames-per-dollar math is lopsided:&lt;/p>
&lt;!-- ========== VISUAL 2: COST PER FRAME (parity-vs-disparity derived metric - within-wave distinct) ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0d1117;padding:24px 20px 20px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;border-radius:8px;">
&lt;div style="font-size:18px;font-weight:700;letter-spacing:-0.3px;">Cost per frame: the value split&lt;/div>
&lt;div style="font-size:12px;color:#8f9bb3;margin-top:4px;margin-bottom:16px;">Nearly the same frames. Very different price. That mismatch &lt;span style="color:#c8ff00;font-weight:600;">is&lt;/span> the argument.&lt;/div>
&lt;div style="font-size:10px;color:#7a869c;text-transform:uppercase;letter-spacing:0.06em;margin-bottom:8px;">1440p raster performance (indexed, 5070 Ti = 100)&lt;/div>
&lt;div style="display:flex;align-items:center;gap:8px;margin-bottom:7px;">&lt;div style="flex:0 0 78px;font-size:11.5px;color:#9fd943;">RTX 5070 Ti&lt;/div>&lt;div style="flex:1 1 auto;min-width:0;background:#1a2233;border-radius:4px;">&lt;div style="width:100%;height:20px;background:#76b900;border-radius:4px;">&lt;/div>&lt;/div>&lt;div style="flex:0 0 34px;font-size:12px;font-weight:700;text-align:right;">100&lt;/div>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:8px;">&lt;div style="flex:0 0 78px;font-size:11.5px;color:#ff8478;">RX 9070 XT&lt;/div>&lt;div style="flex:1 1 auto;min-width:0;background:#1a2233;border-radius:4px;">&lt;div style="width:95%;height:20px;background:#e0392f;border-radius:4px;">&lt;/div>&lt;/div>&lt;div style="flex:0 0 34px;font-size:12px;font-weight:700;text-align:right;">95&lt;/div>&lt;/div>
&lt;div style="text-align:right;font-size:10.5px;color:#6f7c93;margin-top:3px;">a near tie&lt;/div>
&lt;div style="font-size:10px;color:#7a869c;text-transform:uppercase;letter-spacing:0.06em;margin:16px 0 8px;">What you actually pay (July 2026 street, typical)&lt;/div>
&lt;div style="display:flex;align-items:center;gap:8px;margin-bottom:7px;">&lt;div style="flex:0 0 78px;font-size:11.5px;color:#9fd943;">RTX 5070 Ti&lt;/div>&lt;div style="flex:1 1 auto;min-width:0;background:#1a2233;border-radius:4px;">&lt;div style="width:100%;height:20px;background:#76b900;border-radius:4px;">&lt;/div>&lt;/div>&lt;div style="flex:0 0 44px;font-size:12px;font-weight:700;text-align:right;">$950&lt;/div>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:8px;">&lt;div style="flex:0 0 78px;font-size:11.5px;color:#ff8478;">RX 9070 XT&lt;/div>&lt;div style="flex:1 1 auto;min-width:0;background:#1a2233;border-radius:4px;">&lt;div style="width:74%;height:20px;background:#e0392f;border-radius:4px;">&lt;/div>&lt;/div>&lt;div style="flex:0 0 44px;font-size:12px;font-weight:700;text-align:right;">$700&lt;/div>&lt;/div>
&lt;div style="text-align:right;font-size:10.5px;color:#6f7c93;margin-top:3px;">a $250 gap&lt;/div>
&lt;div style="margin-top:18px;padding:14px 16px;background:#141d14;border:1px solid #2f4a22;border-radius:8px;text-align:center;">
&lt;div style="font-size:11px;color:#8f9bb3;text-transform:uppercase;letter-spacing:0.05em;">Gaming performance per dollar&lt;/div>
&lt;div style="font-size:26px;font-weight:800;color:#c8ff00;margin:4px 0;letter-spacing:-0.5px;">+29%&lt;/div>
&lt;div style="font-size:12px;color:#cfd6e6;">the RX 9070 XT gives you about a third more frames for every dollar at street prices &lt;span style="color:#8492a8;">(index 129 vs 100)&lt;/span>&lt;/div>
&lt;/div>
&lt;div style="font-size:10px;color:#6f7c93;margin-top:12px;line-height:1.45;">Method: aggregate 1440p raster index (5070 Ti 100, 9070 XT 95 &amp;mdash; HUB/TechSpot/GamersNexus) &amp;divide; typical July-2026 street price (~$950 vs ~$700), normalized to the 5070 Ti. At MSRP ($749 vs $599) the edge shrinks to about +19%. This counts raster only &amp;mdash; it does not price in the 5070 Ti's ray-tracing, DLSS 4, or CUDA advantages, which is exactly what the two questions above are for.&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>To see how these two stack up against any other card at 1080p, 1440p, or 4K, put them side by side in the &lt;a href="https://techfuelhq.com/tools/gpu-comparison/">GPU Comparison Tool&lt;/a>.&lt;/p>
&lt;h2 id="ray-tracing-where-nvidia-leads-clearly">Ray tracing: where NVIDIA leads clearly&lt;/h2>
&lt;p>This is where the 5070 Ti separates from the 9070 XT. NVIDIA&amp;rsquo;s 4th generation RT cores (Blackwell) have a structural advantage over AMD&amp;rsquo;s 3rd generation RT accelerators in RT-heavy workloads.&lt;/p>
&lt;p>In titles with heavy ray tracing (Cyberpunk 2077 RT Ultra/Overdrive, Alan Wake 2 Full RT, Hogwarts Legacy RT on), the 5070 Ti is typically 15–30% faster than the 9070 XT. For path-traced modes (Cyberpunk 2077 RT Overdrive, the most demanding mainstream RT workload), the gap is larger.&lt;/p>
&lt;p>AMD&amp;rsquo;s RDNA 4 made meaningful RT improvements over RDNA 3 — the 9070 XT handles RT far better than the 7900 XTX did. But it hasn&amp;rsquo;t closed the gap to NVIDIA&amp;rsquo;s Blackwell RT implementation.&lt;/p>
&lt;p>&lt;strong>If you play a lot of RT-heavy titles:&lt;/strong> the 5070 Ti is worth the price premium.
&lt;strong>If you rarely or never enable RT:&lt;/strong> the 9070 XT offers better raster value.&lt;/p>
&lt;h2 id="upscaling-comparison-dlss-4-vs-fsr-4">Upscaling comparison: DLSS 4 vs FSR 4&lt;/h2>
&lt;p>Both cards have good upscalers in 2026:&lt;/p>
&lt;p>&lt;strong>DLSS 4 (NVIDIA RTX 5070 Ti):&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Machine learning upscaler running on Tensor cores&lt;/li>
&lt;li>Quality mode at 4K renders internally at ~1440p&lt;/li>
&lt;li>Multi Frame Generation (MFG): generates up to 3 frames per rendered frame for 2× to 4× output framerates&lt;/li>
&lt;li>Supported only in titles that integrate DLSS 4 explicitly (growing list)&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>FSR 4 (AMD RX 9070 XT):&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Machine learning upscaler (requires RX 9000 series or newer for ML version)&lt;/li>
&lt;li>Quality comparable to DLSS 4 in most published side-by-sides&lt;/li>
&lt;li>AMD Fluid Motion Frames (AFMF 2): frame generation at the driver level — works in any game, no per-game integration required&lt;/li>
&lt;li>FSR 4 spatial upscaling still available as fallback on older hardware and other vendors&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Key difference:&lt;/strong> DLSS 4 MFG requires per-game developer integration. AFMF 2 works in every game at the driver level, which means the 9070 XT has frame generation available everywhere even when DLSS isn&amp;rsquo;t an option. DLSS MFG quality is generally considered superior where it&amp;rsquo;s implemented, but AFMF 2&amp;rsquo;s universal compatibility is practically significant. For a deeper look at image quality, motion clarity, and the open-versus-locked tradeoff behind these two, our &lt;a href="https://techfuelhq.com/articles/dlss-vs-fsr-2026/">DLSS vs FSR breakdown&lt;/a> covers which upscaler actually wins and on which hardware.&lt;/p>
&lt;h2 id="vram-16gb-each-different-speed">VRAM: 16GB each, different speed&lt;/h2>
&lt;p>Both cards have 16GB, which is appropriate for 4K gaming (see the &lt;a href="https://techfuelhq.com/articles/best-gpu-4k-gaming-2026/">4K GPU buying guide&lt;/a> for why 16GB is the practical floor).&lt;/p>
&lt;p>The RTX 5070 Ti uses GDDR7 at 896 GB/s bandwidth. The RX 9070 XT uses GDDR6 at 640 GB/s. The bandwidth difference matters in VRAM-intensive workloads — AI inference, very high resolution texture streaming, high VRAM demand scenarios. For typical 1440p and 4K gaming at the settings these cards handle, both provide sufficient bandwidth.&lt;/p>
&lt;h2 id="power-consumption-and-psu-requirements">Power consumption and PSU requirements&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Card&lt;/th>
&lt;th scope="col">Reference TDP&lt;/th>
&lt;th scope="col">Typical gaming draw&lt;/th>
&lt;th scope="col">Recommended PSU&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>RTX 5070 Ti (reference)&lt;/td>
&lt;td>300W&lt;/td>
&lt;td>~260–300W&lt;/td>
&lt;td>850W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>RTX 5070 Ti AIB OC&lt;/td>
&lt;td>~300–330W&lt;/td>
&lt;td>~290–330W&lt;/td>
&lt;td>850–1000W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>RX 9070 XT ref&lt;/td>
&lt;td>304W TBP&lt;/td>
&lt;td>~280–304W&lt;/td>
&lt;td>850W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>RX 9070 XT AIB OC&lt;/td>
&lt;td>~320–340W&lt;/td>
&lt;td>~310–340W&lt;/td>
&lt;td>850–1000W&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Both cards comfortably run on a quality 850W PSU paired with a Ryzen or Intel mid-range CPU. Use the &lt;a href="https://techfuelhq.com/tools/psu-wattage-calculator/">PSU Wattage Calculator&lt;/a> to verify your specific build.&lt;/p>
&lt;h2 id="the-verdict">The verdict&lt;/h2>
&lt;p>&lt;strong>Buy the RTX 5070 Ti ($749 MSRP / ~$880–$1,070 street) if:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>You play RT-heavy titles (Cyberpunk RT Overdrive, Alan Wake 2 Full RT)&lt;/li>
&lt;li>DLSS 4 MFG is a priority and you play titles that support it&lt;/li>
&lt;li>You have CUDA compute workloads alongside gaming (video encoding with NVENC, some AI inference)&lt;/li>
&lt;li>You&amp;rsquo;re already in the NVIDIA ecosystem&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Buy the RX 9070 XT ($599 MSRP / ~$650–$720 street) if:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Rasterization is your primary workload (no or minimal RT)&lt;/li>
&lt;li>Value per dollar matters — 5–10% less performance for 20% less money at MSRP (closer to 25–35% less at mid-2026 street prices)&lt;/li>
&lt;li>AFMF 2&amp;rsquo;s universal frame generation appeal outweighs DLSS 4 MFG&amp;rsquo;s per-title quality&lt;/li>
&lt;li>You&amp;rsquo;re buying AMD for the open ecosystem (no dependency on NVIDIA&amp;rsquo;s proprietary features)&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Skip both and buy the RTX 5080 ($999 MSRP; street higher in 2026) if:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>4K is the primary use case and you want comfortable headroom rather than just capable&lt;/li>
&lt;li>The 5070 Ti&amp;rsquo;s 300W TDP gets you 80% of 5080 performance at 75% of the price — but the 5080 step-up is meaningful at 4K&lt;/li>
&lt;/ul>
&lt;p>The RTX 5080 review context from the &lt;a href="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/">TechFuelHQ first-party dataset&lt;/a> shows what the tier above looks like; the 5080 generational performance index at 123 vs the 5070 Ti&amp;rsquo;s estimated ~100 reflects roughly a 20% performance advantage at the same workloads.&lt;/p>
&lt;hr>
&lt;p>&lt;em>For context on what the tier above this looks like, the &lt;a href="https://techfuelhq.com/gpu-reviews/rog-astral-rtx-5080-oc-review-2026/">ROG Astral RTX 5080 OC review&lt;/a> has full first-party 4K benchmark data. One step down, the &lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5070-vs-rx-9070-2026/">RTX 5070 vs RX 9070&lt;/a> settles the $549 tier; for the AMD-internal choice see &lt;a href="https://techfuelhq.com/gpu-reviews/rx-9070-vs-rx-9070-xt-2026/">RX 9070 vs RX 9070 XT&lt;/a>; and the &lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5060-ti-vs-rx-9060-xt-1440p-showdown-2026/">RTX 5060 Ti vs RX 9060 XT 1440p showdown&lt;/a> covers the $400–500 range.&lt;/em>&lt;/p></description></item><item><title>Self-Hosting Break-Even Calculator</title><link>https://techfuelhq.com/tools/selfhost-breakeven/</link><pubDate>Tue, 09 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tools/selfhost-breakeven/</guid><description>&lt;h2 id="how-to-use-this-calculator">How to use this calculator&lt;/h2>
&lt;p>Add each SaaS subscription you currently pay for — or use the presets for the most common services. Then set your hardware budget and the server&amp;rsquo;s idle power draw. The calculator shows your monthly savings, break-even timeline on a 5-year axis, and a year-by-year savings table.&lt;/p>
&lt;p>The hardware cost is shown as a one-time upfront expense. Ongoing costs (electricity, backup storage, domain) are monthly. The break-even point is when cumulative SaaS costs exceed hardware + cumulative ongoing costs.&lt;/p>
&lt;h2 id="what-self-hosting-actually-costs-per-month">What self-hosting actually costs per month&lt;/h2>
&lt;p>The ongoing cost of a minimal self-hosted stack:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Cost item&lt;/th>
&lt;th scope="col">Typical amount&lt;/th>
&lt;th scope="col">Notes&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Electricity&lt;/td>
&lt;td>$1–4/mo&lt;/td>
&lt;td>10–30W idle × 24/7 at $0.13/kWh&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Backblaze B2 backup&lt;/td>
&lt;td>$0.60–2/mo&lt;/td>
&lt;td>~100–300GB after deduplication&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Domain name&lt;/td>
&lt;td>$1–1.25/mo&lt;/td>
&lt;td>$12–15/yr amortized&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Total ongoing&lt;/strong>&lt;/td>
&lt;td>&lt;strong>$3–7/mo&lt;/strong>&lt;/td>
&lt;td>Before hardware amortization&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Compare that to common SaaS bundles:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">SaaS bundle&lt;/th>
&lt;th scope="col">Monthly cost&lt;/th>
&lt;th scope="col">Self-hosted equivalent&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Google One 2TB&lt;/td>
&lt;td>$9.99&lt;/td>
&lt;td>Nextcloud + local storage&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>1Password Families&lt;/td>
&lt;td>$5.99&lt;/td>
&lt;td>Vaultwarden&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Plex Pass&lt;/td>
&lt;td>$6.99&lt;/td>
&lt;td>Jellyfin (no ongoing cost)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>UptimeRobot Solo&lt;/td>
&lt;td>$9.00&lt;/td>
&lt;td>Uptime Kuma&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Dropbox Plus&lt;/td>
&lt;td>$9.99&lt;/td>
&lt;td>Nextcloud&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Zapier Starter&lt;/td>
&lt;td>$19.99&lt;/td>
&lt;td>n8n&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Total&lt;/strong>&lt;/td>
&lt;td>&lt;strong>$61.95/mo&lt;/strong>&lt;/td>
&lt;td>&lt;strong>~$5/mo ongoing&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>A $170 mini PC running this stack breaks even in under 4 months at that savings rate.&lt;/p>
&lt;h2 id="the-real-cost-variables">The real cost variables&lt;/h2>
&lt;p>&lt;strong>Electricity rate&lt;/strong> matters more than most guides acknowledge. At $0.08/kWh (cheap US markets, parts of the South), a 15W mini PC costs $10.50/year. At $0.30/kWh (California, parts of Europe), the same box costs $39/year. Use your actual rate from your electricity bill.&lt;/p>
&lt;p>&lt;strong>Hardware lifetime&lt;/strong> determines how the upfront cost amortizes. A $300 mini PC used for 5 years costs $5/month in hardware amortization. Used for 7 years, $3.57/month. Buying used hardware at half the new price and running it the same duration halves that amortized cost.&lt;/p>
&lt;p>&lt;strong>What you&amp;rsquo;re replacing&lt;/strong> is the most important variable. Replacing $10/month in Google storage with a $800 server takes 6+ years to break even. Replacing $50/month in cloud subscriptions with a $200 mini PC breaks even in under 5 months. This calculator makes that math explicit so you can see whether your specific situation makes sense.&lt;/p>
&lt;h2 id="services-worth-replacing-vs-ones-to-keep">Services worth replacing vs ones to keep&lt;/h2>
&lt;p>The &lt;a href="https://techfuelhq.com/articles/self-hosted-apps-replace-saas-2026/">12 best self-hosted apps guide&lt;/a> covers this in detail, but the quick version:&lt;/p>
&lt;p>&lt;strong>Clear wins&lt;/strong> — services where self-hosting is dramatically cheaper and reliable:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Vaultwarden&lt;/strong> → replaces 1Password Families ($5.99/mo), Bitwarden Premium ($1/mo)&lt;/li>
&lt;li>&lt;strong>Jellyfin&lt;/strong> → replaces Plex Pass ($6.99/mo), no transcoding session limits&lt;/li>
&lt;li>&lt;strong>Uptime Kuma&lt;/strong> → replaces UptimeRobot Solo ($9/mo)&lt;/li>
&lt;li>&lt;strong>Immich&lt;/strong> → replaces Google One 2TB storage ($9.99/mo) if you have local storage&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Context-dependent&lt;/strong> — self-hosting is viable but more effort:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Nextcloud&lt;/strong> → replaces Dropbox/Google Drive, but requires maintenance&lt;/li>
&lt;li>&lt;strong>n8n&lt;/strong> → replaces Zapier, saves $20+/mo but has a steeper setup curve&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Not worth it for most&lt;/strong> — keep paying the SaaS:&lt;/p>
&lt;ul>
&lt;li>Email (deliverability problems from residential IPs, high maintenance)&lt;/li>
&lt;li>CDN / DDoS protection (not worth running your own)&lt;/li>
&lt;li>Calendar sync (too fragile, too little savings vs Fastmail at $3/mo)&lt;/li>
&lt;/ul>
&lt;h2 id="power-usage-and-the-power--cost-calculator">Power usage and the &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">Power &amp;amp; Cost Calculator&lt;/a>&lt;/h2>
&lt;p>The electricity cost here uses the server&amp;rsquo;s idle watt draw 24/7. For a more complete picture of your full stack&amp;rsquo;s electricity cost — including peak load, multiple devices, and 3-year TCO vs cloud — use the &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">Power &amp;amp; Cost Calculator&lt;/a> and bring those numbers back here.&lt;/p>
&lt;p>The break-even math changes significantly based on what you&amp;rsquo;re running. A 10W N100 mini PC is very different from a 150W tower server in electricity cost over 5 years.&lt;/p></description></item><item><title>Using an OLED TV as a PC Monitor in 2026: What Actually Changes</title><link>https://techfuelhq.com/articles/oled-tv-as-pc-monitor-2026/</link><pubDate>Tue, 09 Jun 2026 00:00:00 -0500</pubDate><guid>https://techfuelhq.com/articles/oled-tv-as-pc-monitor-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-06-09 · ~9 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/articles/oled-tv-as-pc-monitor-2026.svg" alt="Spec comparison of three OLED displays used as PC monitors by desk size: 42-inch LG C5 (WOLED, 144Hz, sweet spot, $900-$1,000), 48-inch LG C5 or AORUS FO48U (the FO48U adds DisplayPort), and 55-inch Samsung S95F (QD-OLED, work-plus-media tier), with rows for panel type, refresh rate, inputs, VRR, viewing distance and price, plus a setup checklist." width="1200" height="760" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>Short answer:&lt;/strong> Yes, OLED TVs work as PC monitors — with Game Mode enabled. Input lag drops to roughly 4–5ms at 120Hz, close enough to a dedicated gaming monitor that almost nobody can tell.&lt;/li>
&lt;li>&lt;strong>The tradeoffs:&lt;/strong> No DisplayPort on any OLED TV. Smart TV firmware nags. Higher burn-in risk than a purpose-built monitor without care.&lt;/li>
&lt;li>&lt;strong>Best sizes at a desk:&lt;/strong> 42 inches for most setups. 48–55 inches if you have the depth or an arm.&lt;/li>
&lt;li>&lt;strong>Best picks in 2026:&lt;/strong> LG C5 42-inch (WOLED, 144Hz, widely available). Samsung S95F 55-inch (QD-OLED, if you want 55 inches). Sony Bravia 8 or A95L (if you want Sony's image processing — note the Bravia 9 is Sony's Mini-LED LCD, not an OLED).&lt;/li>
&lt;/ul>
&lt;/div>
&lt;p>There&amp;rsquo;s no dedicated 4K OLED gaming monitor at 55 inches. If you want 55 inches of OLED on your desk, a TV is your only option. At 42–48 inches, you&amp;rsquo;re choosing between a small pool of OLED monitors and a much larger selection of OLED TVs at lower prices. If a big panel isn&amp;rsquo;t the goal and you&amp;rsquo;d rather run two smaller screens, the &lt;a href="https://techfuelhq.com/articles/best-27-32-inch-monitor-homelab-2026/">best 27-32 inch monitor for a homelab&lt;/a> is a different way to fill the same desk.&lt;/p>
&lt;p>The question isn&amp;rsquo;t whether OLED TVs &lt;em>can&lt;/em> work as PC monitors — they can, and millions of people use them that way. The question is what actually changes when you plug one in, and what you need to set up correctly.&lt;/p>
&lt;h2 id="what-to-set-up-before-anything-else-game-mode">What to set up before anything else: Game Mode&lt;/h2>
&lt;p>Every OLED TV adds image processing by default. Noise reduction, motion interpolation, color enhancement — these add latency. On an LG C5 without Game Mode, input lag sits in the 60–120ms range. That&amp;rsquo;s unusable for anything interactive.&lt;/p>
&lt;p>Enable Game Mode and latency drops to approximately 4–5ms at 4K 120Hz (roughly 9–10ms at 60Hz). Dedicated gaming monitors measure a little lower, but at these numbers the difference is imperceptible outside competitive esports.&lt;/p>
&lt;p>Game Mode disables most picture processing. Some people notice a slight image quality difference; most don&amp;rsquo;t at typical desk viewing distances. Dolby Vision Gaming mode (available on LG C4/C5 and some Samsungs) attempts to keep Dolby Vision HDR active while reducing processing latency — it doesn&amp;rsquo;t hit the same 1–2ms floor but reaches 5–10ms, which is fine for non-competitive gaming.&lt;/p>
&lt;p>&lt;strong>First thing to do when you connect an OLED TV to a PC:&lt;/strong> enable Game Mode. Everything else — VRR, HDR, refresh rate — comes after.&lt;/p>
&lt;h2 id="the-displayport-problem">The DisplayPort problem&lt;/h2>
&lt;p>No OLED TV has DisplayPort. LG, Samsung, Sony — all HDMI 2.1 only, across every size and tier.&lt;/p>
&lt;p>HDMI 2.1 supports 4K 120–144Hz with VRR, so for most setups this isn&amp;rsquo;t a functional limitation. The RTX 3080 and later, RX 6800 XT and later all have HDMI 2.1 outputs. Connect HDMI 2.1 from your GPU to the TV&amp;rsquo;s HDMI 2.1 port and you get full bandwidth — our &lt;a href="https://techfuelhq.com/tools/displayport-hdmi-bandwidth-calculator/">DisplayPort &amp;amp; HDMI bandwidth calculator&lt;/a> shows exactly what each version carries at a given resolution and refresh rate.&lt;/p>
&lt;p>Where it matters:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Older GPUs&lt;/strong> — RTX 20-series and earlier, with only HDMI 2.0 and DisplayPort 1.4 (every desktop RTX 30-series card already has HDMI 2.1): you&amp;rsquo;d max out at 4K 60Hz over HDMI. To get 4K 120Hz you&amp;rsquo;d need a DP-to-HDMI 2.1 active adapter, which works with caveats.&lt;/li>
&lt;li>&lt;strong>Multi-PC KVM setups&lt;/strong> — if you&amp;rsquo;re running a KVM that passes DisplayPort signals, an OLED TV won&amp;rsquo;t work without a separate KVM that handles HDMI 2.1.&lt;/li>
&lt;li>&lt;strong>Laptop users&lt;/strong> — many laptops output 4K only over DisplayPort (via USB-C or full DP). Connecting a laptop to an OLED TV at 4K 60Hz works; 4K 120Hz requires the laptop to have an HDMI 2.1 port, which is still uncommon outside gaming laptops.&lt;/li>
&lt;/ul>
&lt;p>If your GPU has HDMI 2.1 (check the spec sheet, not just HDMI 2.0 labeled &amp;ldquo;high-speed&amp;rdquo;), use it and the DisplayPort omission won&amp;rsquo;t affect you.&lt;/p>
&lt;h2 id="vrr-support-what-to-check">VRR support: what to check&lt;/h2>
&lt;p>Modern OLED TVs support variable refresh rate through multiple standards:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>HDMI Forum VRR&lt;/strong> — part of the HDMI 2.1 spec; supported by current Nvidia and AMD drivers natively&lt;/li>
&lt;li>&lt;strong>G-Sync Compatible&lt;/strong> — Nvidia&amp;rsquo;s branding; requires display certification; LG C4/C5 and Samsung S95C/S95F carry this&lt;/li>
&lt;li>&lt;strong>FreeSync Premium&lt;/strong> — AMD&amp;rsquo;s branding; same underlying HDMI Forum VRR in most cases&lt;/li>
&lt;/ul>
&lt;p>In practice: any current GPU with an HDMI 2.1 port gets VRR working with a G-Sync Compatible or FreeSync-labeled OLED TV. Enable G-Sync in the Nvidia control panel (or FreeSync in Radeon Software) and it works.&lt;/p>
&lt;p>Where it breaks down: connecting via HDMI 2.0 (older cards). VRR requires HDMI 2.1 bandwidth; HDMI 2.0 can&amp;rsquo;t carry it at 4K.&lt;/p>
&lt;h2 id="size-at-a-desk-the-real-constraint">Size at a desk: the real constraint&lt;/h2>
&lt;p>OLED TVs come in sizes that gaming monitors don&amp;rsquo;t: 42, 48, 55, 65, 77 inches. The size options are appealing. The viewing distance math is not always friendly.&lt;/p>
&lt;p>The classic 1.5×-the-diagonal rule is for couch TV viewing — apply it at a desk and no TV size works. The practical desk floor is closer to 0.6× the diagonal (the &lt;a href="https://techfuelhq.com/tools/monitor-size-calculator/">monitor size calculator&lt;/a> turns any diagonal into the exact width, height and minimum desk depth), which puts the whole panel inside your field of view without head-turning; deeper is more comfortable for long sessions.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Panel size&lt;/th>
&lt;th scope="col">Comfortable minimum distance&lt;/th>
&lt;th scope="col">What desk depth this needs&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>42 inches&lt;/td>
&lt;td>~24–26 inches&lt;/td>
&lt;td>Standard 24-inch desk with monitor near the back&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>48 inches&lt;/td>
&lt;td>~30–32 inches&lt;/td>
&lt;td>Deep desk (30+ inches) or monitor arm pushed back&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>55 inches&lt;/td>
&lt;td>~42–48 inches&lt;/td>
&lt;td>Arm at full extension, or console-distance setup&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>65 inches&lt;/td>
&lt;td>~60+ inches&lt;/td>
&lt;td>Not a desk monitor; this is a couch TV&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>I use the AORUS FO48U at 36–40 inches, which feels right for a 48-inch panel. At the same desk at 24-inch depth with the monitor at the back edge, 48 inches would be too close.&lt;/p>
&lt;p>The &lt;strong>42-inch size&lt;/strong> is the sweet spot for desk use: fits on standard depth desks, works at typical monitor arm positions, doesn&amp;rsquo;t require a dedicated large-format stand. The LG C4 and C5 at 42 inches are the obvious choices.&lt;/p>
&lt;p>&lt;strong>48 inches&lt;/strong> works on deep desks or with an arm that extends the monitor away from the wall. The AORUS FO48U at 48 inches, an LG C4 48-inch, or an LG C5 48-inch all fit this use case.&lt;/p>
&lt;p>&lt;strong>55 inches&lt;/strong> is workable if the desk allows the monitor to sit at 42–48 inch viewing distance. This usually means a very deep desk, a long-throw arm, or placing the display against a wall and sitting further back than a typical desk setup. Some people run 55-inch panels as a combined work + media display and simply sit at desk-distance for work, closer to TV-distance for movies. It works; it&amp;rsquo;s a commitment.&lt;/p>
&lt;h2 id="burn-in-at-a-desk">Burn-in at a desk&lt;/h2>
&lt;p>The burn-in risk from PC use is higher than from TV use, because PC content has more static elements: taskbars, browser chrome, sidebar panels, persistent status bars in games.&lt;/p>
&lt;p>TVs and monitors both use LG WOLED or Samsung QD-OLED panels with built-in protections. Neither is immune; both are manageable.&lt;/p>
&lt;p>The habits that eliminate most burn-in risk:&lt;/p>
&lt;p>&lt;strong>Dark mode everywhere.&lt;/strong> White productivity backgrounds at high brightness on an OLED are the highest-risk pattern. Dark mode in Windows, dark mode in Chrome/Firefox, dark IDE themes for coding. This cuts the luminance of persistent UI elements dramatically.&lt;/p>
&lt;p>&lt;strong>Hide the taskbar.&lt;/strong> A bright Windows taskbar burning in at the bottom of the screen is the most common OLED burn-in complaint. Auto-hide eliminates this.&lt;/p>
&lt;p>&lt;strong>80% brightness or below for sustained desktop work.&lt;/strong> Full-brightness white backgrounds on OLED are where the risk concentrates. Running at 70–80% brightness cuts risk significantly and most people can&amp;rsquo;t see the difference at typical office distances.&lt;/p>
&lt;p>&lt;strong>Let the pixel refresher run.&lt;/strong> OLED TVs run a pixel compensation cycle when you power them off. This takes several minutes after shutdown. Don&amp;rsquo;t cut power from the outlet immediately — let the cycle complete. On LG TVs this lives under OLED Panel Care as &amp;ldquo;Pixel Cleaning&amp;rdquo; and runs automatically. (TruMotion is unrelated — that&amp;rsquo;s LG&amp;rsquo;s motion-interpolation setting, which you actually want OFF for PC use.)&lt;/p>
&lt;p>With these habits, the expected lifespan for OLED panels in PC monitor use is years, not months. The online horror stories are mostly from setups running 100% brightness white backgrounds without auto-hide taskbars for eight hours a day.&lt;/p>
&lt;h2 id="picks-by-size-in-2026">Picks by size in 2026&lt;/h2>
&lt;p>&lt;strong>42-inch: LG C5 42-inch&lt;/strong>
Current-generation OLED evo panel, 144Hz, four HDMI 2.1 inputs, G-Sync Compatible + FreeSync Premium, WebOS 25 with AirPlay and Apple TV app. Widely available at major retailers at $900–$1,000 new. The C4 42-inch (2024 model) sits at $700–$850 as it clears out — same panel family, worth buying if the price is right.&lt;/p>
&lt;p>&lt;strong>48-inch: LG C5 48-inch or AORUS FO48U&lt;/strong>
If you want a 48-inch TV for PC use: LG C5 48-inch is the current model at ~$1,100 new. If you want a 48-inch monitor with DisplayPort and KVM: the AORUS FO48U, when you can find it.&lt;/p>
&lt;p>&lt;strong>55-inch: Samsung S95F 55-inch&lt;/strong>
Samsung&amp;rsquo;s QD-OLED panels (used in the S95 series — the line jumped from the 2024 S95D straight to the 2025 S95F) hit higher peak brightness than LG WOLED in the 55-inch tier. The S95F is bright enough to hold up in ambient-light rooms. Four HDMI 2.1 inputs, G-Sync Compatible, 144Hz. Check live retail pricing — QD-OLED street prices move fast. If you specifically want the larger panel for mixed work + media use, this is the pick over LG at 55 inches.&lt;/p>
&lt;p>&lt;strong>65-inch and above:&lt;/strong> at this size you&amp;rsquo;re building a media room, not a desk setup. These belong 5+ feet from the viewer. Not the subject of this guide.&lt;/p>
&lt;h2 id="smart-tv-features-bonus-or-annoyance">Smart TV features: bonus or annoyance&lt;/h2>
&lt;p>OLED TVs come with smart TV platforms: LG&amp;rsquo;s WebOS, Samsung&amp;rsquo;s Tizen, Sony&amp;rsquo;s Google TV. In PC monitor use, these are mostly background. You&amp;rsquo;re using the HDMI input; the smart platform doesn&amp;rsquo;t affect that.&lt;/p>
&lt;p>Where it gets annoying: input-switching menus on top of your content, update notifications, occasional &amp;ldquo;sign in to continue&amp;rdquo; prompts from the smart platform, and first-boot setup screens that assume you&amp;rsquo;re setting up a living room TV.&lt;/p>
&lt;p>None of these are dealbreakers. Set the TV up properly once — input labeled &amp;ldquo;PC,&amp;rdquo; Game Mode enabled, smart ads and data collection disabled — and the smart platform mostly disappears.&lt;/p>
&lt;p>The FO48U and purpose-built OLED monitors avoid this by having standard monitor OSD instead of smart TV firmware. If the thought of WebOS nags bothers you, a monitor is cleaner. If you&amp;rsquo;re fine spending 30 minutes on first-boot setup and never seeing it again, a TV works.&lt;/p>
&lt;h2 id="bottom-line">Bottom line&lt;/h2>
&lt;p>OLED TVs are excellent PC monitors if you need sizes that OLED-monitor options don&amp;rsquo;t cover — anything above 48 inches — or if you want a TV at 42–48 inches for less money than an OLED-branded gaming monitor at the same panel quality.&lt;/p>
&lt;p>The things to set before anything else: Game Mode on, G-Sync or FreeSync enabled in GPU software, dark mode across the OS, taskbar hidden. That covers the main failure modes. After that it&amp;rsquo;s just a great-looking 4K display. One thing a TV won&amp;rsquo;t fix at a desk is audio — down-firing TV speakers fire away from you, so plan on the &lt;a href="https://techfuelhq.com/articles/best-soundbar-pc-desk-2026/">best soundbar for a PC desk&lt;/a> to get usable sound up front.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Specs from manufacturer product pages (LG, Samsung, Sony), accessed June 2026. Street pricing from mid-June 2026 Amazon/Best Buy survey. No panel measurements conducted by TechFuelHQ — for calibrated figures, see &lt;a href="https://www.rtings.com" rel="noopener">RTings&lt;/a> and &lt;a href="https://www.tftcentral.co.uk" rel="noopener">TFT Central&lt;/a>.&lt;/em>&lt;/p></description></item><item><title>Ryzen 7 7800X3D vs 9800X3D: Should You Upgrade?</title><link>https://techfuelhq.com/articles/7800x3d-vs-9800x3d-upgrade-2026/</link><pubDate>Mon, 08 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/7800x3d-vs-9800x3d-upgrade-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-08 · ~8 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/articles/7800x3d-vs-9800x3d-upgrade-2026.svg" alt="Spec comparison table of AMD Ryzen 7 7800X3D versus Ryzen 7 9800X3D: Zen 4 5nm vs Zen 5 4nm, both 8C/16T, base 4.2 vs 4.7 GHz, boost 5.0 vs 5.2 GHz, 96MB vs 96MB L3 cache, 120W TDP each, manual overclocking locked vs unlocked, both AM5 socket, 2026 prices $320-380 vs $450-500, with a ~10-20% gaming gap at 1080p/1440p" width="1200" height="760" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>I have a &lt;a href="https://techfuelhq.com/reviews/ryzen-7-7800x3d-review-2026/">Ryzen 7 7800X3D&lt;/a> in my daily rig. I&amp;rsquo;ve looked at the 9800X3D. Here&amp;rsquo;s why I haven&amp;rsquo;t upgraded and what would make me reconsider.&lt;/p>
&lt;h2 id="what-changed-zen-4-to-zen-5">What changed: Zen 4 to Zen 5&lt;/h2>
&lt;p>The 7800X3D is Zen 4 (TSMC 5nm CCD). The 9800X3D is Zen 5 (TSMC 4nm CCD). Both use AM5 socket with DDR5 — the platform is the same.&lt;/p>
&lt;p>Zen 5&amp;rsquo;s improvements relevant to gaming:&lt;/p>
&lt;ul>
&lt;li>Wider front end and decoders (more instructions per clock, IPC uplift)&lt;/li>
&lt;li>Improved branch prediction&lt;/li>
&lt;li>Doubled AVX-512 width (matters for AI workloads, some game engines)&lt;/li>
&lt;li>Higher clock speeds: 5.2 GHz boost on 9800X3D vs 5.0 GHz on 7800X3D&lt;/li>
&lt;/ul>
&lt;p>The IPC improvement between Zen 4 and Zen 5 is approximately 15–20% in compute workloads. In gaming, IPC gains translate more conservatively — games have different instruction mixes and are often memory-latency bound rather than instruction-throughput bound. The 3D V-Cache already addresses memory latency on both chips.&lt;/p>
&lt;p>Published AMD official specifications (&lt;a href="https://www.amd.com/en/products/processors/desktops/ryzen/9000-series/amd-ryzen-7-9800x3d.html" rel="noopener">AMD 9800X3D product page&lt;/a>):&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Spec&lt;/th>
&lt;th scope="col">Ryzen 7 7800X3D&lt;/th>
&lt;th scope="col">Ryzen 7 9800X3D&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Architecture&lt;/td>
&lt;td>Zen 4 (5nm)&lt;/td>
&lt;td>Zen 5 (4nm)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Cores / Threads&lt;/td>
&lt;td>8 / 16&lt;/td>
&lt;td>8 / 16&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Base clock&lt;/td>
&lt;td>4.2 GHz&lt;/td>
&lt;td>4.7 GHz&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Boost clock&lt;/td>
&lt;td>5.0 GHz&lt;/td>
&lt;td>5.2 GHz&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>L3 cache&lt;/td>
&lt;td>96MB&lt;/td>
&lt;td>96MB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>TDP&lt;/td>
&lt;td>120W&lt;/td>
&lt;td>120W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Manual OC&lt;/td>
&lt;td>No&lt;/td>
&lt;td>Yes&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Socket&lt;/td>
&lt;td>AM5&lt;/td>
&lt;td>AM5&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The L3 cache is the same size on both chips: 96MB total (32MB native L3 plus 64MB of stacked 3D V-Cache). The 9800X3D&amp;rsquo;s gaming uplift does not come from more cache — it comes from Zen 5&amp;rsquo;s higher IPC, higher clocks, and AMD&amp;rsquo;s second-generation 3D V-Cache packaging, which moves the cache die beneath the compute die. That repositioning improves thermal transfer and lets the 9800X3D sustain higher clocks than the 7800X3D&amp;rsquo;s cache-on-top design, while keeping the same 96MB working set both chips already benefit from.&lt;/p>
&lt;h2 id="the-gaming-performance-gap">The gaming performance gap&lt;/h2>
&lt;p>Reviews from Digital Foundry, Gamers Nexus, and Hardware Unboxed consistently place the 9800X3D approximately 10–20% ahead of the 7800X3D in 1080p and 1440p CPU-limited gaming. In titles that were already maximizing 3D V-Cache utilization on the 7800X3D, the 9800X3D&amp;rsquo;s higher clocks and Zen 5 IPC continue to show gains on top of the same 96MB cache. At 4K with a high-end GPU, the gap shrinks to 2–5% as GPU becomes the bottleneck.&lt;/p>
&lt;p>For context: the 7800X3D was itself 10–25% faster than the 7700X in gaming. The 9800X3D extends that lead further. To line up any two processors this way, use the &lt;a href="https://techfuelhq.com/tools/cpu-comparison/">CPU Comparison Tool&lt;/a>.&lt;/p>
&lt;h2 id="the-overclocking-advantage">The overclocking advantage&lt;/h2>
&lt;p>The 7800X3D&amp;rsquo;s clocks are factory-locked. You can run PBO (Precision Boost Overdrive) and Curve Optimizer to tune per-core voltage curves, but you cannot set a fixed clock multiplier above AMD&amp;rsquo;s allowed boost ceiling.&lt;/p>
&lt;p>The 9800X3D has unlocked overclocking. Published results show manual OC headroom of 50–150 MHz over the default boost, plus aggressive PBO can push effective frequencies further. For enthusiasts who want to squeeze every frame, this is meaningfully different from the 7800X3D experience. Our &lt;a href="https://techfuelhq.com/articles/9800x3d-undervolt-guide-2026/">9800X3D undervolt guide&lt;/a> walks through the Curve Optimizer settings step by step.&lt;/p>
&lt;h2 id="the-production-workload-difference">The production workload difference&lt;/h2>
&lt;p>This matters more than some 7800X3D owners expect. The 9800X3D&amp;rsquo;s Zen 5 IPC gain shows strongly in multi-threaded workloads: Blender, Handbrake, compilation. The 7800X3D&amp;rsquo;s gaming performance comes partly from the V-Cache (which helps both chips) and partly from the Zen 4 architecture.&lt;/p>
&lt;p>If you do anything computationally intensive outside of gaming — video editing, compilation, running AI models locally, or heavy browser workloads with many tabs — the 9800X3D is noticeably better. If that work is the bigger half of your day rather than a sideline, the next question is the 16-core flagship: &lt;a href="https://techfuelhq.com/articles/9950x3d-vs-9800x3d-gaming-2026/">9950X3D vs 9800X3D&lt;/a> compares the two on gaming and on multi-core throughput. The 7800X3D was always a &amp;ldquo;gaming-first&amp;rdquo; chip that made production work a secondary consideration. The 9800X3D is a genuinely strong chip for both.&lt;/p>
&lt;h2 id="the-upgrade-math">The upgrade math&lt;/h2>
&lt;p>Starting from a 7800X3D:&lt;/p>
&lt;ul>
&lt;li>Sell the 7800X3D: approximately $250–290 (solid used market)&lt;/li>
&lt;li>Buy 9800X3D new: approximately $450–500&lt;/li>
&lt;li>Net cost: approximately $180–250&lt;/li>
&lt;/ul>
&lt;p>No new motherboard. No new RAM. One CPU swap with a BIOS update.&lt;/p>
&lt;p>At $180–250 net cost for the upgrade: is 10–20% gaming performance improvement and unlocked OC worth it?&lt;/p>
&lt;p>&lt;strong>My answer: no, unless your use case changed.&lt;/strong> If you bought the 7800X3D for gaming, and you&amp;rsquo;re still gaming at 1440p or 4K on a GPU that&amp;rsquo;s the actual bottleneck, you&amp;rsquo;re not going to feel that 10–20% improvement. Your GPU is hitting its ceiling before your CPU does. Not sure which part limits you? The &lt;a href="https://techfuelhq.com/tools/pc-bottleneck-calculator/">PC Bottleneck Calculator&lt;/a> estimates whether your CPU or GPU is the bottleneck at each resolution.&lt;/p>
&lt;p>&lt;strong>Upgrade is worth it if:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>You&amp;rsquo;ve added production workloads (video editing, AI inference, compilation) and find the 7800X3D wanting&lt;/li>
&lt;li>You game at 1080p at very high framerates and are consistently CPU-bound&lt;/li>
&lt;li>You want the OC headroom and plan to push it&lt;/li>
&lt;li>You&amp;rsquo;re building fresh and there&amp;rsquo;s no existing 7800X3D to factor in&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Skip it if:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>You game at 1440p or 4K on a mid-to-high-end GPU&lt;/li>
&lt;li>Your 7800X3D system is stable and you&amp;rsquo;re happy with performance&lt;/li>
&lt;li>You&amp;rsquo;d rather put $200 toward a GPU upgrade&lt;/li>
&lt;/ul>
&lt;p>For a worked example of that call, the &lt;a href="https://techfuelhq.com/pc-builds/2500-dollar-7800x3d-rtx-5080-4k-build-2026/">$2,500 RTX 5080 + 7800X3D 4K build&lt;/a> pairs the 7800X3D with a 5080 precisely because at 4K you will not feel the 9800X3D&amp;rsquo;s lead.&lt;/p>
&lt;h2 id="what-about-waiting-for-am5-next-gen">What about waiting for AM5 next-gen?&lt;/h2>
&lt;p>AMD committed to AM5 socket support through at least 2027. There will be a Zen 6 generation on AM5 before the platform retires. If you&amp;rsquo;re holding a 7800X3D, you have one more generational upgrade available on the same platform before you&amp;rsquo;d need a new board and RAM. That&amp;rsquo;s the 9800X3D now, and presumably a next-gen 3D V-Cache chip in 2025–2026.&lt;/p>
&lt;p>The 7800X3D → 9800X3D upgrade makes more sense as a &amp;ldquo;last upgrade before platform change&amp;rdquo; argument than it does as an immediate-value proposition at 2026 prices.&lt;/p>
&lt;hr>
&lt;p>&lt;em>For the full 7800X3D context, the &lt;a href="https://techfuelhq.com/reviews/ryzen-7-7800x3d-review-2026/">Ryzen 7 7800X3D long-term review&lt;/a> covers real gaming thermals, power draw, and 2026 positioning. The &lt;a href="https://techfuelhq.com/reviews/rog-strix-b650a-review-2026/">ROG STRIX B650-A review&lt;/a> covers the AM5 platform the 9800X3D drops into without modification.&lt;/em>&lt;/p></description></item><item><title>Best Soundbar for a PC Desk Setup in 2026 (Not a TV Stand)</title><link>https://techfuelhq.com/articles/best-soundbar-pc-desk-2026/</link><pubDate>Sun, 07 Jun 2026 00:00:00 -0500</pubDate><guid>https://techfuelhq.com/articles/best-soundbar-pc-desk-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-06-07 · ~8 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/articles/best-soundbar-pc-desk-2026.svg" alt="Ranked picks for the best PC desk soundbar in 2026: Sonos Arc Ultra top pick at about $999, Bose Smart Soundbar 300 best compact at about $379, Yamaha SR-B30A best budget at about $249, and Samsung HW-Q600C for the Samsung ecosystem at about $349." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>Top pick for a PC desk:&lt;/strong> Sonos Arc Ultra (~$999) — Dolby Atmos, room calibration, excellent at 3–8 feet. Best if you're treating it as a combined music/gaming/media setup.&lt;/li>
&lt;li>&lt;strong>Best compact pick:&lt;/strong> Bose Smart Soundbar 300 (~$379) — fits cleanly under a 27–48-inch monitor, good near-field performance, no sub needed for most desk use.&lt;/li>
&lt;li>&lt;strong>Best budget option:&lt;/strong> Yamaha SR-B30A (~$249) — Dolby Atmos, slim profile, works well at close range without requiring a subwoofer add-on.&lt;/li>
&lt;li>&lt;strong>Honest alternative:&lt;/strong> A $200–$300 pair of active desktop speakers beats most soundbars under $400 for near-field listening at a desk.&lt;/li>
&lt;/ul>
&lt;/div>
&lt;p>Every soundbar buying guide assumes you&amp;rsquo;re standing in a living room with a TV on the wall and a sofa ten feet away. The guides are written for that setup because that&amp;rsquo;s where most soundbars live.&lt;/p>
&lt;p>A PC desk setup is different in every way that matters for audio:&lt;/p>
&lt;ul>
&lt;li>Viewing distance: 24–40 inches instead of 8–12 feet&lt;/li>
&lt;li>Placement: on a desk or monitor arm, not on a floor-level TV stand&lt;/li>
&lt;li>Content mix: gaming, music, video calls, and movies in equal measure&lt;/li>
&lt;li>Spatial audio geometry: you&amp;rsquo;re sitting directly in front, not in a triangulated sweet spot&lt;/li>
&lt;/ul>
&lt;p>This guide is specifically for desk use. Most of what&amp;rsquo;s below wouldn&amp;rsquo;t appear in a TV soundbar guide.&lt;/p>
&lt;h2 id="the-desk-physics-problem">The desk physics problem&lt;/h2>
&lt;p>Soundbars are designed for a specific physical scenario: the bar sits below a TV at floor height, fires forward and upward, and the listener sits 8–12 feet back with ears slightly below the height of the bar. This geometry is why upward-firing Dolby Atmos height channels work — they&amp;rsquo;re bouncing off the ceiling before they reach you.&lt;/p>
&lt;p>At a desk:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>You&amp;rsquo;re 2–3 feet from the soundbar&lt;/strong>, not 10 feet&lt;/li>
&lt;li>&lt;strong>The bar sits on the desk or under the monitor&lt;/strong>, roughly at chest height when seated&lt;/li>
&lt;li>&lt;strong>High frequencies hit you more directly&lt;/strong> — they don&amp;rsquo;t diffuse as much before reaching your ears, which makes treble harsh on units that sound balanced at living room distances&lt;/li>
&lt;li>&lt;strong>Dolby Atmos height channels&lt;/strong> bouncing off an 8-foot ceiling from 3 feet away don&amp;rsquo;t reach your ears in the way they&amp;rsquo;re designed to — the effect is minimal or absent&lt;/li>
&lt;li>&lt;strong>Bass reinforcement from the desk surface&lt;/strong> can muddy low frequencies on units with strong bass response&lt;/li>
&lt;/ul>
&lt;p>None of this means soundbars don&amp;rsquo;t work at desks. It means you&amp;rsquo;re looking for different characteristics than you&amp;rsquo;d optimize for in a living room.&lt;/p>
&lt;p>What works well at close range: &lt;strong>tight midrange&lt;/strong>, &lt;strong>controlled treble&lt;/strong> (not harsh up close), &lt;strong>moderate bass&lt;/strong> (not overtuned). What doesn&amp;rsquo;t: units optimized for distant listening with forward-projected high-output treble.&lt;/p>
&lt;h2 id="the-desktop-speaker-alternative">The desktop speaker alternative&lt;/h2>
&lt;p>Before the picks: at $200–$400, a pair of active desktop speakers usually beats a soundbar for near-field desk listening.&lt;/p>
&lt;p>The Edifier R1280DB (&lt;del>$150) is a legitimate product that pairs well with a PC desk. The Edifier R2000DB (&lt;/del>$230) or Audioengine A2+ (~$270) are a step above. At the $300–$400 range, studio monitor pairs (Yamaha HS5, KRK Rokit 5 G4) are accurate enough that mixing engineers use them for work.&lt;/p>
&lt;p>If your desk has room for two speakers and a cable run is acceptable, a speaker pair at this price beats soundbars below $400 for music and gaming clarity. The counterargument: soundbars are one unit, usually with Bluetooth, and they sit cleanly under a monitor without requiring stands or separate power cables for each unit.&lt;/p>
&lt;p>If cable management is the priority, soundbars make sense. If sound quality is the priority, speakers first.&lt;/p>
&lt;h2 id="the-picks">The picks&lt;/h2>
&lt;h3 id="sonos-arc-ultra-999-usd">Sonos Arc Ultra (~$999 USD)&lt;/h3>
&lt;p>&lt;strong>Best for:&lt;/strong> gaming + music + movies as a combined use case, at desks where the soundbar is 36+ inches from your ears&lt;/p>
&lt;p>Sonos redesigned the Arc with the Arc Ultra in 2025, adding a new Sound Motion driver for deeper bass without a subwoofer. At desk distances (2–4 feet), the Arc Ultra doesn&amp;rsquo;t overwhelm — the Trueplay room calibration system uses your phone mic to tune the output to the listening position. This matters more at a desk than in a living room because small distance changes affect tonal balance significantly.&lt;/p>
&lt;p>Dolby Atmos on the Arc Ultra works better at desk distances than most Atmos soundbars because the ceiling-bounce channels are supplemented by front-firing height elements. At a desk 3–4 feet away the Atmos effect is noticeable in compatible content.&lt;/p>
&lt;p>Connection for PC use: HDMI eARC (requires a monitor or TV with ARC port), optical, or WiFi streaming via Sonos app. Most PC monitors don&amp;rsquo;t have ARC, so OLED TV users or people with ARC-capable monitors benefit most from the full connection.&lt;/p>
&lt;p>At $999 it&amp;rsquo;s the expensive pick. If you&amp;rsquo;re treating the desk setup as a full media environment and want a single high-quality audio device that handles everything, it&amp;rsquo;s defensible.&lt;/p>
&lt;p>&lt;strong>Downsides:&lt;/strong> expensive, requires ARC or optical for best quality (Bluetooth is secondary on Sonos), and some users find TruePlay calibration takes a few iterations to get right in a desk environment.&lt;/p>
&lt;hr>
&lt;h3 id="bose-smart-soundbar-300-379-usd">Bose Smart Soundbar 300 (~$379 USD)&lt;/h3>
&lt;p>&lt;strong>Best for:&lt;/strong> compact clean desk setups, monitors from 27–48 inches, users who want simplicity over features&lt;/p>
&lt;p>The 300 is Bose&amp;rsquo;s compact entry. It&amp;rsquo;s 26 inches wide (not 40+ like the flagship models), which means it fits cleanly under most monitors without overhanging the desk edges. The drivers are voiced for near-field listening better than most soundbars at this price — not harsh at close range.&lt;/p>
&lt;p>Connectivity: HDMI ARC, optical, Bluetooth, WiFi (Bose app). Same ARC limitation as the Arc Ultra for PC monitors without ARC.&lt;/p>
&lt;p>One spec caveat: the Soundbar 300 has no Dolby Atmos support at all — Bose&amp;rsquo;s Atmos lineup starts at the Smart Soundbar 600. The 300 is a stereo + virtualized-surround unit. For music and gaming at a desk that&amp;rsquo;s genuinely fine; if Atmos-mixed movies matter to you, step up to the 600 or the Arc Ultra.&lt;/p>
&lt;p>At $379 it hits the right price-to-size balance for most desk setups. The compact form factor is the main reason to pick it over the competition — it doesn&amp;rsquo;t dominate the desk and sounds clean up close.&lt;/p>
&lt;p>&lt;strong>Downsides:&lt;/strong> No built-in sub; Bose&amp;rsquo;s sub add-on is $449, which doubles the cost and makes the desk setup physically larger. At $379 without the sub, bass is present but not deep.&lt;/p>
&lt;hr>
&lt;h3 id="yamaha-sr-b30a-249-usd">Yamaha SR-B30A (~$249 USD)&lt;/h3>
&lt;p>&lt;strong>Best for:&lt;/strong> budget desk setups where soundbar simplicity is the goal and a subwoofer isn&amp;rsquo;t needed&lt;/p>
&lt;p>The SR-B30A is a 2.1 soundbar — two main channels plus dual built-in subwoofers, with Dolby Atmos delivered by height virtualization rather than physical up-firing drivers — at a competitive price. The slim profile (2.4 inches tall) sits under most monitors without blocking the bottom bezel. At close range, Yamaha&amp;rsquo;s voicing on the B30A is conservative — less treble emphasis than some competing units, which translates to a more natural sound at 2–3 feet.&lt;/p>
&lt;p>Connectivity: HDMI ARC, optical, Bluetooth. No WiFi streaming — it&amp;rsquo;s a local-connection only device.&lt;/p>
&lt;p>Dolby Atmos support from manufacturer spec — virtualized, since there are no physical height drivers. At desk distances the virtualization widens the soundstage over plain stereo but doesn&amp;rsquo;t reproduce a real Atmos height effect (the same physics limitation applies to every desk soundbar).&lt;/p>
&lt;p>At $249 it&amp;rsquo;s the value option if you want Atmos support, a clean slim profile, and Bluetooth without spending into the $400–$1,000 range. It doesn&amp;rsquo;t outperform a $250 desktop speaker pair for music listening, but it wins on simplicity and footprint.&lt;/p>
&lt;p>&lt;strong>Downsides:&lt;/strong> No WiFi/streaming app, HDMI ARC connection only for full quality (optical is fallback), bass is thin at desk volumes without adding a sub.&lt;/p>
&lt;hr>
&lt;h3 id="samsung-hw-q600c-349-usd-sale-priced-in-2026">Samsung HW-Q600C (~$349 USD, sale-priced in 2026)&lt;/h3>
&lt;p>&lt;strong>Best for:&lt;/strong> Samsung ecosystem users who want Dolby Atmos + DTS:X and have a Samsung TV as their monitor&lt;/p>
&lt;p>The Q600C is a 3.1.2 unit — front left/center/right plus two upward Atmos channels, with a wired subwoofer. The subwoofer ships included, which is an advantage at this price over the Bose 300.&lt;/p>
&lt;p>At a desk the bundled sub creates challenges: it goes on the floor under the desk, connected by a wireless link. The bass is good — deeper than the subwoofer-less alternatives — but the soundbar at chest height plus sub below creates an uneven vertical bass profile that some people notice as disconnected low end.&lt;/p>
&lt;p>Best with Samsung TVs: the Q-Symphony feature combines TV speakers with the soundbar&amp;rsquo;s output when connected via HDMI to a compatible Samsung TV. If you&amp;rsquo;re using a Samsung OLED TV as your PC monitor, this integration matters.&lt;/p>
&lt;p>&lt;strong>Downsides:&lt;/strong> The subwoofer adds a floor-level unit that takes desk space to route around. Not ideal for tight desk setups. Samsung&amp;rsquo;s smart audio features are most useful with Samsung TVs specifically.&lt;/p>
&lt;hr>
&lt;h2 id="connection-what-matters-for-pc">Connection: what matters for PC&lt;/h2>
&lt;p>Most PC monitors don&amp;rsquo;t have HDMI ARC. This limits soundbar connections to:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Bluetooth&lt;/strong> — works, but Bluetooth audio latency varies and it adds compression artifacts. Apt-X or Apt-X HD Bluetooth reduces this; standard SBC Bluetooth is noticeable in video sync.&lt;/li>
&lt;li>&lt;strong>Optical toslink&lt;/strong> — reliable, supports Dolby Digital 5.1, limited to 24-bit/192kHz stereo or Dolby Digital 5.1 (not Dolby Atmos uncompressed)&lt;/li>
&lt;li>&lt;strong>3.5mm analog&lt;/strong> — simple, zero latency, no compression, but bypasses the soundbar&amp;rsquo;s Atmos processing entirely&lt;/li>
&lt;li>&lt;strong>HDMI ARC via a TV&lt;/strong> — if your display is an OLED TV with ARC (LG C-series, Samsung S-series, Sony Bravia), you get full eARC with uncompressed Dolby Atmos passthrough from the PC&lt;/li>
&lt;/ul>
&lt;p>If your setup is a PC monitor (not a TV) and optical is your best connection: the Yamaha SR-B30A and Bose 300 both handle optical well. The Sonos Arc Ultra de-prioritizes optical; its best performance comes from HDMI ARC or WiFi.&lt;/p>
&lt;p>If you&amp;rsquo;re running an OLED TV as your monitor: ARC is available and unlocks full Dolby Atmos on any of these picks.&lt;/p>
&lt;h2 id="who-should-and-shouldnt-buy-a-soundbar">Who should and shouldn&amp;rsquo;t buy a soundbar&lt;/h2>
&lt;p>&lt;strong>Soundbar is the right call if:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Desk cleanliness is the priority — one unit, one cable, no speaker stands&lt;/li>
&lt;li>You want Bluetooth for phone audio without switching cables&lt;/li>
&lt;li>You use the display for mixed PC + media content and want Dolby Atmos capability&lt;/li>
&lt;li>Your desk has no room for speaker stands or a speaker on each side of the monitor&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Desktop speakers are the better call if:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Audio quality per dollar is the priority at this budget&lt;/li>
&lt;li>You&amp;rsquo;re listening primarily to music and critical sound quality matters&lt;/li>
&lt;li>You don&amp;rsquo;t need Bluetooth or smart features&lt;/li>
&lt;li>You have room for two speakers and don&amp;rsquo;t mind the cable run&lt;/li>
&lt;/ul>
&lt;p>A $200 Edifier R1280DB or R2000DB out-performs most soundbars under $400 for music and gaming at near-field distances. The soundbar wins on form factor and smart features, not on fidelity at close range.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Specs and pricing from manufacturer product pages and mid-June 2026 retailer survey (Amazon, Best Buy, Sonos.com, Bose.com, Yamaha.com). No audio measurements conducted by TechFuelHQ — for objective speaker measurements and listening evaluations, see &lt;a href="https://www.rtings.com/soundbar" rel="noopener">Rtings.com&lt;/a> and &lt;a href="https://www.soundandvision.com" rel="noopener">Sound &amp;amp; Vision&lt;/a>.&lt;/em>&lt;/p></description></item><item><title>Jellyfin vs Plex (2026): The Honest Comparison</title><link>https://techfuelhq.com/articles/jellyfin-vs-plex-2026/</link><pubDate>Sun, 07 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/jellyfin-vs-plex-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-07 · ~12 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/articles/jellyfin-vs-plex-2026.svg" alt="Side-by-side 2026 feature comparison table of Jellyfin versus Plex media servers: cost, account requirement, free vs Plex Pass hardware transcoding, mobile apps, offline sync, Live TV and DVR, 4K HDR passthrough, remote access, skip intro, watch history, and open-source licensing" width="1200" height="760" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>Both run your personal media library over your network. Both transcode video on the fly. Both have mobile apps. The differences show up in three places: what you pay, what you hand the server vendor, and how much setup friction you&amp;rsquo;ll accept. Here is the whole argument on one screen before we get into the weeds.&lt;/p>
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;padding:26px 22px 22px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;border-radius:8px;">
&lt;div style="text-align:center;margin-bottom:22px;">&lt;div style="font-size:18px;font-weight:600;letter-spacing:-0.3px;">The two philosophies, side by side&lt;/div>&lt;div style="font-size:12px;color:#9a9ab5;margin-top:5px;">Same job — your media, your network. Opposite trade-offs.&lt;/div>&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;gap:16px;max-width:640px;margin:0 auto;">
&lt;div style="flex:1 1 260px;background:linear-gradient(160deg,rgba(164,87,201,0.14),rgba(0,164,220,0.06));border:1px solid rgba(164,87,201,0.35);border-radius:12px;padding:18px 18px 16px;">
&lt;div style="font-size:15px;font-weight:700;color:#c07fe0;letter-spacing:0.02em;">JELLYFIN&lt;/div>
&lt;div style="font-size:11.5px;color:#8a8aa5;margin:2px 0 14px;text-transform:uppercase;letter-spacing:0.08em;">Free · Open · Yours&lt;/div>
&lt;div style="display:flex;justify-content:space-between;padding:7px 0;border-bottom:1px solid rgba(255,255,255,0.05);">&lt;span style="font-size:12px;color:#8a8aa5;">Cost&lt;/span>&lt;span style="font-size:13px;font-weight:600;color:#5dca7a;">$0 forever&lt;/span>&lt;/div>
&lt;div style="display:flex;justify-content:space-between;padding:7px 0;border-bottom:1px solid rgba(255,255,255,0.05);">&lt;span style="font-size:12px;color:#8a8aa5;">Account&lt;/span>&lt;span style="font-size:13px;font-weight:600;color:#5dca7a;">None required&lt;/span>&lt;/div>
&lt;div style="display:flex;justify-content:space-between;padding:7px 0;border-bottom:1px solid rgba(255,255,255,0.05);">&lt;span style="font-size:12px;color:#8a8aa5;">HW transcoding&lt;/span>&lt;span style="font-size:13px;font-weight:600;color:#5dca7a;">Free&lt;/span>&lt;/div>
&lt;div style="display:flex;justify-content:space-between;padding:7px 0;border-bottom:1px solid rgba(255,255,255,0.05);">&lt;span style="font-size:12px;color:#8a8aa5;">Remote access&lt;/span>&lt;span style="font-size:13px;font-weight:600;color:#c8c8dc;">You set it up&lt;/span>&lt;/div>
&lt;div style="display:flex;justify-content:space-between;padding:7px 0;">&lt;span style="font-size:12px;color:#8a8aa5;">App polish&lt;/span>&lt;span style="font-size:13px;font-weight:600;color:#e0b050;">Good, uneven&lt;/span>&lt;/div>
&lt;/div>
&lt;div style="flex:1 1 260px;background:linear-gradient(160deg,rgba(229,160,13,0.13),rgba(204,123,25,0.05));border:1px solid rgba(229,160,13,0.35);border-radius:12px;padding:18px 18px 16px;">
&lt;div style="font-size:15px;font-weight:700;color:#e5a00d;letter-spacing:0.02em;">PLEX&lt;/div>
&lt;div style="font-size:11.5px;color:#8a8aa5;margin:2px 0 14px;text-transform:uppercase;letter-spacing:0.08em;">Polished · Paywalled · Cloud-tied&lt;/div>
&lt;div style="display:flex;justify-content:space-between;padding:7px 0;border-bottom:1px solid rgba(255,255,255,0.05);">&lt;span style="font-size:12px;color:#8a8aa5;">Cost&lt;/span>&lt;span style="font-size:13px;font-weight:600;color:#e0b050;">Free tier + Pass&lt;/span>&lt;/div>
&lt;div style="display:flex;justify-content:space-between;padding:7px 0;border-bottom:1px solid rgba(255,255,255,0.05);">&lt;span style="font-size:12px;color:#8a8aa5;">Account&lt;/span>&lt;span style="font-size:13px;font-weight:600;color:#e07a7a;">Always required&lt;/span>&lt;/div>
&lt;div style="display:flex;justify-content:space-between;padding:7px 0;border-bottom:1px solid rgba(255,255,255,0.05);">&lt;span style="font-size:12px;color:#8a8aa5;">HW transcoding&lt;/span>&lt;span style="font-size:13px;font-weight:600;color:#e0b050;">Plex Pass only&lt;/span>&lt;/div>
&lt;div style="display:flex;justify-content:space-between;padding:7px 0;border-bottom:1px solid rgba(255,255,255,0.05);">&lt;span style="font-size:12px;color:#8a8aa5;">Remote access&lt;/span>&lt;span style="font-size:13px;font-weight:600;color:#5dca7a;">Relay, zero-config&lt;/span>&lt;/div>
&lt;div style="display:flex;justify-content:space-between;padding:7px 0;">&lt;span style="font-size:12px;color:#8a8aa5;">App polish&lt;/span>&lt;span style="font-size:13px;font-weight:600;color:#5dca7a;">Best in class&lt;/span>&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="text-align:right;margin-top:14px;font-size:10px;color:#44445a;">techfuelhq.com · verified July 2026&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR · The 10-second answer&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>Pick Jellyfin if&lt;/strong> your first question is "does this cost anything?" — it is genuinely free forever, transcoding included, no account, nothing phones home.&lt;/li>
&lt;li>&lt;strong>Pick Plex if&lt;/strong> your first question is "will this just work for my non-technical family on their TV?" — the apps and the zero-config remote relay are worth the account and the subscription.&lt;/li>
&lt;li>&lt;strong>The 2026 wrinkle:&lt;/strong> Plex tripled its lifetime pass to $749.99 on July 1, 2026 and moved remote streaming behind the paywall — which is why half the internet is mid-migration to Jellyfin right now.&lt;/li>
&lt;li>&lt;strong>Not sure?&lt;/strong> Run both on the same library for a week (they don't touch your files) and keep the one your household actually uses.&lt;/li>
&lt;/ul>
&lt;/div>
&lt;h2 id="why-2026-is-the-year-everyone-reconsidered-plex">Why 2026 is the year everyone reconsidered Plex&lt;/h2>
&lt;p>For a decade the honest answer to &amp;ldquo;Jellyfin or Plex?&amp;rdquo; was &amp;ldquo;Plex, unless you&amp;rsquo;re a tinkerer.&amp;rdquo; Plex was more polished, and a one-time lifetime pass capped the cost. That calculus broke in 2026.&lt;/p>
&lt;p>On July 1, 2026, Plex tripled the price of its lifetime pass from $249.99 to &lt;strong>$749.99&lt;/strong>. The old $249.99 figure didn&amp;rsquo;t disappear — it became a new &lt;em>5-year&lt;/em> plan, so the number people used to pay once now buys you five years. That followed an April 2025 change that moved remote streaming of your own library behind the paywall: the server owner needs a Plex Pass, or each remote viewer needs a $2.99/mo Remote Watch Pass. A feature Plex gave away for years became a recurring charge.&lt;/p>
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;padding:28px 22px 22px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;border-radius:8px;">
&lt;div style="text-align:center;margin-bottom:26px;">&lt;div style="font-size:18px;font-weight:600;letter-spacing:-0.3px;">Lifetime Plex Pass — the price that broke the deal&lt;/div>&lt;div style="font-size:12px;color:#9a9ab5;margin-top:5px;">One-time lifetime license, US pricing&lt;/div>&lt;/div>
&lt;div style="display:flex;align-items:flex-end;justify-content:center;gap:10px;max-width:520px;margin:0 auto;">
&lt;div style="flex:1;text-align:center;">&lt;div style="font-size:17px;font-weight:700;color:#8a8aa5;">$119.99&lt;/div>&lt;div style="background:linear-gradient(180deg,#3a3a55,#26263c);height:44px;border-radius:6px 6px 0 0;margin:8px 0 0;">&lt;/div>&lt;div style="font-size:10.5px;color:#7a7a96;padding-top:6px;border-top:1px solid rgba(255,255,255,0.08);">before&lt;br>Apr 2025&lt;/div>&lt;/div>
&lt;div style="flex:1;text-align:center;">&lt;div style="font-size:17px;font-weight:700;color:#c8c8dc;">$249.99&lt;/div>&lt;div style="background:linear-gradient(180deg,#e0b050,#b8862f);height:92px;border-radius:6px 6px 0 0;margin:8px 0 0;">&lt;/div>&lt;div style="font-size:10.5px;color:#7a7a96;padding-top:6px;border-top:1px solid rgba(255,255,255,0.08);">Apr 2025 –&lt;br>Jun 2026&lt;/div>&lt;/div>
&lt;div style="flex:1;text-align:center;">&lt;div style="font-size:19px;font-weight:800;color:#e5a00d;">$749.99&lt;/div>&lt;div style="background:linear-gradient(180deg,#e5a00d,#cc7b19);height:220px;border-radius:6px 6px 0 0;margin:8px 0 0;box-shadow:0 0 24px rgba(229,160,13,0.25);">&lt;/div>&lt;div style="font-size:10.5px;color:#e0b050;font-weight:600;padding-top:6px;border-top:1px solid rgba(229,160,13,0.25);">Jul 1, 2026&lt;br>onward&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="text-align:center;margin-top:20px;font-size:12.5px;color:#c8c8dc;max-width:460px;margin-left:auto;margin-right:auto;line-height:1.5;">&lt;strong style="color:#e5a00d;">+525%&lt;/strong> over the pre-2025 price. Meanwhile Jellyfin — every feature, every device — has cost &lt;strong style="color:#5dca7a;">$0&lt;/strong> the entire time.&lt;/div>
&lt;div style="text-align:right;margin-top:14px;font-size:10px;color:#44445a;">techfuelhq.com · Plex Pass pricing verified July 2026&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>None of this makes Plex bad software — it is still the most polished media server you can run. But it reframes the question. When the paid tier was a one-time $120, &amp;ldquo;just buy Plex Pass&amp;rdquo; was easy advice. At $749.99 lifetime, or a subscription that never ends, a free-and-open alternative that does 90% of the same job gets a very long second look. That is the entire reason Jellyfin&amp;rsquo;s mindshare exploded in 2026, and it is worth understanding &lt;em>before&lt;/em> the feature-by-feature breakdown, because it colors every trade-off below.&lt;/p>
&lt;h2 id="feature-comparison">Feature comparison&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Feature&lt;/th>
&lt;th scope="col">Jellyfin&lt;/th>
&lt;th scope="col">Plex Free&lt;/th>
&lt;th scope="col">Plex Pass&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Cost&lt;/td>
&lt;td>Free forever&lt;/td>
&lt;td>Free&lt;/td>
&lt;td>$6.99/mo · $69.99/yr · $749.99 lifetime · $249.99/5yr&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Account required&lt;/td>
&lt;td>No&lt;/td>
&lt;td>Yes&lt;/td>
&lt;td>Yes&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Hardware transcoding&lt;/td>
&lt;td>Free&lt;/td>
&lt;td>—&lt;/td>
&lt;td>✓&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Mobile apps&lt;/td>
&lt;td>Free&lt;/td>
&lt;td>Limited&lt;/td>
&lt;td>Full&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Offline sync (mobile)&lt;/td>
&lt;td>Free&lt;/td>
&lt;td>—&lt;/td>
&lt;td>✓&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Live TV + DVR&lt;/td>
&lt;td>Free&lt;/td>
&lt;td>—&lt;/td>
&lt;td>✓&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>4K HDR passthrough&lt;/td>
&lt;td>Free&lt;/td>
&lt;td>Free&lt;/td>
&lt;td>Free&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Shared users (home)&lt;/td>
&lt;td>Free&lt;/td>
&lt;td>✓&lt;/td>
&lt;td>✓&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Remote access&lt;/td>
&lt;td>Free (via Tailscale/NPM)&lt;/td>
&lt;td>— (Remote Watch Pass)&lt;/td>
&lt;td>Plex Relay&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Skip intro/credits&lt;/td>
&lt;td>Plugin (free)&lt;/td>
&lt;td>—&lt;/td>
&lt;td>✓&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Watch history sync&lt;/td>
&lt;td>Local only&lt;/td>
&lt;td>Plex servers&lt;/td>
&lt;td>Plex servers&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Open source&lt;/td>
&lt;td>Yes (GPL-2.0)&lt;/td>
&lt;td>No&lt;/td>
&lt;td>No&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;h2 id="hardware-transcoding-the-most-important-practical-difference">Hardware transcoding: the most important practical difference&lt;/h2>
&lt;p>Hardware transcoding is when the media server uses the GPU or integrated graphics to convert video on the fly, rather than using CPU cycles. Without it, a 4K HEVC stream being transcoded to H.264 for an older TV can peg a CPU at 100% and still struggle to keep up in real time.&lt;/p>
&lt;p>&lt;strong>Jellyfin:&lt;/strong> hardware transcoding is free. Add your NVIDIA/Intel/AMD GPU in the server settings, done. No account, no subscription.&lt;/p>
&lt;p>&lt;strong>Plex Free:&lt;/strong> hardware transcoding is locked. You can direct play (no transcoding needed) or software-transcode (CPU only). On modest server hardware, this means 4K → 1080p transcoding is slow or impossible without Plex Pass.&lt;/p>
&lt;p>&lt;strong>Plex Pass:&lt;/strong> hardware transcoding unlocked. Works the same as Jellyfin&amp;rsquo;s implementation.&lt;/p>
&lt;p>If you&amp;rsquo;re running a homelab server with an Intel N-series mini PC (N100, N305) or a dedicated small server, this is the most practically important difference. The N100&amp;rsquo;s Quick Sync handles simultaneous 4K streams that would demolish the same CPU&amp;rsquo;s software transcode capacity. With Jellyfin, that&amp;rsquo;s free. With Plex, it requires Plex Pass.&lt;/p>
&lt;p>The &lt;a href="https://techfuelhq.com/articles/best-gpu-plex-jellyfin-transcode-2026/">GPU transcoding guide&lt;/a> covers hardware selection for both servers in detail.&lt;/p>
&lt;h2 id="privacy-and-accounts">Privacy and accounts&lt;/h2>
&lt;p>Plex requires an account. Every time you watch something, your watch history syncs to Plex&amp;rsquo;s servers. Plex uses this data for recommendations, and the company has a business model that includes advertising in the free Plex media surfaces (Plex Discover, Plex TV). Your self-hosted library is separate from the Plex streaming catalog, but the account tie-in means Plex knows what you watch and when.&lt;/p>
&lt;p>Jellyfin requires nothing. No account, no telemetry, no data leaving your server. User accounts exist only on your local server. Watch history is local. Jellyfin&amp;rsquo;s development is funded by donations, not by advertising or user data.&lt;/p>
&lt;p>This matters more to some people than others. If privacy is a priority, Jellyfin is the clear choice. If you don&amp;rsquo;t care about Plex knowing you watched Succession three times, the account is a minor inconvenience.&lt;/p>
&lt;h2 id="remote-access">Remote access&lt;/h2>
&lt;p>&lt;strong>Plex:&lt;/strong> remote access works out of the box through Plex Relay — Plex&amp;rsquo;s own relay servers tunnel your connection even without a configured reverse proxy or port forwarding. The catch since 2025: remote streaming of a personal library is no longer free. The server owner needs a Plex Pass, or each remote viewer needs a Remote Watch Pass ($2.99/mo). For non-technical users sharing Plex with family, the zero-configuration relay is still the feature that makes Plex worth the friction — but now someone has to pay for it. Once that&amp;rsquo;s covered, the family member installs the Plex app, logs into the shared home, and streams from their phone at Grandma&amp;rsquo;s house without any network configuration.&lt;/p>
&lt;p>&lt;strong>Jellyfin:&lt;/strong> remote access requires setup. The two good options are:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/nginx-proxy-manager-homelab-2026/">Nginx Proxy Manager&lt;/a> with Let&amp;rsquo;s Encrypt: your server gets a domain with SSL and is reachable over HTTPS from anywhere&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/tailscale-remote-access-homelab-2026/">Tailscale&lt;/a>: your devices are on a private WireGuard mesh, and your Jellyfin server is reachable at its Tailscale IP&lt;/li>
&lt;/ul>
&lt;p>Both work well. Neither requires open ports or complex router configuration. But both require you to set them up, and sharing with a non-technical family member means they need to install Tailscale or you need to expose Jellyfin through a proper reverse proxy with a domain.&lt;/p>
&lt;h2 id="client-app-quality">Client app quality&lt;/h2>
&lt;p>This is Plex&amp;rsquo;s clearest advantage. The Plex app on Roku, Fire TV, Apple TV, and iOS/Android is polished. Playback is reliable. The UI feels like a commercial product because it is one.&lt;/p>
&lt;p>Jellyfin&amp;rsquo;s apps range from excellent (Android TV, iOS) to functional-but-rough (Roku, LG webOS). The Kodi plugin for Jellyfin is solid if you&amp;rsquo;re willing to run Kodi. There&amp;rsquo;s also Swiftfin (third-party iOS client) and Infuse (paid, but excellent on Apple platforms, supports Jellyfin as a backend).&lt;/p>
&lt;p>For a homelab enthusiast running everything through a proper client: Jellyfin apps are good enough. For sharing with family members who want an experience closer to Netflix: Plex&amp;rsquo;s consistency across clients is a real advantage.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>What hands-on testing actually shows.&lt;/strong> The two servers are closer than the &amp;ldquo;polished vs rough&amp;rdquo; framing suggests. In a November 2025 head-to-head, &lt;a href="https://www.homedock.cloud/blog/self-hosting/plex-vs-jellyfin-2026/" rel="noopener">HomeDock OS&lt;/a> ran both on the same Intel i5-9400 with 16GB RAM and no dedicated GPU: at idle each used about 150MB of RAM and barely touched the CPU, so resource footprint is a wash. The one measurable gap was automatic metadata matching across a 500+ movie library — Plex correctly identified about 98% of titles versus roughly 95% for Jellyfin. That 3-point difference is real but small, and it shrinks further if your files follow standard naming. It is not the chasm the app-store screenshots imply.&lt;/p>&lt;/blockquote>
&lt;h2 id="4k-hdr-passthrough">4K HDR passthrough&lt;/h2>
&lt;p>Both servers handle 4K HDR passthrough correctly — direct playing a 4K HDR Dolby Vision or HDR10 file without transcoding. The limitation on passthrough is the client, not the server: the player needs to support the codec (HEVC, AV1) and the HDR format.&lt;/p>
&lt;p>For a TV or streaming stick with native 4K HDR support playing directly from Jellyfin or Plex, both look identical. The server is a conduit; it&amp;rsquo;s not touching the video.&lt;/p>
&lt;h2 id="live-tv-and-dvr">Live TV and DVR&lt;/h2>
&lt;p>&lt;strong>Jellyfin:&lt;/strong> Live TV and DVR are free. You need a compatible tuner (HDHomeRun, Silicon Dust) and Jellyfin finds it on the network. Schedule recordings, watch live, timeshifted playback — it all works without a subscription.&lt;/p>
&lt;p>&lt;strong>Plex:&lt;/strong> Live TV and DVR require Plex Pass. Same hardware requirements, same tuner support, but paywalled.&lt;/p>
&lt;p>If Live TV is a use case, Jellyfin wins on cost with no meaningful feature difference.&lt;/p>
&lt;h2 id="migration-plex-to-jellyfin">Migration: Plex to Jellyfin&lt;/h2>
&lt;p>The most common transition is from Plex to Jellyfin. You don&amp;rsquo;t need to move any files — Jellyfin points at the same paths. What you lose:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Watch history&lt;/strong> — tracked locally only in Jellyfin, no migration tool&lt;/li>
&lt;li>&lt;strong>Custom collections&lt;/strong> — re-created manually or via scripts&lt;/li>
&lt;li>&lt;strong>Playlists&lt;/strong> — manual migration&lt;/li>
&lt;/ul>
&lt;p>What transfers automatically: nothing, but Jellyfin re-scrapes all metadata fresh from TMDB/TheTVDB and builds its own database. A library that took years to build in Plex rebuilds in Jellyfin in hours.&lt;/p>
&lt;p>Many people run both simultaneously on the same library indefinitely. Since neither server modifies source files, there&amp;rsquo;s no conflict.&lt;/p>
&lt;h2 id="verdict-which-one-are-you">Verdict: which one are you?&lt;/h2>
&lt;p>Three profiles cover almost everyone. Find yours.&lt;/p>
&lt;p>(There is a fourth option this page does not cover: &lt;strong>Emby&lt;/strong>, the project Jellyfin was forked from in 2018. If you are weighing it, &lt;a href="https://techfuelhq.com/homelab/jellyfin-vs-emby-2026/">Jellyfin vs Emby&lt;/a> covers what Emby&amp;rsquo;s free tier actually allows — the answer depends on whether you watch on a TV or a phone.)&lt;/p>
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;padding:26px 22px 22px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;border-radius:8px;">
&lt;div style="text-align:center;margin-bottom:22px;">&lt;div style="font-size:18px;font-weight:600;letter-spacing:-0.3px;">The decision, by who you actually are&lt;/div>&lt;div style="font-size:12px;color:#9a9ab5;margin-top:5px;">Match the column that sounds like your household.&lt;/div>&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;gap:14px;max-width:820px;margin:0 auto;">
&lt;div style="flex:1 1 230px;background:linear-gradient(160deg,rgba(164,87,201,0.13),rgba(0,164,220,0.05));border:1px solid rgba(164,87,201,0.35);border-radius:12px;padding:16px 16px 14px;">
&lt;div style="font-size:14px;font-weight:700;color:#c07fe0;">CHOOSE JELLYFIN&lt;/div>
&lt;div style="font-size:11px;color:#8a8aa5;margin:2px 0 12px;text-transform:uppercase;letter-spacing:0.07em;">The self-hoster&lt;/div>
&lt;ul style="margin:0;padding-left:16px;font-size:12.5px;line-height:1.5;color:#c8c8dc;">
&lt;li>You care about open source and privacy&lt;/li>
&lt;li>Hardware transcoding matters and Plex Pass isn't worth it&lt;/li>
&lt;li>You're fine with Tailscale or a reverse proxy for remote access&lt;/li>
&lt;li>Your household is tech-savvy, or you'll do the setup for them&lt;/li>
&lt;li>Free Live TV + DVR is a use case&lt;/li>
&lt;li>You already run your own networking&lt;/li>
&lt;/ul>
&lt;/div>
&lt;div style="flex:1 1 230px;background:linear-gradient(160deg,rgba(229,160,13,0.12),rgba(204,123,25,0.04));border:1px solid rgba(229,160,13,0.35);border-radius:12px;padding:16px 16px 14px;">
&lt;div style="font-size:14px;font-weight:700;color:#e5a00d;">CHOOSE PLEX PASS&lt;/div>
&lt;div style="font-size:11px;color:#8a8aa5;margin:2px 0 12px;text-transform:uppercase;letter-spacing:0.07em;">The family sharer&lt;/div>
&lt;ul style="margin:0;padding-left:16px;font-size:12.5px;line-height:1.5;color:#c8c8dc;">
&lt;li>You share with non-technical family who need it to just work on their TV&lt;/li>
&lt;li>You want polished apps on every client, no rough edges&lt;/li>
&lt;li>Zero-config remote access is worth the account and the fee&lt;/li>
&lt;li>You already hold a Plex Pass lifetime and switching isn't worth the disruption&lt;/li>
&lt;/ul>
&lt;/div>
&lt;div style="flex:1 1 230px;background:linear-gradient(160deg,rgba(255,255,255,0.05),rgba(255,255,255,0.015));border:1px solid rgba(255,255,255,0.12);border-radius:12px;padding:16px 16px 14px;">
&lt;div style="font-size:14px;font-weight:700;color:#c8c8dc;">CHOOSE PLEX FREE&lt;/div>
&lt;div style="font-size:11px;color:#8a8aa5;margin:2px 0 12px;text-transform:uppercase;letter-spacing:0.07em;">The local streamer&lt;/div>
&lt;ul style="margin:0;padding-left:16px;font-size:12.5px;line-height:1.5;color:#c8c8dc;">
&lt;li>Your library is mostly direct-playable on modern clients — no transcoding needed&lt;/li>
&lt;li>Your CPU is fast enough for the occasional software transcode&lt;/li>
&lt;li>You mostly stream locally and want Plex's app polish (remote streaming now needs a Plex Pass or a $2.99/mo Remote Watch Pass, even on free)&lt;/li>
&lt;/ul>
&lt;/div>
&lt;/div>
&lt;div style="text-align:right;margin-top:14px;font-size:10px;color:#44445a;">techfuelhq.com · verified July 2026&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>Still torn? The lowest-risk move is the one nobody markets: run both. Point each server at the same media folders (neither touches your files), give it a week, and let your household vote with the remote. Most people find the answer obvious within a few evenings.&lt;/p>
&lt;p>The setup guide for Jellyfin is at &lt;a href="https://techfuelhq.com/tutorials/jellyfin-setup-docker-homelab-2026/">Jellyfin Setup on Docker&lt;/a>. For choosing GPU hardware for transcoding, the &lt;a href="https://techfuelhq.com/articles/best-gpu-plex-jellyfin-transcode-2026/">GPU transcoding guide&lt;/a> covers what Intel QSV, NVIDIA NVENC, and AMD VAAPI actually deliver on real hardware.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Media server is part of the broader self-hosted stack. If you&amp;rsquo;re evaluating self-hosted photo libraries alongside media servers, the &lt;a href="https://techfuelhq.com/tutorials/self-hosted-photo-library-immich-photoprism-ente-2026/">Immich vs PhotoPrism vs Ente comparison&lt;/a> covers the photo side.&lt;/em>&lt;/p></description></item><item><title>Proxmox VM Capacity Planner</title><link>https://techfuelhq.com/tools/proxmox-capacity-planner/</link><pubDate>Sun, 07 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tools/proxmox-capacity-planner/</guid><description>&lt;h2 id="how-to-use-this-planner">How to use this planner&lt;/h2>
&lt;p>Set your host&amp;rsquo;s physical RAM and CPU core count, then choose whether you&amp;rsquo;re using ZFS (which takes ARC memory away from VMs). Select a VM profile — or enter custom values — and the tool shows how many VMs fit, what the binding constraint is (usually RAM), and a comparison table showing counts across all profile types.&lt;/p>
&lt;p>The practical maximum is &lt;code>min(RAM-limited count, CPU-limited count)&lt;/code>. One of those two numbers is always the bottleneck — this tool tells you which one and by how much.&lt;/p>
&lt;h2 id="the-zfs-arc-problem">The ZFS ARC problem&lt;/h2>
&lt;p>If you&amp;rsquo;re running ZFS on your Proxmox host, the ARC cache is the most commonly underestimated RAM consumer. Proxmox installs ZFS ARC with a default maximum of 50% of host RAM. On a 32GB machine, that&amp;rsquo;s 16GB of potential ARC — leaving 16GB minus the OS reserve for all your VMs.&lt;/p>
&lt;p>The fix is tuning &lt;code>zfs_arc_max&lt;/code> in &lt;code>/etc/modprobe.d/zfs.conf&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Example: cap ARC at 8GB on a 32GB host&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>options zfs zfs_arc_max&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">8589934592&lt;/span> &lt;span style="color:#75715e"># bytes = 8 * 1024^3&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Then run &lt;code>update-initramfs -u&lt;/code> and reboot (or use &lt;code>echo 8589934592 &amp;gt; /sys/module/zfs/parameters/zfs_arc_max&lt;/code> for a live change without reboot).&lt;/p>
&lt;p>A reasonable ARC allocation:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Host RAM&lt;/th>
&lt;th scope="col">Recommended ARC max&lt;/th>
&lt;th scope="col">Reasoning&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>16GB&lt;/td>
&lt;td>4GB&lt;/td>
&lt;td>Leaves 10GB for VMs after host OS&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>32GB&lt;/td>
&lt;td>8GB&lt;/td>
&lt;td>Leaves 20GB for VMs&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>64GB&lt;/td>
&lt;td>16GB&lt;/td>
&lt;td>Leaves 46GB; good throughput for NFS/VM disks&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>128GB+&lt;/td>
&lt;td>24–32GB&lt;/td>
&lt;td>ARC has diminishing returns above ~32GB for most workloads&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;h2 id="vcpu-overcommit-ratios">vCPU overcommit ratios&lt;/h2>
&lt;p>Physical cores map to virtual CPUs through the overcommit ratio. At 1:1, each VM&amp;rsquo;s vCPU maps to a dedicated physical thread. At 2:1, two VMs share each physical core (in a time-shared way).&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Workload&lt;/th>
&lt;th scope="col">Safe ratio&lt;/th>
&lt;th scope="col">Notes&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>CPU-bound (ML, encoding, compile)&lt;/td>
&lt;td>1:1&lt;/td>
&lt;td>Don&amp;rsquo;t overcommit — these VMs actually use their cores&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Web services, databases&lt;/td>
&lt;td>2:1&lt;/td>
&lt;td>CPU rarely fully saturated simultaneously&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Dev / test VMs&lt;/td>
&lt;td>4:1&lt;/td>
&lt;td>Dev VMs mostly idle&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Burst-only / monitoring agents&lt;/td>
&lt;td>8:1&lt;/td>
&lt;td>Rarely ever active&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Mixed homelab&lt;/td>
&lt;td>2:1&lt;/td>
&lt;td>Safe default for most setups&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;h2 id="lxc-vs-vm-density">LXC vs VM density&lt;/h2>
&lt;p>LXC containers are 30–50% more RAM-efficient than full KVM VMs for equivalent workloads, because they share the host kernel and have no QEMU overhead. The &lt;a href="https://techfuelhq.com/homelab/lxc-vs-vm-proxmox-2026/">LXC vs VM guide&lt;/a> covers the tradeoffs in detail, but the density rule is simple: if you don&amp;rsquo;t need an isolated kernel, GPU passthrough, or Windows, use LXC.&lt;/p>
&lt;p>On a 64GB host with ZFS ARC at 16GB and 2GB host reserve:&lt;/p>
&lt;ul>
&lt;li>Available for guests: 46GB&lt;/li>
&lt;li>With 4GB full VMs: 11 VMs&lt;/li>
&lt;li>With 2GB LXC containers: 23 containers&lt;/li>
&lt;li>With 1GB LXC containers: 46 containers&lt;/li>
&lt;/ul>
&lt;p>That&amp;rsquo;s the compounding advantage of LXC for a service-dense homelab.&lt;/p>
&lt;h2 id="what-this-planner-doesnt-model">What this planner doesn&amp;rsquo;t model&lt;/h2>
&lt;p>&lt;strong>RAM ballooning:&lt;/strong> Proxmox supports memory ballooning (dynamic RAM allocation within a range). In practice, ballooning helps with idle VMs but doesn&amp;rsquo;t change peak capacity — a VM needs its max allocation available when it asks for it. Plan to the reserved amount.&lt;/p>
&lt;p>&lt;strong>Storage IO:&lt;/strong> This tool only models RAM and CPU. If your VMs are doing heavy NFS or iSCSI IO, storage throughput may become the real bottleneck before RAM or CPU. A 1GbE link tops out at ~110MB/s, which is enough for 1–2 active VMs doing IO but not 8.&lt;/p>
&lt;p>&lt;strong>Swap:&lt;/strong> Proxmox can swap VM RAM to disk, but you should treat swap as an emergency buffer, not extra capacity. A VM that&amp;rsquo;s swapping is a VM that&amp;rsquo;s degraded; if your capacity planner relies on swap, you need more RAM.&lt;/p>
&lt;p>&lt;strong>Cluster HA overhead:&lt;/strong> In a Proxmox HA cluster, Corosync reserves a small amount of CPU/RAM. For 3-node clusters this is negligible (~200MB/node). More importantly, HA means you should leave one node&amp;rsquo;s capacity free as a failover target — so effective capacity for a 3-node cluster is 2 nodes, not 3.&lt;/p></description></item><item><title>Best 27-inch and 32-inch Monitors for a Homelab Desk in 2026</title><link>https://techfuelhq.com/articles/best-27-32-inch-monitor-homelab-2026/</link><pubDate>Sat, 06 Jun 2026 00:00:00 -0500</pubDate><guid>https://techfuelhq.com/articles/best-27-32-inch-monitor-homelab-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-06-06 · ~10 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/articles/best-27-32-inch-monitor-homelab-2026.svg" alt="Buying guide comparing four homelab monitor picks for 2026: LG 27GS95QE-B 27-inch 1440p 240Hz WOLED (~$799), Asus ROG PG32UCDM 32-inch 4K 240Hz QD-OLED with USB-C (~$999), Dell U3225QE 32-inch 4K 120Hz IPS Black with Thunderbolt 4 (~$699), and budget LG 32UP83A-W 32-inch 4K 60Hz IPS (~$399), each with panel type, resolution and street price." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR · Picks by use case&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>Best 27-inch OLED for gaming:&lt;/strong> LG 27GS95QE-B (~$799) — 1440p 240Hz WOLED, best-in-class response time at 27 inches (there is no 27-inch 4K OLED at this price tier)&lt;/li>
&lt;li>&lt;strong>Best 32-inch OLED:&lt;/strong> Asus ROG PG32UCDM (~$999) — 4K 240Hz OLED with USB-C, solid pick if you want 32-inch OLED without going to a TV panel&lt;/li>
&lt;li>&lt;strong>Best 32-inch IPS productivity pick:&lt;/strong> Dell U3225QE (~$699) — 4K IPS with Thunderbolt 4, excellent USB-C hub for laptop-connected homelab desks&lt;/li>
&lt;li>&lt;strong>Best budget 4K monitor:&lt;/strong> LG 32UP83A-W (~$399) — 32-inch 4K IPS, 60Hz, DisplayHDR 400 (edge-lit, no local dimming — treat HDR as a bonus, not a feature), USB-C 90W&lt;/li>
&lt;/ul>
&lt;/div>
&lt;p>The 48-inch OLED on a deep desk is great if you have the space for it. Not every homelab desk does. This guide covers the monitors that make sense when a 42–48-inch panel isn&amp;rsquo;t an option — either because of desk depth, dual-monitor configuration, or budget. (The &lt;a href="https://techfuelhq.com/tools/monitor-size-calculator/">monitor size calculator&lt;/a> gives the exact width and height of any screen size, so you can check what actually fits your desk before buying.)&lt;/p>
&lt;p>The meaningful divide at 27–32 inches is between &lt;strong>OLED&lt;/strong> and &lt;strong>IPS&lt;/strong>, not between brands or even panel size. They serve genuinely different use cases, and picking the wrong type is a more expensive mistake than picking the wrong size.&lt;/p>
&lt;h2 id="oled-vs-ips-at-2732-inches-in-2026">OLED vs IPS at 27–32 inches in 2026&lt;/h2>
&lt;p>The premium OLED monitors at 27–32 inches use the same panel families found in 4K OLED TVs — either LG WOLED, Samsung QD-OLED, or LG OLED evo in a smaller format. The premium IPS panels are closer in brightness to OLED than they were three years ago but still can&amp;rsquo;t match OLED contrast ratios.&lt;/p>
&lt;p>&lt;strong>Where OLED wins at 27–32 inches:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Contrast ratio is infinite (true black, no backlight bleed)&lt;/li>
&lt;li>Pixel response time is ~0.1–0.3ms — visually instant&lt;/li>
&lt;li>Color volume at peak brightness exceeds most IPS options&lt;/li>
&lt;li>HDR tone mapping is correct in a way that local-dimming IPS can&amp;rsquo;t match&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Where IPS is the better choice:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>No burn-in risk — run a white browser at 100% brightness all day without worry&lt;/li>
&lt;li>More budget options: a solid 32-inch 4K IPS is $400–$500; 32-inch OLED starts at $900&lt;/li>
&lt;li>Higher sustained brightness (some IPS panels hit 600+ nits sustained vs OLED&amp;rsquo;s 130–200 nit sustained)&lt;/li>
&lt;li>Better for always-on displays or productivity setups that stay at static interfaces&lt;/li>
&lt;/ul>
&lt;p>For a homelab desk that&amp;rsquo;s split between server management and gaming: OLED if budget allows, IPS if the always-on brightness requirement or burn-in concern matters more than contrast.&lt;/p>
&lt;h2 id="27-inch-picks">27-inch picks&lt;/h2>
&lt;h3 id="lg-27gs95qe-b-799">LG 27GS95QE-B (~$799)&lt;/h3>
&lt;p>&lt;strong>Panel:&lt;/strong> WOLED, 2560×1440, 240Hz
&lt;strong>Inputs:&lt;/strong> DisplayPort 1.4, HDMI 2.1 × 2, USB-A × 2
&lt;strong>VRR:&lt;/strong> G-Sync Compatible, FreeSync Premium Pro&lt;/p>
&lt;p>The 27GS95QE-B is the LG WOLED panel at 27 inches — 1440p, not 4K (no 27-inch 4K OLED exists at this tier). 1440p at 27 inches is ~109 PPI; what you&amp;rsquo;re buying here is the OLED response time, contrast, and 240Hz, not pixel density.&lt;/p>
&lt;p>240Hz at 1440p is far more reachable than at 4K: high-refresh competitive play is realistic on mid-to-high current GPUs, and even demanding titles get well past 144fps with upscaling.&lt;/p>
&lt;p>The 27-inch OLED market got competitive in 2025. The Samsung 27G85SB and Asus ROG PG27AQDM are alternatives at similar price points. The LG is typically the most available of the three.&lt;/p>
&lt;p>&lt;strong>Best for:&lt;/strong> competitive gaming primary + productivity secondary use; 27-inch is a smaller footprint than 32-inch for the same task&lt;/p>
&lt;p>&lt;strong>Downsides:&lt;/strong> 27-inch 4K requires Windows DPI scaling set to 150%+ for comfortable desktop work at arm&amp;rsquo;s length; native pixels are small at this size. Burn-in precautions apply.&lt;/p>
&lt;hr>
&lt;h3 id="asus-rog-swift-pg27aqdm-699799">Asus ROG Swift PG27AQDM (~$699–$799)&lt;/h3>
&lt;p>&lt;strong>Panel:&lt;/strong> WOLED (LG), 2560×1440, 240Hz
&lt;strong>Inputs:&lt;/strong> DisplayPort 1.4, HDMI 2.1 × 2&lt;/p>
&lt;p>The PG27AQDM runs LG&amp;rsquo;s WOLED panel at 1440p instead of 4K. At 27 inches, 1440p hits ~108 PPI — clear at normal viewing distances without scaling required. WOLED trades a little peak color brightness against QD-OLED for cleaner text rendering (no QD-OLED subpixel fringing) — a real plus for terminal-heavy homelab work.&lt;/p>
&lt;p>The 1440p resolution vs 4K: depends on your use case. For gaming at high frame rates, 1440p is easier to push to high frame rates than 4K. For productivity and text-heavy work at 27 inches, 4K is sharper. For mixed use: 1440p is the safer bet if you play competitive games and the 4K resolution forces you to scale the OS.&lt;/p>
&lt;p>At $699 it&amp;rsquo;s often cheaper than the LG 4K OLED options. Worth considering if gaming frame rates matter more than resolution.&lt;/p>
&lt;p>&lt;strong>Downsides:&lt;/strong> 1440p at 27 inches means shallower resolution buffer if you run two windows side by side, and WOLED&amp;rsquo;s peak color brightness trails the QD-OLED competition in bright rooms.&lt;/p>
&lt;hr>
&lt;h2 id="32-inch-picks">32-inch picks&lt;/h2>
&lt;h3 id="asus-rog-pg32ucdm-999">Asus ROG PG32UCDM (~$999)&lt;/h3>
&lt;p>&lt;strong>Panel:&lt;/strong> QD-OLED (Samsung), 4K (3840×2160), 240Hz
&lt;strong>Inputs:&lt;/strong> DisplayPort 1.4, HDMI 2.1 × 2, USB-C 90W (DP Alt)
&lt;strong>VRR:&lt;/strong> G-Sync Compatible, FreeSync Premium Pro&lt;/p>
&lt;p>The 32-inch OLED gaming monitor segment is more competitive in 2026 than it was in 2025, and the PG32UCDM holds up. 4K at 32 inches hits ~138 PPI — you get the resolution advantage without needing aggressive Windows scaling. The USB-C 90W input makes it usable as a single-cable connection for modern laptops (one cable for display + charging).&lt;/p>
&lt;p>240Hz on a 32-inch 4K OLED: the same GPU requirements as the 27-inch 4K version — pushing 240fps at native 4K requires top-tier hardware. The more realistic use case is 120–165Hz at 4K with VRR filling the gaps, which any mid-to-high GPU handles.&lt;/p>
&lt;p>The PG32UCDM is the 32-inch OLED pick if you want USB-C connectivity and the monitor OSD that comes with a gaming monitor rather than a TV interface. Samsung&amp;rsquo;s S32DG80 is a competing QD-OLED at a similar price — worth comparing on availability and current street pricing.&lt;/p>
&lt;p>&lt;strong>Best for:&lt;/strong> the primary monitor in a desk setup that needs one screen for both gaming and server management. The 32-inch canvas is more comfortable for terminal + documentation side by side than 27.&lt;/p>
&lt;p>&lt;strong>Downsides:&lt;/strong> burn-in precautions, same as all OLED at 27–32 inches. No ARC port (monitor design), so soundbar connection limited to optical or Bluetooth.&lt;/p>
&lt;hr>
&lt;h3 id="dell-u3225qe-699">Dell U3225QE (~$699)&lt;/h3>
&lt;p>&lt;strong>Panel:&lt;/strong> IPS Black, 4K (3840×2160), 120Hz
&lt;strong>Inputs:&lt;/strong> DisplayPort 1.4, HDMI 2.1, Thunderbolt 4 × 2, USB-C 140W
&lt;strong>VRR:&lt;/strong> None (productivity monitor, not gaming-optimized)&lt;/p>
&lt;p>The U3225QE is the pick for a homelab desk where the monitor is primarily a productivity tool with occasional gaming, not the reverse. IPS Black achieves higher contrast than standard IPS (roughly 2000:1 vs 1000:1) — not OLED levels, but significantly better than the previous generation for dark terminal windows and server dashboards.&lt;/p>
&lt;p>Thunderbolt 4 × 2 makes it the hub of a laptop-connected homelab desk. One cable from a MacBook or Windows Thunderbolt laptop — display at 4K 120Hz, 140W charging, and USB hub through the monitor&amp;rsquo;s downstream ports. This is not a feature found on gaming monitors.&lt;/p>
&lt;p>No VRR, and the panel is tuned for productivity rather than motion. The 120Hz refresh makes desktop work and slower-paced gaming feel smooth; for competitive or fast-paced gaming the OLED picks above are still the right tool.&lt;/p>
&lt;p>The Dell U3225QE sits in a category of its own: it&amp;rsquo;s not competing with the OLED gaming monitors, it&amp;rsquo;s competing with premium productivity monitors (LG 32UN880, Samsung S32B800PXU, BenQ PD3225U). At $699 it&amp;rsquo;s fairly priced for the Thunderbolt 4 hub feature and the IPS Black panel.&lt;/p>
&lt;p>&lt;strong>Best for:&lt;/strong> homelab desks where a ThinkPad, MacBook Pro, or other Thunderbolt laptop is one of the primary inputs; mixed work-from-home + lab management use&lt;/p>
&lt;p>&lt;strong>Downsides:&lt;/strong> 60Hz is a ceiling, not a floor — games that benefit from high refresh rates are not this monitor&amp;rsquo;s strength. No OLED blacks.&lt;/p>
&lt;hr>
&lt;h3 id="budget-pick-lg-32up83a-w-399">Budget pick: LG 32UP83A-W (~$399)&lt;/h3>
&lt;p>&lt;strong>Panel:&lt;/strong> IPS, 4K (3840×2160), 60Hz
&lt;strong>Inputs:&lt;/strong> DisplayPort 1.4, HDMI 2.0 × 2, USB-C 90W
&lt;strong>HDR:&lt;/strong> DisplayHDR 600 (local dimming)&lt;/p>
&lt;p>At $399 the 32UP83A-W is the budget entry point for a 32-inch 4K IPS with USB-C connectivity. 4K 60Hz is the ceiling — not a gaming monitor. The DisplayHDR 600 certification means it has some local dimming zones, though the HDR implementation is modest compared to full-array panels.&lt;/p>
&lt;p>For a homelab desk where the monitor is primarily a second screen for server dashboards, remote desktop sessions, or documentation work alongside a primary gaming monitor: this is the cost-efficient option. The 4K resolution at 32 inches is comfortable for text-heavy work without heavy scaling.&lt;/p>
&lt;p>&lt;strong>Downsides:&lt;/strong> HDMI 2.0 means no 4K 120Hz over HDMI; DP 1.4 connects to GPU for 4K 60Hz without issue. HDR is a marketing tier, not a competitive performance tier. USB-C is 90W — adequate for mid-range laptops, not power-hungry 45W+ workstation laptops.&lt;/p>
&lt;hr>
&lt;h2 id="size-and-resolution-decision-matrix">Size and resolution decision matrix&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Use case&lt;/th>
&lt;th scope="col">Best choice&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Competitive gaming, 1440p, 240Hz&lt;/td>
&lt;td>27-inch QD-OLED (PG27AQDM)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Best-looking single monitor, gaming + work&lt;/td>
&lt;td>32-inch OLED (PG32UCDM)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Laptop-connected homelab desk, one cable&lt;/td>
&lt;td>32-inch IPS with Thunderbolt 4 (U3225QE)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Budget 4K display, productivity only&lt;/td>
&lt;td>32-inch IPS (LG 32UP83A-W)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Want to go larger&lt;/td>
&lt;td>&lt;a href="https://techfuelhq.com/articles/lg-c4-42-vs-aorus-fo48u-2026/">LG C4 42-inch or AORUS FO48U&lt;/a>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The jump from 32 to 42 inches (where OLED TVs and the AORUS FO48U live) is meaningful — bigger panels require more desk depth. If your setup can accommodate 42 inches or more, &lt;a href="https://techfuelhq.com/articles/lg-c4-42-vs-aorus-fo48u-2026/">that category has its own guide&lt;/a>. If 32 inches is the practical ceiling for your desk: the PG32UCDM is the panel to beat, and the Dell U3225QE wins if Thunderbolt connectivity matters more than gaming performance.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Specs from manufacturer product pages (Asus, Dell, LG, Samsung), accessed June 2026. Street prices from mid-June 2026 Amazon/B&amp;amp;H survey. No panel measurements conducted by TechFuelHQ — for calibrated figures, see &lt;a href="https://www.rtings.com" rel="noopener">RTings&lt;/a>, &lt;a href="https://www.tftcentral.co.uk" rel="noopener">TFT Central&lt;/a>, and &lt;a href="https://www.youtube.com/@Hardwareunboxed" rel="noopener">Hardware Unboxed&lt;/a> display reviews.&lt;/em>&lt;/p></description></item><item><title>Nextcloud AIO Setup on Docker (2026 Guide)</title><link>https://techfuelhq.com/tutorials/nextcloud-aio-docker-setup-2026/</link><pubDate>Sat, 06 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tutorials/nextcloud-aio-docker-setup-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-06 · ~13 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/tutorials/nextcloud-aio-docker-setup-2026.svg" alt="Architecture diagram of a Nextcloud All-in-One Docker deployment: desktop, mobile, and CalDAV/CardDAV clients connect through Nginx Proxy Manager (TLS termination, websockets) to the AIO master container on port 8080, which manages child containers over the Docker socket — Nextcloud Hub on port 11000, PostgreSQL, Redis, Collabora Office, Talk, and Imaginary — backed by the /mnt/ncdata data volume, AIO config volume, and a daily Borg backup repository, with idle RAM around 1.4 GB and a 4 GB minimum." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>Nextcloud All-in-One is the officially supported Docker deployment. It handles the dependency stack — PostgreSQL, Redis, Apache, Collabora Office, signaling server, image processing — and keeps everything version-aligned automatically.&lt;/p>
&lt;p>This guide deploys AIO with an external reverse proxy (Nginx Proxy Manager), sets up the desktop and mobile sync clients, and covers backup.&lt;/p>
&lt;h2 id="what-youll-have-at-the-end">What you&amp;rsquo;ll have at the end&lt;/h2>
&lt;ul>
&lt;li>Nextcloud AIO running in Docker with PostgreSQL and Redis&lt;/li>
&lt;li>Nextcloud Office (Collabora CODE) for editing DOCX/XLSX/PPTX in the browser&lt;/li>
&lt;li>HTTPS at &lt;code>nextcloud.yourdomain.com&lt;/code> via Nginx Proxy Manager&lt;/li>
&lt;li>Desktop sync client configured on macOS/Windows/Linux&lt;/li>
&lt;li>Automatic backup to your choice of local or B2 storage&lt;/li>
&lt;/ul>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/install-docker-ubuntu-2026/">Docker installed&lt;/a> on a Linux host&lt;/li>
&lt;li>A &lt;code>proxy&lt;/code> Docker network created: &lt;code>docker network create proxy&lt;/code>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/nginx-proxy-manager-homelab-2026/">Nginx Proxy Manager&lt;/a> running with a wildcard SSL cert&lt;/li>
&lt;li>A domain pointing to your server (for LAN-only access, a local &lt;code>.lan&lt;/code> domain with AdGuard Home DNS rewrites works)&lt;/li>
&lt;li>Minimum 4GB RAM available for the Nextcloud stack&lt;/li>
&lt;/ul>
&lt;h2 id="step-1-deploy-the-aio-master-container">Step 1: Deploy the AIO master container&lt;/h2>
&lt;p>AIO uses a &amp;ldquo;master container&amp;rdquo; that manages all other containers via the Docker socket. The AIO web interface runs on port 8080 and lets you start/stop the entire stack.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>mkdir -p /opt/stacks/nextcloud &lt;span style="color:#f92672">&amp;amp;&amp;amp;&lt;/span> cd /opt/stacks/nextcloud
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Create the compose file:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># /opt/stacks/nextcloud/docker-compose.yml&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">services&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">nextcloud-aio-mastercontainer&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">nextcloud/all-in-one:latest&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">nextcloud-aio-mastercontainer&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">unless-stopped&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">nextcloud_aio_mastercontainer:/mnt/docker-aio-config&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">/var/run/docker.sock:/var/run/docker.sock:ro&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">ports&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">8080&lt;/span>:&lt;span style="color:#ae81ff">8080&lt;/span> &lt;span style="color:#75715e"># AIO admin interface&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">environment&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">APACHE_PORT&lt;/span>: &lt;span style="color:#ae81ff">11000&lt;/span> &lt;span style="color:#75715e"># The port Nextcloud&amp;#39;s Apache will listen on&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">APACHE_IP_BINDING&lt;/span>: &lt;span style="color:#ae81ff">0.0.0.0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">NEXTCLOUD_DATADIR&lt;/span>: &lt;span style="color:#ae81ff">/mnt/ncdata &lt;/span> &lt;span style="color:#75715e"># Change to your NAS mount or large disk&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">NEXTCLOUD_UPLOAD_LIMIT&lt;/span>: &lt;span style="color:#ae81ff">10G &lt;/span> &lt;span style="color:#75715e"># Max file upload size&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">NEXTCLOUD_MAX_TIME&lt;/span>: &lt;span style="color:#ae81ff">3600&lt;/span> &lt;span style="color:#75715e"># PHP max execution time in seconds&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">NEXTCLOUD_MEMORY_LIMIT&lt;/span>: &lt;span style="color:#ae81ff">512M &lt;/span> &lt;span style="color:#75715e"># PHP memory limit&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">NEXTCLOUD_TRUSTED_CACERTS_DIR&lt;/span>: &lt;span style="color:#ae81ff">/etc/ssl/certs &lt;/span> &lt;span style="color:#75715e"># Trust system CA bundle&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">SKIP_DOMAIN_VALIDATION&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;false&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Set &amp;#34;true&amp;#34; only for purely local setups&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">networks&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">proxy&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">nextcloud_aio_mastercontainer&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">name&lt;/span>: &lt;span style="color:#ae81ff">nextcloud_aio_mastercontainer&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">networks&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">proxy&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">external&lt;/span>: &lt;span style="color:#66d9ef">true&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Set &lt;code>NEXTCLOUD_DATADIR&lt;/code>&lt;/strong> to the path where you want your Nextcloud files stored. This must be a directory the Docker container can write to:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>mkdir -p /mnt/ncdata
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>chown -R 33:33 /mnt/ncdata &lt;span style="color:#75715e"># www-data UID inside the container&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Start the master container:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>docker compose up -d
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker compose logs -f nextcloud-aio-mastercontainer
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="step-2-configure-nginx-proxy-manager-for-aio">Step 2: Configure Nginx Proxy Manager for AIO&lt;/h2>
&lt;p>AIO&amp;rsquo;s Apache instance runs on port 11000 (as set by &lt;code>APACHE_PORT&lt;/code>). NPM sits in front and handles TLS termination.&lt;/p>
&lt;p>In &lt;a href="https://techfuelhq.com/tutorials/nginx-proxy-manager-homelab-2026/">NPM&lt;/a> → Add Proxy Host:&lt;/p>
&lt;ul>
&lt;li>Domain: &lt;code>nextcloud.yourdomain.com&lt;/code>&lt;/li>
&lt;li>Scheme: &lt;code>http&lt;/code>&lt;/li>
&lt;li>Forward hostname: host machine IP (or &lt;code>172.17.0.1&lt;/code> — Docker bridge gateway to reach the host from inside NPM&amp;rsquo;s container)&lt;/li>
&lt;li>Port: &lt;code>11000&lt;/code>&lt;/li>
&lt;li>&lt;strong>Websockets Support:&lt;/strong> ON (required for Talk and Office)&lt;/li>
&lt;li>SSL: wildcard cert, Force SSL on, HTTP/2 support on&lt;/li>
&lt;/ul>
&lt;p>In the &lt;strong>Advanced&lt;/strong> tab, add:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-nginx" data-lang="nginx">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">client_max_body_size&lt;/span> &lt;span style="color:#e6db74">10G&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">proxy_read_timeout&lt;/span> &lt;span style="color:#e6db74">86400s&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">proxy_send_timeout&lt;/span> &lt;span style="color:#e6db74">86400s&lt;/span>;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The &lt;code>client_max_body_size&lt;/code> must match your &lt;code>NEXTCLOUD_UPLOAD_LIMIT&lt;/code>. The extended timeouts are required for large file uploads that take longer than the default 60s.&lt;/p>
&lt;h2 id="step-3-aio-initial-setup">Step 3: AIO initial setup&lt;/h2>
&lt;p>Access the AIO admin interface at &lt;code>http://your-host-ip:8080&lt;/code>:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>AIO password&lt;/strong> — you&amp;rsquo;ll be shown a passphrase on first visit; copy it&lt;/li>
&lt;li>&lt;strong>Enter your domain&lt;/strong> — type &lt;code>nextcloud.yourdomain.com&lt;/code>&lt;/li>
&lt;li>AIO validates that it can reach itself at the domain (it makes an outbound HTTP check)&lt;/li>
&lt;li>Click &lt;strong>Start containers&lt;/strong> — AIO spins up: Nextcloud, PostgreSQL, Redis, Imaginary, Apache&lt;/li>
&lt;/ol>
&lt;p>Initial container startup takes 3–5 minutes. Watch the logs:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>docker logs -f nextcloud-aio-mastercontainer
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Once all containers show green, access Nextcloud at &lt;code>https://nextcloud.yourdomain.com&lt;/code>.&lt;/p>
&lt;p>AIO generates an admin username and initial password — copy them from the AIO interface before your first login.&lt;/p>
&lt;h2 id="step-4-enable-nextcloud-office">Step 4: Enable Nextcloud Office&lt;/h2>
&lt;p>Back in the AIO interface at &lt;code>http://your-host-ip:8080&lt;/code>:&lt;/p>
&lt;ul>
&lt;li>Click the &lt;strong>Nextcloud Office&lt;/strong> toggle → Enable&lt;/li>
&lt;li>Restart the container stack&lt;/li>
&lt;/ul>
&lt;p>After restart, in the Nextcloud web UI → Admin → Office:&lt;/p>
&lt;ul>
&lt;li>The Collabora CODE server URL should auto-detect as &lt;code>https://nextcloud.yourdomain.com/&lt;/code>&lt;/li>
&lt;li>Click &lt;strong>Save&lt;/strong> and test by opening a DOCX file — it should load in the browser editor&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>What Nextcloud Office does:&lt;/strong> Opens Microsoft Office formats (DOCX, XLSX, PPTX, ODP, ODS, ODT) in-browser using Collabora&amp;rsquo;s LibreOffice engine. Multiple users can co-edit the same document. This is the self-hosted Google Docs analog.&lt;/p>
&lt;h2 id="step-5-desktop-sync-client">Step 5: Desktop sync client&lt;/h2>
&lt;p>Download the &lt;strong>Nextcloud desktop client&lt;/strong> for your OS from &lt;a href="https://nextcloud.com/install/" rel="noopener">nextcloud.com/install&lt;/a> — select the appropriate client for Windows, macOS, or Linux.&lt;/p>
&lt;p>Setup:&lt;/p>
&lt;ol>
&lt;li>Open the client → Server URL: &lt;code>https://nextcloud.yourdomain.com&lt;/code>&lt;/li>
&lt;li>Log in with your Nextcloud account credentials&lt;/li>
&lt;li>Choose what to sync locally — you can sync everything or pick specific folders&lt;/li>
&lt;/ol>
&lt;p>The desktop client creates a local folder that stays in sync with your Nextcloud instance. Changes made on any device (web, mobile, or desktop) appear everywhere within seconds.&lt;/p>
&lt;p>&lt;strong>Mobile clients:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>iOS: &amp;ldquo;Nextcloud&amp;rdquo; in the App Store&lt;/li>
&lt;li>Android: &amp;ldquo;Nextcloud&amp;rdquo; in Play Store or F-Droid&lt;/li>
&lt;/ul>
&lt;p>Mobile clients support automatic photo/video backup — configure in the app under &amp;ldquo;Auto Upload.&amp;rdquo; This is the Dropbox/iCloud analog. Unlike Immich (which does ML-powered face detection and search), Nextcloud&amp;rsquo;s photo backup is simple file sync — good for documents and photos you want to access from anywhere, not a replacement for a photo management app.&lt;/p>
&lt;h2 id="step-6-calendar-and-contacts-sync">Step 6: Calendar and contacts sync&lt;/h2>
&lt;p>Nextcloud includes CalDAV (calendar) and CardDAV (contacts) sync out of the box.&lt;/p>
&lt;p>&lt;strong>iOS/macOS:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Settings → Calendar → Accounts → Add Account → Other → Add CalDAV Account&lt;/li>
&lt;li>Server: &lt;code>https://nextcloud.yourdomain.com/remote.php/dav/principals/users/your-username/&lt;/code>&lt;/li>
&lt;li>Username + password: your Nextcloud credentials&lt;/li>
&lt;li>Same setup for CardDAV under Contacts → Accounts&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Android:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Install &lt;a href="https://www.davx5.com/" rel="noopener">DAVx⁵&lt;/a> (F-Droid or Play Store — requires a one-time purchase on Play Store)&lt;/li>
&lt;li>Add your Nextcloud account in DAVx⁵ → it discovers both CalDAV and CardDAV endpoints automatically&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Thunderbird/other desktop clients:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>CalDAV URL: &lt;code>https://nextcloud.yourdomain.com/remote.php/dav/calendars/username/personal/&lt;/code>&lt;/li>
&lt;li>CardDAV URL: &lt;code>https://nextcloud.yourdomain.com/remote.php/dav/addressbooks/users/username/contacts/&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="step-7-configure-aio-backups">Step 7: Configure AIO backups&lt;/h2>
&lt;p>AIO has a built-in backup system that archives all containers&amp;rsquo; data (including PostgreSQL and Redis) to a local or remote Borgbackup repository.&lt;/p>
&lt;p>In the AIO interface at &lt;code>http://your-host-ip:8080&lt;/code>:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Backup location&lt;/strong> — set to a path on a separate disk from your main data (or a NAS mount):
&lt;pre tabindex="0">&lt;code>/mnt/backups/nextcloud
&lt;/code>&lt;/pre>&lt;/li>
&lt;li>&lt;strong>Backup schedule&lt;/strong> — enable daily automated backups; AIO stops the stack briefly (1–2 min) during backup&lt;/li>
&lt;li>&lt;strong>Optional: Borg remote&lt;/strong> — AIO supports Borg remote repositories (SSH-based off-site). For B2-style object storage, use the restic approach in the restic guide instead of AIO&amp;rsquo;s native backup.&lt;/li>
&lt;/ol>
&lt;p>The AIO backup includes everything: the Nextcloud files, database, Redis state, and config. A restore from AIO backup brings back the full working stack.&lt;/p>
&lt;h2 id="resource-usage">Resource usage&lt;/h2>
&lt;p>With Nextcloud Office enabled, on a Debian host with no active users:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Component&lt;/th>
&lt;th scope="col">RAM&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Nextcloud (PHP-FPM workers)&lt;/td>
&lt;td>~400 MB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>PostgreSQL&lt;/td>
&lt;td>~120 MB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Redis&lt;/td>
&lt;td>~25 MB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Apache&lt;/td>
&lt;td>~80 MB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Nextcloud Office (Collabora)&lt;/td>
&lt;td>~700 MB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Imaginary&lt;/td>
&lt;td>~50 MB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Total&lt;/strong>&lt;/td>
&lt;td>&lt;strong>~1.4 GB&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Under active use (users uploading files, editing documents), expect 2–3GB. This is higher than most single-service containers — Nextcloud AIO is a full office stack, not just a file sync daemon.&lt;/p>
&lt;h2 id="limiting-external-network-access">Limiting external network access&lt;/h2>
&lt;p>Nextcloud doesn&amp;rsquo;t need to be exposed to the internet to function as a personal file server. For LAN + Tailscale-only access:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>In NPM, add an access list to &lt;code>nextcloud.yourdomain.com&lt;/code>:&lt;/p>
&lt;ul>
&lt;li>Allow &lt;code>192.168.1.0/24&lt;/code> (your LAN)&lt;/li>
&lt;li>Allow &lt;code>100.64.0.0/10&lt;/code> (Tailscale IP range)&lt;/li>
&lt;li>Deny &lt;code>all&lt;/code>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>In AdGuard Home, add a DNS rewrite: &lt;code>nextcloud.yourdomain.com&lt;/code> → your host&amp;rsquo;s LAN IP. This ensures the domain resolves locally even when Tailscale isn&amp;rsquo;t active.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>For access on mobile data without Tailscale, you&amp;rsquo;d need to expose NPM publicly. For purely personal use, &lt;a href="https://techfuelhq.com/tutorials/tailscale-remote-access-homelab-2026/">Tailscale&lt;/a> is the simpler and more secure choice.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Nextcloud handles files, calendar, and contacts — but for photos with face recognition and semantic search, run &lt;a href="https://techfuelhq.com/tutorials/immich-google-photos-migration-2026/">Immich alongside it&lt;/a>. They share a host without conflict. The same split applies to paperwork: Nextcloud will store a scanned PDF, but &lt;a href="https://techfuelhq.com/tutorials/paperless-ngx-docker-setup-2026/">Paperless-ngx&lt;/a> OCRs it, tags it, and makes years of mail full-text searchable. For the full picture of what&amp;rsquo;s worth self-hosting, see the &lt;a href="https://techfuelhq.com/articles/self-hosted-apps-replace-saas-2026/">12 best self-hosted apps guide&lt;/a>.&lt;/em>&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://github.com/nextcloud/all-in-one" rel="noopener">Nextcloud All-in-One&lt;/a> &amp;ndash; official repository for the AIO master container and bundled component stack.&lt;/li>
&lt;li>&lt;a href="https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md" rel="noopener">Nextcloud AIO reverse proxy&lt;/a> &amp;ndash; official guidance for fronting AIO with an external reverse proxy on port 11000.&lt;/li>
&lt;li>&lt;a href="https://nextcloud.com/install/" rel="noopener">Nextcloud install and clients&lt;/a> &amp;ndash; official download page for the desktop sync client and mobile apps.&lt;/li>
&lt;li>&lt;a href="https://www.davx5.com/" rel="noopener">DAVx5&lt;/a> &amp;ndash; official site for the Android CalDAV and CardDAV sync client used with Nextcloud.&lt;/li>
&lt;/ul></description></item><item><title>Docker Homelab RAM Planner</title><link>https://techfuelhq.com/tools/docker-ram-planner/</link><pubDate>Fri, 05 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tools/docker-ram-planner/</guid><description>&lt;h2 id="how-to-use-this-planner">How to use this planner&lt;/h2>
&lt;p>Check the apps you want to run. Idle RAM is what&amp;rsquo;s used when nothing is happening. Peak RAM is the max during active use — ML indexing, video transcoding, active Office editors. Your host needs to comfortably cover the &lt;strong>peak total&lt;/strong> plus OS overhead.&lt;/p>
&lt;p>All figures are measured or manufacturer-documented values for 2026 container versions. Details per app are in their linked tutorials.&lt;/p></description></item><item><title>Homelab Monitoring with Grafana and Prometheus (2026)</title><link>https://techfuelhq.com/tutorials/homelab-monitoring-grafana-prometheus-2026/</link><pubDate>Fri, 05 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tutorials/homelab-monitoring-grafana-prometheus-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-05 · ~14 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/tutorials/homelab-monitoring-grafana-prometheus-2026.svg" alt="Architecture diagram of the homelab monitoring stack: Node Exporter agents on the Docker host and Proxmox nodes pve01-pve03 (192.168.1.10-12, port 9100) plus a pve-exporter (port 9221) are scraped every 15 seconds by Prometheus (port 9090, 15-day retention), which feeds Grafana dashboards (port 3000, dashboards 1860 and 7039) and fires alert rules to Alertmanager (port 9093) that routes to Discord; full-stack overhead is 300-600MB RAM for a 5-node homelab." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>Uptime Kuma tells you when a service is down. Grafana + Prometheus tells you why it went down, what the CPU was doing three hours before it crashed, which disk is filling up, and which VM is hammering the network. They solve different problems. This guide sets up the full observability stack (new to the two tools and unsure what each does? Start with &lt;a href="https://techfuelhq.com/homelab/grafana-vs-prometheus-2026/">Grafana vs Prometheus explained&lt;/a>).&lt;/p>
&lt;h2 id="what-each-component-does">What each component does&lt;/h2>
&lt;p>&lt;strong>Prometheus&lt;/strong> is a time-series database and scraping engine. You define scrape targets (exporters running on each machine), and Prometheus polls them every 15–60 seconds, storing the metrics. It handles the data collection and storage.&lt;/p>
&lt;p>&lt;strong>Grafana&lt;/strong> is the dashboard layer. It connects to Prometheus as a data source, and you build (or import) dashboards that visualize the metrics as graphs, gauges, and tables.&lt;/p>
&lt;p>&lt;strong>Node Exporter&lt;/strong> is a Prometheus exporter that runs on Linux machines and exposes system metrics: CPU per-core, RAM, disk IO, filesystem usage, network throughput. One process, ~15MB RAM, runs on every machine you want to monitor.&lt;/p>
&lt;p>&lt;strong>Alertmanager&lt;/strong> handles alert routing. Prometheus evaluates alert rules, fires alerts to Alertmanager, and Alertmanager sends them to your preferred notification channel (Slack, Discord, PagerDuty, email, Telegram).&lt;/p>
&lt;h2 id="stack-setup-with-docker-compose">Stack setup with Docker Compose&lt;/h2>
&lt;p>All components run in Docker containers on your existing Docker host. Create the monitoring stack directory:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>mkdir -p /opt/stacks/monitoring/&lt;span style="color:#f92672">{&lt;/span>prometheus,grafana,alertmanager&lt;span style="color:#f92672">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cd /opt/stacks/monitoring
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Prometheus configuration:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># /opt/stacks/monitoring/prometheus/prometheus.yml&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">global&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">scrape_interval&lt;/span>: &lt;span style="color:#ae81ff">15s&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">evaluation_interval&lt;/span>: &lt;span style="color:#ae81ff">15s&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">rule_files&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#34;alerts.yml&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">alerting&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">alertmanagers&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">static_configs&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">targets&lt;/span>: [&lt;span style="color:#e6db74">&amp;#34;alertmanager:9093&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">scrape_configs&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># Monitor the Prometheus instance itself&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">job_name&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;prometheus&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">static_configs&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">targets&lt;/span>: [&lt;span style="color:#e6db74">&amp;#34;localhost:9090&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># Monitor the Docker host&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">job_name&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;node-docker-host&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">static_configs&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">targets&lt;/span>: [&lt;span style="color:#e6db74">&amp;#34;node-exporter:9100&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">relabel_configs&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">target_label&lt;/span>: &lt;span style="color:#ae81ff">instance&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">replacement&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;docker-host&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># Remote Proxmox nodes — install node_exporter on each&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">job_name&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;proxmox-nodes&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">static_configs&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">targets&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#34;192.168.1.10:9100&amp;#34;&lt;/span> &lt;span style="color:#75715e"># pve01&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#34;192.168.1.11:9100&amp;#34;&lt;/span> &lt;span style="color:#75715e"># pve02&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#34;192.168.1.12:9100&amp;#34;&lt;/span> &lt;span style="color:#75715e"># pve03&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">relabel_configs&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">source_labels&lt;/span>: [&lt;span style="color:#ae81ff">__address__]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">target_label&lt;/span>: &lt;span style="color:#ae81ff">instance&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Alert rules:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># /opt/stacks/monitoring/prometheus/alerts.yml&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">groups&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">name&lt;/span>: &lt;span style="color:#ae81ff">homelab&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">rules&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">alert&lt;/span>: &lt;span style="color:#ae81ff">NodeDown&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">expr&lt;/span>: &lt;span style="color:#ae81ff">up == 0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">for&lt;/span>: &lt;span style="color:#ae81ff">2m&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">labels&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">severity&lt;/span>: &lt;span style="color:#ae81ff">critical&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">annotations&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">summary&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Node {{ $labels.instance }} is down&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">alert&lt;/span>: &lt;span style="color:#ae81ff">HighCPU&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">expr&lt;/span>: &lt;span style="color:#ae81ff">100&lt;/span> - &lt;span style="color:#ae81ff">(avg by(instance)(rate(node_cpu_seconds_total{mode=&amp;#34;idle&amp;#34;}[5m])) * 100) &amp;gt; 85&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">for&lt;/span>: &lt;span style="color:#ae81ff">10m&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">labels&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">severity&lt;/span>: &lt;span style="color:#ae81ff">warning&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">annotations&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">summary&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;CPU usage over 85% on {{ $labels.instance }}&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">alert&lt;/span>: &lt;span style="color:#ae81ff">DiskAlmostFull&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">expr&lt;/span>: &lt;span style="color:#ae81ff">(node_filesystem_avail_bytes{fstype!~&amp;#34;tmpfs|fuse.lxcfs&amp;#34;} / node_filesystem_size_bytes) * 100 &amp;lt; 15&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">for&lt;/span>: &lt;span style="color:#ae81ff">5m&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">labels&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">severity&lt;/span>: &lt;span style="color:#ae81ff">warning&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">annotations&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">summary&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Disk {{ $labels.mountpoint }} on {{ $labels.instance }} is {{ $value | printf \&amp;#34;%.0f\&amp;#34; }}% full&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">alert&lt;/span>: &lt;span style="color:#ae81ff">HighRAMUsage&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">expr&lt;/span>: &lt;span style="color:#ae81ff">(1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100 &amp;gt; 90&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">for&lt;/span>: &lt;span style="color:#ae81ff">5m&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">labels&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">severity&lt;/span>: &lt;span style="color:#ae81ff">warning&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">annotations&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">summary&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;RAM usage over 90% on {{ $labels.instance }}&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Alertmanager configuration:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># /opt/stacks/monitoring/alertmanager/alertmanager.yml&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">global&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">resolve_timeout&lt;/span>: &lt;span style="color:#ae81ff">5m&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">route&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">group_by&lt;/span>: [&lt;span style="color:#e6db74">&amp;#39;alertname&amp;#39;&lt;/span>, &lt;span style="color:#e6db74">&amp;#39;instance&amp;#39;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">group_wait&lt;/span>: &lt;span style="color:#ae81ff">10s&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">group_interval&lt;/span>: &lt;span style="color:#ae81ff">10m&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">repeat_interval&lt;/span>: &lt;span style="color:#ae81ff">12h&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">receiver&lt;/span>: &lt;span style="color:#e6db74">&amp;#39;discord&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">receivers&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">name&lt;/span>: &lt;span style="color:#e6db74">&amp;#39;discord&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">discord_configs&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">webhook_url&lt;/span>: &lt;span style="color:#e6db74">&amp;#39;https://discord.com/api/webhooks/YOUR-WEBHOOK-URL&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">title&lt;/span>: &lt;span style="color:#e6db74">&amp;#39;{{ .GroupLabels.alertname }}&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">message&lt;/span>: &lt;span style="color:#e6db74">&amp;#39;{{ range .Alerts }}{{ .Annotations.summary }}{{ end }}&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Replace the Discord webhook URL with your own. Alertmanager also supports Slack, PagerDuty, Telegram, email, and many others — see the &lt;a href="https://prometheus.io/docs/alerting/latest/configuration/" rel="noopener">Alertmanager docs&lt;/a> for other receivers.&lt;/p>
&lt;p>&lt;strong>Docker Compose file:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># /opt/stacks/monitoring/docker-compose.yml&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">services&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">prometheus&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">prom/prometheus:latest&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">prometheus&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">unless-stopped&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">./prometheus:/etc/prometheus&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">prometheus_data:/prometheus&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">command&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#39;--config.file=/etc/prometheus/prometheus.yml&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#39;--storage.tsdb.path=/prometheus&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#39;--storage.tsdb.retention.time=15d&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#39;--web.enable-lifecycle&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">networks&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">monitoring&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">proxy&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">grafana&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">grafana/grafana:latest&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">grafana&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">unless-stopped&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">grafana_data:/var/lib/grafana&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">environment&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">GF_SECURITY_ADMIN_PASSWORD&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;change-this-password&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">GF_USERS_ALLOW_SIGN_UP&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;false&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">networks&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">monitoring&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">proxy&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">alertmanager&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">prom/alertmanager:latest&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">alertmanager&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">unless-stopped&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">./alertmanager:/etc/alertmanager&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">networks&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">monitoring&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">node-exporter&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">prom/node-exporter:latest&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">node-exporter&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">unless-stopped&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">pid&lt;/span>: &lt;span style="color:#ae81ff">host&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">/proc:/host/proc:ro&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">/sys:/host/sys:ro&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">/:/rootfs:ro&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">command&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#39;--path.procfs=/host/proc&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#39;--path.sysfs=/host/sys&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#39;--path.rootfs=/rootfs&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#39;--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">networks&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">monitoring&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">prometheus_data&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">grafana_data&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">networks&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">monitoring&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">driver&lt;/span>: &lt;span style="color:#ae81ff">bridge&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">proxy&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">external&lt;/span>: &lt;span style="color:#66d9ef">true&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Start the stack:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>cd /opt/stacks/monitoring
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker compose up -d
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="install-node-exporter-on-each-proxmox-node">Install Node Exporter on each Proxmox node&lt;/h2>
&lt;p>On every machine you want to monitor (Proxmox hosts, NAS, etc.):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Download and install Node Exporter&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>NODE_EXPORTER_VERSION&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1.8.2&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>wget https://github.com/prometheus/node_exporter/releases/download/v&lt;span style="color:#e6db74">${&lt;/span>NODE_EXPORTER_VERSION&lt;span style="color:#e6db74">}&lt;/span>/node_exporter-&lt;span style="color:#e6db74">${&lt;/span>NODE_EXPORTER_VERSION&lt;span style="color:#e6db74">}&lt;/span>.linux-amd64.tar.gz
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>tar xzf node_exporter-*.tar.gz
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mv node_exporter-*/node_exporter /usr/local/bin/
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Create a systemd service:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-ini" data-lang="ini">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># /etc/systemd/system/node_exporter.service&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[Unit]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">Description&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">Prometheus Node Exporter&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">After&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">network.target&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[Service]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">User&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">nobody&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">ExecStart&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">/usr/local/bin/node_exporter&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">Restart&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">on-failure&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[Install]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">WantedBy&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">multi-user.target&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>systemctl enable --now node_exporter
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Verify it&amp;#39;s up&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>curl -s http://localhost:9100/metrics | head -5
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Add the node&amp;rsquo;s IP to your Prometheus &lt;code>prometheus.yml&lt;/code> scrape config under &lt;code>proxmox-nodes&lt;/code>, then reload Prometheus:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>curl -X POST http://localhost:9090/-/reload
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="proxmox-specific-monitoring-with-pve-exporter">Proxmox-specific monitoring with pve-exporter&lt;/h2>
&lt;p>Node Exporter monitors the Proxmox host OS. For per-VM and per-LXC metrics (CPU, RAM, disk per VM), use pve-exporter:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>pip3 install prometheus-pve-exporter
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Create a config file&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mkdir -p /etc/pve_exporter
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cat &amp;gt; /etc/pve_exporter/pve.yml &lt;span style="color:#e6db74">&amp;lt;&amp;lt; &amp;#39;EOF&amp;#39;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">default:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> user: pve-monitor@pve
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> password: &amp;#34;strong-password-here&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> verify_ssl: false
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">EOF&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Create the Proxmox API user:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>pveum user add pve-monitor@pve
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>pveum passwd pve-monitor@pve
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>pveum aclmod / -user pve-monitor@pve -role PVEAuditor
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Run pve-exporter as a systemd service and add it to your Prometheus scrape config:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">job_name&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;pve&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">static_configs&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">targets&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#34;192.168.1.10:9221&amp;#34;&lt;/span> &lt;span style="color:#75715e"># pve-exporter running on monitoring host&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">metrics_path&lt;/span>: &lt;span style="color:#ae81ff">/pve&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">params&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">module&lt;/span>: [&lt;span style="color:#ae81ff">default]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">cluster&lt;/span>: [&lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">node&lt;/span>: [&lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="grafana-setup">Grafana setup&lt;/h2>
&lt;ol>
&lt;li>Open Grafana at &lt;code>http://monitoring-host:3000&lt;/code> (or via NPM at &lt;code>grafana.yourdomain.com&lt;/code>)&lt;/li>
&lt;li>Log in with admin / your configured password&lt;/li>
&lt;li>Add a data source: Configuration → Data Sources → Add → Prometheus → URL: &lt;code>http://prometheus:9090&lt;/code>&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Import dashboards:&lt;/strong>&lt;/p>
&lt;p>Grafana&amp;rsquo;s dashboard library at &lt;a href="https://grafana.com/grafana/dashboards" rel="noopener">grafana.com/grafana/dashboards&lt;/a> has ready-made dashboards for Node Exporter.&lt;/p>
&lt;p>Import these by ID (Dashboards → Import → enter ID):&lt;/p>
&lt;ul>
&lt;li>&lt;strong>1860&lt;/strong> — Node Exporter Full (the definitive node metrics dashboard)&lt;/li>
&lt;li>&lt;strong>10229&lt;/strong> — Node Exporter for Prometheus Dashboard&lt;/li>
&lt;li>&lt;strong>7039&lt;/strong> — Proxmox via Prometheus (pve-exporter dashboard)&lt;/li>
&lt;/ul>
&lt;p>After import, set the data source to your Prometheus instance. Dashboard 1860 immediately shows:&lt;/p>
&lt;ul>
&lt;li>CPU usage over time per core&lt;/li>
&lt;li>RAM used, available, cached, buffered&lt;/li>
&lt;li>Disk IO (reads/writes per second)&lt;/li>
&lt;li>Filesystem usage with trend&lt;/li>
&lt;li>Network traffic per interface&lt;/li>
&lt;/ul>
&lt;h2 id="building-a-custom-alert-for-disk-space">Building a custom alert for disk space&lt;/h2>
&lt;p>The alert in the alerts.yml above fires when any filesystem drops below 15% free. This is a broad catch. For a homelab with a NAS that&amp;rsquo;s intentionally at 95% capacity (by design), you&amp;rsquo;d get false alerts. Refine it:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">alert&lt;/span>: &lt;span style="color:#ae81ff">DiskAlmostFull&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">expr&lt;/span>: |&lt;span style="color:#e6db74">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> (node_filesystem_avail_bytes{
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> fstype!~&amp;#34;tmpfs|fuse.lxcfs&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> mountpoint!~&amp;#34;/boot.*|/run.*&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> } / node_filesystem_size_bytes) * 100 &amp;lt; 15
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> and
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> node_filesystem_size_bytes &amp;gt; 10 * 1024^3&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">for&lt;/span>: &lt;span style="color:#ae81ff">5m&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">labels&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">severity&lt;/span>: &lt;span style="color:#ae81ff">warning&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">annotations&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">summary&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Disk {{ $labels.mountpoint }} at {{ printf \&amp;#34;%.0f\&amp;#34; $value }}% free on {{ $labels.instance }}&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The &lt;code>node_filesystem_size_bytes &amp;gt; 10 * 1024^3&lt;/code> filter only fires the alert for filesystems larger than 10GB — excluding tiny boot partitions and tmpfs mounts that are supposed to be &amp;ldquo;full.&amp;rdquo;&lt;/p>
&lt;h2 id="what-to-monitor-beyond-nodes">What to monitor beyond nodes&lt;/h2>
&lt;p>&lt;strong>Docker containers.&lt;/strong> &lt;a href="https://github.com/google/cadvisor" rel="noopener">cAdvisor&lt;/a> exports per-container CPU, memory, and network metrics to Prometheus. Add it to your Docker Compose stack and import the cAdvisor dashboard (ID: 14282).&lt;/p>
&lt;p>&lt;strong>UPS status.&lt;/strong> If you&amp;rsquo;re running NUT (Network UPS Tools) for your UPS, &lt;a href="https://github.com/DRuggeri/nut_exporter" rel="noopener">nut-exporter&lt;/a> exposes battery charge, load percentage, and estimated runtime to Prometheus. Alert when battery drops below 50% and you have warning time before the power problem becomes a shutdown problem. Not sure how much runtime your UPS actually gives you? The &lt;a href="https://techfuelhq.com/tools/ups-runtime-calculator/">UPS Runtime Calculator&lt;/a> estimates runtime at load before you wire up monitoring.&lt;/p>
&lt;p>&lt;strong>SMART disk health.&lt;/strong> &lt;a href="https://github.com/prometheus-community/node-exporter-textfile-collector-scripts" rel="noopener">smartmon-textfile&lt;/a> is a shell script that runs smartctl and outputs Prometheus text format. Run it as a cron job and Node Exporter picks it up via the textfile collector. Alert when reallocated sector count is non-zero.&lt;/p>
&lt;p>&lt;strong>Proxmox backup job status.&lt;/strong> PBS exposes a metrics endpoint — or you can write a simple exporter that checks PBS backup job last-run status via the API and exposes a gauge. Alert when last backup is older than 25 hours.&lt;/p>
&lt;h2 id="resource-overhead">Resource overhead&lt;/h2>
&lt;p>The full monitoring stack (Prometheus + Grafana + Alertmanager + Node Exporter) on a 5-node homelab:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Prometheus RAM:&lt;/strong> 150–300MB (grows with time series count and retention period)&lt;/li>
&lt;li>&lt;strong>Grafana RAM:&lt;/strong> 80–150MB&lt;/li>
&lt;li>&lt;strong>Alertmanager RAM:&lt;/strong> 20–40MB&lt;/li>
&lt;li>&lt;strong>Node Exporter per node:&lt;/strong> 10–20MB&lt;/li>
&lt;/ul>
&lt;p>Total: 300–600MB for the monitoring infrastructure. Cheap. The 15-day Prometheus retention stores approximately 500MB–2GB of metrics data for 5 nodes at 15-second scrape intervals — fit it on an NVMe, not an HDD (Prometheus is write-intensive).&lt;/p>
&lt;hr>
&lt;p>&lt;em>Using Docker for this stack? The &lt;a href="https://techfuelhq.com/tutorials/docker-compose-starter-stack-homelab-2026/">Docker Compose Starter Stack&lt;/a> covers the baseline services (NPM, Portainer, Uptime Kuma) that complement this monitoring setup.&lt;/em>&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://prometheus.io/docs/introduction/overview/" rel="noopener">Prometheus Overview&lt;/a> &amp;ndash; official docs on the pull-based scraping model, time-series storage, and exporter ecosystem.&lt;/li>
&lt;li>&lt;a href="https://prometheus.io/docs/alerting/latest/alertmanager/" rel="noopener">Prometheus Alertmanager&lt;/a> &amp;ndash; official docs on alert grouping, routing, and notification receivers.&lt;/li>
&lt;li>&lt;a href="https://grafana.com/docs/grafana/latest/" rel="noopener">Grafana documentation&lt;/a> &amp;ndash; official docs for adding a Prometheus data source and importing dashboards.&lt;/li>
&lt;li>&lt;a href="https://github.com/prometheus/node_exporter" rel="noopener">Prometheus Node Exporter&lt;/a> &amp;ndash; official repository for the Linux hardware and OS metrics exporter on port 9100.&lt;/li>
&lt;li>&lt;a href="https://github.com/prometheus-pve/prometheus-pve-exporter" rel="noopener">prometheus-pve-exporter&lt;/a> &amp;ndash; official repository for the Proxmox VE exporter covering per-VM and per-LXC metrics.&lt;/li>
&lt;/ul></description></item><item><title>24/7 Homelab Idle Power Costs: What It Really Costs to Run</title><link>https://techfuelhq.com/homelab/24-7-homelab-idle-power-costs-2026/</link><pubDate>Thu, 04 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/homelab/24-7-homelab-idle-power-costs-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-04 · ~11 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/homelab/24-7-homelab-idle-power-costs-2026.svg" alt="Annual electricity cost by homelab configuration at $0.13/kWh: starter N100 mini PC plus 4-bay NAS at 28-40W costs $32-46/year, a 3-node cluster at 70-120W costs $80-137, a used Dell R720 rack server at 80-100W costs $91-114, and a full multi-node plus GPU setup at 155-220W costs $177-251 — with mini PCs idling 5-8x lower than rack servers" width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>The question &amp;ldquo;how much does a homelab cost to run?&amp;rdquo; gets hand-waved more often than it gets answered. This article answers it with specific hardware numbers, not vague estimates.&lt;/p>
&lt;p>Idle power — what hardware draws when powered on and not under active workload — is the baseline cost you pay 24 hours a day, 365 days a year. Everything else (peak load, backup windows, encode runs) adds on top. For 24/7 homelab hardware, idle power is the majority of your annual electricity cost.&lt;/p>
&lt;h2 id="methodology">Methodology&lt;/h2>
&lt;p>Power figures below come from three sources, in order of preference:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Measured values&lt;/strong> — published in third-party reviews that explicitly state Kill-A-Watt or at-the-wall measurements (ServeTheHome, STH forums, AnandTech archives, specific community hardware testing threads cited below)&lt;/li>
&lt;li>&lt;strong>Manufacturer TDP + idle ratio estimation&lt;/strong> — where measured idle data is unavailable, manufacturer TDP with a 25–40% idle ratio applied&lt;/li>
&lt;li>&lt;strong>Platform-class estimates&lt;/strong> — for generic device categories where no specific hardware is identified&lt;/li>
&lt;/ol>
&lt;p>Figures marked with (M) are measured values from cited sources. Figures marked with (E) are estimates based on methodology above. Use the &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">Power &amp;amp; Cost Calculator&lt;/a> to plug in your specific hardware — these are starting points.&lt;/p>
&lt;h2 id="mini-pc--sff-nodes-proxmox-hosts">Mini PC / SFF nodes (Proxmox hosts)&lt;/h2>
&lt;p>Mini PCs are the dominant choice for new homelabs in 2026 — they offer reasonable CPU performance at dramatically lower idle power than tower servers or rack equipment.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Device&lt;/th>
&lt;th scope="col">CPU&lt;/th>
&lt;th scope="col">Idle Power&lt;/th>
&lt;th scope="col">Source&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Beelink SEi12 / N95&lt;/td>
&lt;td>Intel N95 (15W TDP)&lt;/td>
&lt;td>8–12W (M)&lt;/td>
&lt;td>STH community measurements&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Beelink SEi12 Pro / N150&lt;/td>
&lt;td>Intel N150 (15W TDP)&lt;/td>
&lt;td>10–15W (M)&lt;/td>
&lt;td>Multiple review measurements&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Beelink GTi14 Ultra&lt;/td>
&lt;td>Intel Core Ultra 5 125H&lt;/td>
&lt;td>18–28W (M)&lt;/td>
&lt;td>Hardware Unboxed, Serve The Home&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Beelink EQR6 / Ryzen 9 6900HX&lt;/td>
&lt;td>AMD Ryzen 9 6900HX&lt;/td>
&lt;td>22–35W (E)&lt;/td>
&lt;td>Laptop TDP reference + efficiency factor&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>MINISFORUM UM890 / Ryzen 9 8945HS&lt;/td>
&lt;td>AMD Ryzen 9 8945HS&lt;/td>
&lt;td>20–30W (E)&lt;/td>
&lt;td>AMD platform idle characteristics&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>MINISFORUM MS-01&lt;/td>
&lt;td>Intel Core i9-12900H&lt;/td>
&lt;td>30–45W (M)&lt;/td>
&lt;td>ServeTheHome MS-01 review&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Generic N100 mini PC&lt;/td>
&lt;td>Intel N100 (6W TDP)&lt;/td>
&lt;td>6–10W (M)&lt;/td>
&lt;td>Multiple community measurements&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Intel NUC 13 Pro / Core i7-1360P&lt;/td>
&lt;td>Intel i7-1360P&lt;/td>
&lt;td>15–25W (M)&lt;/td>
&lt;td>NUC review measurements&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>&lt;strong>Takeaway:&lt;/strong> Efficiency-class CPUs (N100, N95, N150) idle at single-digit watts. Performance mini PCs with Core i9/Ryzen 9 chips idle at 25–45W. For pure Proxmox hosting (VMs, containers), the N-series nodes are often the better choice economically — the performance difference is irrelevant if VMs are IO-bound.&lt;/p>
&lt;h2 id="tower-servers-and-workstations">Tower servers and workstations&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Device&lt;/th>
&lt;th scope="col">CPU&lt;/th>
&lt;th scope="col">Idle Power&lt;/th>
&lt;th scope="col">Source&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Dell PowerEdge R720 (1P, base)&lt;/td>
&lt;td>Xeon E5-2620&lt;/td>
&lt;td>80–100W (M)&lt;/td>
&lt;td>STH community, PowerEdge power tables&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Dell PowerEdge R730 (1P)&lt;/td>
&lt;td>Xeon E5-2600 v4&lt;/td>
&lt;td>90–120W (M)&lt;/td>
&lt;td>STH community&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Dell PowerEdge R720 (2P loaded)&lt;/td>
&lt;td>2× Xeon + 16 DIMMs&lt;/td>
&lt;td>150–200W (M)&lt;/td>
&lt;td>STH forum reports&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Custom tower, Ryzen 7 7800X3D + RTX 5080&lt;/td>
&lt;td>Ryzen 7 7800X3D / RTX 5080&lt;/td>
&lt;td>80–100W (M)&lt;/td>
&lt;td>My own system, Kill-A-Watt at wall&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Custom tower, Ryzen 5 7600X, no GPU&lt;/td>
&lt;td>Ryzen 5 7600X&lt;/td>
&lt;td>45–65W (E)&lt;/td>
&lt;td>AMD platform characteristics&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>HP EliteDesk 800 G5 SFF&lt;/td>
&lt;td>Core i7-9700&lt;/td>
&lt;td>20–30W (M)&lt;/td>
&lt;td>STH community, HP published specs&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>&lt;strong>Takeaway:&lt;/strong> Enterprise rack servers from 2013–2018 have high idle floors. A 1U Dell R720 with a single CPU idles at 80–100W — 8–10× a modern mini PC for comparable compute on lightly-threaded workloads. They shine for large RAM configurations and enterprise expansion cards at low per-GB RAM cost. For power-conscious homelabs, used SFF business PCs (HP EliteDesk, Dell OptiPlex) offer a middle ground.&lt;/p>
&lt;h2 id="nas-devices">NAS devices&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Device&lt;/th>
&lt;th scope="col">Config&lt;/th>
&lt;th scope="col">Idle Power&lt;/th>
&lt;th scope="col">Source&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Synology DS923+ (no drives)&lt;/td>
&lt;td>Ryzen R1600 platform&lt;/td>
&lt;td>20–30W (M)&lt;/td>
&lt;td>Synology spec sheet, community measurements&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Synology DS923+ (4× HDD, spinning)&lt;/td>
&lt;td>+ 4 × 4TB HDD&lt;/td>
&lt;td>35–50W (E)&lt;/td>
&lt;td>NAS + drive idle additive&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>TrueNAS Scale node (mini PC)&lt;/td>
&lt;td>N100 + 4-bay HBA&lt;/td>
&lt;td>20–30W (E)&lt;/td>
&lt;td>Mini PC idle + HBA + drives&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>QNAP TS-464 (no drives)&lt;/td>
&lt;td>N5105&lt;/td>
&lt;td>18–25W (M)&lt;/td>
&lt;td>QNAP published specs&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Terramaster F4-424 Pro (no drives)&lt;/td>
&lt;td>N100&lt;/td>
&lt;td>15–20W (E)&lt;/td>
&lt;td>N100 platform&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>DIY NAS (used HP Microserver G10+)&lt;/td>
&lt;td>AMD 200GE&lt;/td>
&lt;td>30–45W (E)&lt;/td>
&lt;td>AM4 platform estimate&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>&lt;strong>HDD idle note.&lt;/strong> A spinning 3.5&amp;quot; HDD uses 4–6W at idle (heads unparked, spinning). In standby (spin-down), it drops to 0.5–1.5W. NAS units with spin-down configured can save 15–25W if drives are mostly idle. ZFS is not friendly to spin-down (frequent scrubs and cache writes keep drives spinning) — factor this in if you&amp;rsquo;re running TrueNAS.&lt;/p>
&lt;p>&lt;strong>NVMe vs HDD for NAS power.&lt;/strong> Replacing four 3.5&amp;quot; HDDs with four NVMe drives saves approximately 12–20W at idle. NVMe idles at 0.5–2W per drive. At $0.13/kWh, 15W savings over a year = 131 kWh = $17/year. At California rates, $37/year. For a 24/7 NAS, the power argument for NVMe is real alongside the performance argument.&lt;/p>
&lt;h2 id="networking">Networking&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Device&lt;/th>
&lt;th scope="col">Type&lt;/th>
&lt;th scope="col">Idle Power&lt;/th>
&lt;th scope="col">Source&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>MikroTik hEX (RB750Gr3)&lt;/td>
&lt;td>5-port 1GbE router&lt;/td>
&lt;td>5–7W (M)&lt;/td>
&lt;td>MikroTik spec sheet, measurements&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>MikroTik CRS305-1G-4S+IN&lt;/td>
&lt;td>4-port 10GbE SFP+&lt;/td>
&lt;td>7–9W (M)&lt;/td>
&lt;td>MikroTik spec sheet&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>MikroTik CRS326-24G-2S+RM&lt;/td>
&lt;td>24-port 1GbE + 2× 10GbE&lt;/td>
&lt;td>18–22W (M)&lt;/td>
&lt;td>MikroTik spec sheet&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ubiquiti UniFi US-8-60W (PoE)&lt;/td>
&lt;td>8-port PoE switch&lt;/td>
&lt;td>10–16W (not counting PoE draw)&lt;/td>
&lt;td>Ubiquiti specs&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Cisco SG350-28&lt;/td>
&lt;td>28-port managed&lt;/td>
&lt;td>35–50W (M)&lt;/td>
&lt;td>Cisco data sheet&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>TP-Link TL-SG108E&lt;/td>
&lt;td>8-port unmanaged 1GbE&lt;/td>
&lt;td>3–5W (M)&lt;/td>
&lt;td>Multiple reviews&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Netgear GS308E&lt;/td>
&lt;td>8-port managed 1GbE&lt;/td>
&lt;td>5–8W (M)&lt;/td>
&lt;td>Netgear spec sheet&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>&lt;strong>Takeaway:&lt;/strong> MikroTik is the most power-efficient managed switch option for homelabs. The CRS305 gives you 4× 10GbE SFP+ for under 9W — remarkable for what it does. Cisco enterprise switches at 35–50W for 28 ports are fine in an office with hundreds of devices; for a homelab with 8–12 devices, they&amp;rsquo;re wasteful.&lt;/p>
&lt;h2 id="annual-cost-by-configuration">Annual cost by configuration&lt;/h2>
&lt;p>Using $0.13/kWh (US average, EIA Q1 2026), 24/7 operation:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Configuration&lt;/th>
&lt;th scope="col">Total Idle W&lt;/th>
&lt;th scope="col">Annual kWh&lt;/th>
&lt;th scope="col">Annual Cost&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Starter (N100 mini PC + 4-bay NAS)&lt;/td>
&lt;td>28–40W&lt;/td>
&lt;td>245–350 kWh&lt;/td>
&lt;td>$32–46&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Standard (N150 mini PC + 4-bay NAS + 8-port switch)&lt;/td>
&lt;td>35–55W&lt;/td>
&lt;td>307–482 kWh&lt;/td>
&lt;td>$40–63&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>3-node cluster (3× mini PC + NAS + 10GbE switch)&lt;/td>
&lt;td>70–120W&lt;/td>
&lt;td>613–1,051 kWh&lt;/td>
&lt;td>$80–137&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Single used rack server (R720 1P)&lt;/td>
&lt;td>80–100W&lt;/td>
&lt;td>701–876 kWh&lt;/td>
&lt;td>$91–114&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GPU workstation AI node (RTX 5080, idle)&lt;/td>
&lt;td>85–100W&lt;/td>
&lt;td>745–876 kWh&lt;/td>
&lt;td>$97–114&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Full setup (3-node + NAS + GPU workstation + switch)&lt;/td>
&lt;td>155–220W&lt;/td>
&lt;td>1,358–1,927 kWh&lt;/td>
&lt;td>$177–251&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>&lt;strong>The mini PC vs rack server gap.&lt;/strong> A 3-node mini PC cluster idles at 60–90W total. A single 1U Dell R720 idles at 80–100W. The three mini PCs offer more total cores, better per-core performance, less rack noise, and lower electricity cost than the single enterprise server. For homelab use cases, the argument for rack servers rests on RAM capacity (DDR3 RDIMM is cheap), storage slots, and expansion cards — not power efficiency.&lt;/p>
&lt;h2 id="regional-rate-comparison">Regional rate comparison&lt;/h2>
&lt;p>At the same 40W idle draw (standard single-node setup), annual electricity cost by US region:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Region&lt;/th>
&lt;th scope="col">Avg Rate&lt;/th>
&lt;th scope="col">Annual Cost&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Louisiana&lt;/td>
&lt;td>~$0.09/kWh&lt;/td>
&lt;td>$32&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Missouri&lt;/td>
&lt;td>~$0.11/kWh&lt;/td>
&lt;td>$38&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Texas (ERCOT)&lt;/td>
&lt;td>~$0.12/kWh&lt;/td>
&lt;td>$42&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>US Average&lt;/td>
&lt;td>~$0.132/kWh&lt;/td>
&lt;td>$46&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>New York&lt;/td>
&lt;td>~$0.22/kWh&lt;/td>
&lt;td>$77&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>California (SCE/PG&amp;amp;E average)&lt;/td>
&lt;td>~$0.28/kWh&lt;/td>
&lt;td>$98&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Hawaii&lt;/td>
&lt;td>~$0.38/kWh&lt;/td>
&lt;td>$133&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Sources: EIA Electric Power Monthly, Q1 2026 data. Residential average rates including all fees.&lt;/p>
&lt;p>California and Hawaii homelab operators pay 3–4× more per kWh than Louisiana and Missouri. At 40W idle, that&amp;rsquo;s an extra $55–91/year — meaningful but not prohibitive. At 200W idle (full multi-node setup), that gap becomes $275–455/year, which starts to inform hardware efficiency decisions.&lt;/p>
&lt;h2 id="reducing-idle-power">Reducing idle power&lt;/h2>
&lt;p>&lt;strong>Power profiles.&lt;/strong> Set the host CPU governor to &lt;code>powersave&lt;/code> or &lt;code>schedutil&lt;/code> on Proxmox:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>echo powersave | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>On always-on nodes with modest VM workloads, powersave governor can cut idle draw by 10–20% with no visible performance impact.&lt;/p>
&lt;p>&lt;strong>Drive spin-down.&lt;/strong> On NAS units, configure drives to spin down after 20–30 minutes of inactivity. This saves 15–25W when the NAS is sitting idle overnight. ZFS users: disable spin-down or configure a scrub schedule that doesn&amp;rsquo;t run overnight when you want spin-down to activate.&lt;/p>
&lt;p>&lt;strong>Shut down what you&amp;rsquo;re not using.&lt;/strong> A mini PC you&amp;rsquo;re not actively using that sits at idle 22 hours/day is 22 hours of electricity for zero benefit. Schedule shutdowns or use Wake-on-LAN to bring nodes up only when needed.&lt;/p>
&lt;p>&lt;strong>Efficient NAS sizing.&lt;/strong> A 2-bay NAS at 20W beats a 4-bay NAS at 40W if you only need 2 drives of storage. Size the enclosure to what you need, not what you might grow into.&lt;/p>
&lt;p>Use the &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">Power &amp;amp; Cost Calculator&lt;/a> to model your specific setup — enter each device&amp;rsquo;s measured or estimated idle watts and see the annual cost. The calculator also shows the vs-cloud delta, which contextualizes the power cost against what you&amp;rsquo;d pay for equivalent hosted infrastructure.&lt;/p>
&lt;hr>
&lt;p>&lt;em>For UPS sizing based on your total idle draw, see the &lt;a href="https://techfuelhq.com/homelab/ups-power-sizing-homelab-2026/">UPS Power Sizing guide&lt;/a> and use the &lt;a href="https://techfuelhq.com/tools/ups-runtime-calculator/">UPS Runtime Calculator&lt;/a> to model runtime at your specific load. For mini PC picks that optimize the efficiency numbers above, see &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">Best Mini PCs for the Homelab 2026&lt;/a>.&lt;/em>&lt;/p></description></item><item><title>Automated Off-Site Backups with restic (2026)</title><link>https://techfuelhq.com/tutorials/automated-offsite-backups-restic-2026/</link><pubDate>Thu, 04 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tutorials/automated-offsite-backups-restic-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-04 · ~13 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/tutorials/automated-offsite-backups-restic-2026.svg" alt="Architecture diagram of the restic to Backblaze B2 off-site backup pipeline: a systemd timer fires at 3am with a 15-minute randomized delay, restic reads /opt/stacks, /etc and /home, encrypts and deduplicates client-side, uploads over HTTPS to a private B2 bucket, then applies a 7-daily / 4-weekly / 6-monthly retention policy (max 17 snapshots) and pings Uptime Kuma or healthchecks.io on success. Forms copy 3 of a 3-2-1 stack at about $1.40/month for 200GB." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>A backup that doesn&amp;rsquo;t run automatically doesn&amp;rsquo;t run. A backup that isn&amp;rsquo;t off-site doesn&amp;rsquo;t protect you from physical disasters. A backup you haven&amp;rsquo;t tested restoring from might not actually work. This guide sets up restic — the best homelab backup tool available — with Backblaze B2 as the off-site destination, automated scheduling via systemd, and monitoring so you know when backups fail.&lt;/p>
&lt;h2 id="why-restic">Why restic&lt;/h2>
&lt;p>restic is a fast, encrypted, deduplicated backup tool written in Go. It:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Encrypts everything client-side&lt;/strong> before upload — Backblaze can&amp;rsquo;t read your data&lt;/li>
&lt;li>&lt;strong>Deduplicates at the chunk level&lt;/strong> — backing up files that haven&amp;rsquo;t changed costs nothing after the first backup&lt;/li>
&lt;li>&lt;strong>Handles incremental backups natively&lt;/strong> — no need to manage &amp;ldquo;full&amp;rdquo; vs &amp;ldquo;differential&amp;rdquo; schedules&lt;/li>
&lt;li>&lt;strong>Compresses since v0.14.0&lt;/strong> — the old &amp;ldquo;restic has no compression&amp;rdquo; line is years out of date&lt;/li>
&lt;/ul>
&lt;p>If you&amp;rsquo;re still choosing a tool rather than deploying one, &lt;a href="https://techfuelhq.com/homelab/restic-vs-borg-vs-kopia-2026/">restic vs Borg vs Kopia&lt;/a> decides it by where your backup lands — restic and Kopia write straight into a bucket, Borg needs its own binary at the far end.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Supports many backends&lt;/strong> — B2, S3, SFTP, Wasabi, local filesystem, and more&lt;/li>
&lt;li>&lt;strong>Has no backup agent required on the destination&lt;/strong> — just the restic binary on your machine and credentials to the remote&lt;/li>
&lt;/ul>
&lt;h2 id="step-1-install-restic">Step 1: Install restic&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Debian/Ubuntu&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>apt install -y restic
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Or download the binary directly. restic&amp;#39;s release assets are version-stamped,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># so there is no &amp;#34;latest&amp;#34; filename — check github.com/restic/restic/releases and&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># substitute the current version for 0.19.1 below.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>wget https://github.com/restic/restic/releases/download/v0.19.1/restic_0.19.1_linux_amd64.bz2
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>bzip2 -d restic_0.19.1_linux_amd64.bz2
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mv restic_0.19.1_linux_amd64 /usr/local/bin/restic
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>chmod +x /usr/local/bin/restic
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Verify&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>restic version
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="step-2-set-up-backblaze-b2">Step 2: Set up Backblaze B2&lt;/h2>
&lt;ol>
&lt;li>Create a Backblaze account at &lt;a href="https://www.backblaze.com/b2/cloud-storage.html" rel="noopener">backblaze.com&lt;/a>&lt;/li>
&lt;li>Create a bucket: &lt;strong>Buckets → Create a Bucket&lt;/strong>
&lt;ul>
&lt;li>Bucket name: &lt;code>homelab-restic-backups-yourname&lt;/code> (must be globally unique)&lt;/li>
&lt;li>Files in Bucket: Private&lt;/li>
&lt;li>Default Encryption: Enabled (optional — restic encrypts anyway, but defense in depth)&lt;/li>
&lt;li>Object Lock: Optional — enables immutable storage, protects against ransomware deleting backups&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Create an Application Key: &lt;strong>App Keys → Add a New Application Key&lt;/strong>
&lt;ul>
&lt;li>Name: &lt;code>restic-homelab&lt;/code>&lt;/li>
&lt;li>Allow access to: only the bucket you created&lt;/li>
&lt;li>Type of Access: Read and Write&lt;/li>
&lt;li>Note the &lt;code>keyID&lt;/code> and &lt;code>applicationKey&lt;/code> — they&amp;rsquo;re shown once&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;h2 id="step-3-create-the-environment-file">Step 3: Create the environment file&lt;/h2>
&lt;p>Store your credentials in a protected file — not in scripts or cron commands:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>mkdir -p /etc/restic
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>chmod &lt;span style="color:#ae81ff">700&lt;/span> /etc/restic
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cat &amp;gt; /etc/restic/b2.env &lt;span style="color:#e6db74">&amp;lt;&amp;lt; &amp;#39;EOF&amp;#39;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">B2_ACCOUNT_ID=your-keyID-here
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">B2_ACCOUNT_KEY=your-applicationKey-here
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">RESTIC_REPOSITORY=b2:homelab-restic-backups-yourname:/
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">RESTIC_PASSWORD=your-strong-backup-password-here
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">EOF&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>chmod &lt;span style="color:#ae81ff">600&lt;/span> /etc/restic/b2.env
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>The repository password&lt;/strong> (&lt;code>RESTIC_PASSWORD&lt;/code>) encrypts all your backup data. If you lose it, your backup data is permanently inaccessible. Store this password:&lt;/p>
&lt;ul>
&lt;li>In your password manager (Vaultwarden/Bitwarden)&lt;/li>
&lt;li>In a physical printout stored somewhere safe&lt;/li>
&lt;li>NOT only on the machine you&amp;rsquo;re backing up&lt;/li>
&lt;/ul>
&lt;h2 id="step-4-initialize-the-repository">Step 4: Initialize the repository&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>source /etc/restic/b2.env
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>restic init
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>You should see:&lt;/p>
&lt;pre tabindex="0">&lt;code>created restic repository abc123def at b2:homelab-restic-backups-yourname:/
&lt;/code>&lt;/pre>&lt;p>This creates the repository structure in your B2 bucket. It stores encrypted keys and an index in the bucket root.&lt;/p>
&lt;h2 id="step-5-first-backup">Step 5: First backup&lt;/h2>
&lt;p>Test with a manual backup of a small directory first:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>source /etc/restic/b2.env
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Back up a single directory&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>restic backup /opt/stacks/vaultwarden/data
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Check what was backed up&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>restic snapshots
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>You should see a snapshot entry with the date, hostname, and paths backed up.&lt;/p>
&lt;p>For a homelab, back up:&lt;/p>
&lt;ul>
&lt;li>Docker service data directories: &lt;code>/opt/stacks/*/data&lt;/code>&lt;/li>
&lt;li>Configuration files: &lt;code>/etc/&lt;/code>&lt;/li>
&lt;li>Home directories: &lt;code>/home/&lt;/code>&lt;/li>
&lt;li>Anything in &lt;code>/opt/&lt;/code> you care about&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>restic backup &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> /opt/stacks &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> /etc &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> /home &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --exclude &lt;span style="color:#e6db74">&amp;#34;*.tmp&amp;#34;&lt;/span> &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --exclude &lt;span style="color:#e6db74">&amp;#34;**/cache/**&amp;#34;&lt;/span> &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --exclude &lt;span style="color:#e6db74">&amp;#34;**/node_modules/**&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The &lt;code>--exclude&lt;/code> flags keep temporary files out of the backup. Add more excludes for large directories you don&amp;rsquo;t need to back up (video files, ISO images).&lt;/p>
&lt;h2 id="step-6-automate-with-systemd">Step 6: Automate with systemd&lt;/h2>
&lt;p>Create two files: a service (what to run) and a timer (when to run it).&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-ini" data-lang="ini">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># /etc/systemd/system/restic-backup.service&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[Unit]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">Description&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">Restic backup to Backblaze B2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">After&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">network-online.target&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">Wants&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">network-online.target&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[Service]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">Type&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">oneshot&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">EnvironmentFile&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">/etc/restic/b2.env&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">ExecStart&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">/usr/bin/restic backup \
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> /opt/stacks \
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> /etc \
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> /home \
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> --exclude &amp;#34;*.tmp&amp;#34; \
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> --exclude &amp;#34;**/cache/**&amp;#34; \
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> --exclude &amp;#34;**/node_modules/**&amp;#34; \
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> --verbose&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">ExecStartPost&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">/usr/bin/restic forget \
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> --keep-daily 7 \
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> --keep-weekly 4 \
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> --keep-monthly 6 \
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> --prune&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">StandardOutput&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">journal&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">StandardError&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">journal&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-ini" data-lang="ini">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># /etc/systemd/system/restic-backup.timer&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[Unit]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">Description&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">Run Restic backup daily at 3am&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[Timer]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">OnCalendar&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">*-*-* 03:00:00&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">Persistent&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">RandomizedDelaySec&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">900&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[Install]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">WantedBy&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">timers.target&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The &lt;code>RandomizedDelaySec=900&lt;/code> adds a random 0–15 minute delay to the scheduled time. This prevents all your nodes from hammering B2 at exactly 3:00:00am simultaneously.&lt;/p>
&lt;p>Enable and start:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>systemctl daemon-reload
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>systemctl enable --now restic-backup.timer
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Verify timer is active&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>systemctl list-timers restic-backup.timer
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Run it manually to confirm it works:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>systemctl start restic-backup.service
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>journalctl -u restic-backup.service -f
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="step-7-retention-policy">Step 7: Retention policy&lt;/h2>
&lt;p>The &lt;code>restic forget --prune&lt;/code> command in the service removes old snapshots based on your retention policy. The settings above keep:&lt;/p>
&lt;pre tabindex="0">&lt;code>--keep-daily 7 → one snapshot per day for the last 7 days
--keep-weekly 4 → one per week for the last 4 weeks
--keep-monthly 6 → one per month for the last 6 months
&lt;/code>&lt;/pre>&lt;p>This gives you granular recovery for recent data and longer-term recovery points. After 6 months, only one snapshot per month is kept.&lt;/p>
&lt;p>Total snapshots over 6 months: at most 7 + 4 + 6 = 17 snapshots. Because of deduplication, the actual storage cost depends on how much data changed between backups — unchanged files across all 17 snapshots are stored only once.&lt;/p>
&lt;p>Adjust the retention to match your needs and your B2 storage budget.&lt;/p>
&lt;h2 id="step-8-monitor--know-when-backups-fail">Step 8: Monitor — know when backups fail&lt;/h2>
&lt;p>Silent backup failures are more dangerous than no backup at all — they create false confidence.&lt;/p>
&lt;p>&lt;strong>Option A: Uptime Kuma push monitor.&lt;/strong> Add this to the end of your systemd service to ping Uptime Kuma on success:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-ini" data-lang="ini">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">ExecStartPost&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">/usr/bin/curl -fsS \
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> &amp;#34;https://uptime.yourdomain.com/api/push/YOUR-PUSH-KEY?status=up&amp;amp;msg=restic+OK&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>If the service fails before reaching &lt;code>ExecStartPost&lt;/code>, or if the curl itself fails, Uptime Kuma doesn&amp;rsquo;t receive the push and alerts you.&lt;/p>
&lt;p>&lt;strong>Option B: healthchecks.io (free tier).&lt;/strong> healthchecks.io is a service designed specifically for this: you ping a URL after each successful backup, and it alerts you if the ping stops coming. The free tier covers 20 checks.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Add to ExecStartPost:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/usr/bin/curl -fsS https://hc-ping.com/YOUR-UUID
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Check backup status manually:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>source /etc/restic/b2.env
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>restic snapshots &lt;span style="color:#75715e"># list all snapshots&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>restic check &lt;span style="color:#75715e"># verify repository integrity&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Run &lt;code>restic check&lt;/code> weekly. It downloads metadata and verifies chunk hashes — it will catch a corrupt repository before you need a restore.&lt;/p>
&lt;h2 id="step-9-test-a-restore">Step 9: Test a restore&lt;/h2>
&lt;p>Do this before you need it:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>source /etc/restic/b2.env
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># List snapshots&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>restic snapshots
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Restore a specific file to a temp directory&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>restic restore latest &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --target /tmp/restic-test-restore &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --include /opt/stacks/vaultwarden/data/db.sqlite3
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Verify the file is there and readable&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ls -la /tmp/restic-test-restore/opt/stacks/vaultwarden/data/
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sqlite3 /tmp/restic-test-restore/opt/stacks/vaultwarden/data/db.sqlite3 &lt;span style="color:#e6db74">&amp;#34;.tables&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Do a full directory restore to verify your most important data at least monthly.&lt;/p>
&lt;h2 id="advanced-backing-up-proxmox-pbs-datastores">Advanced: backing up Proxmox PBS datastores&lt;/h2>
&lt;p>If you&amp;rsquo;re running &lt;a href="https://techfuelhq.com/tutorials/proxmox-backup-server-3-2-1-2026/">Proxmox Backup Server&lt;/a> for VM/LXC backups, you can use restic to push PBS datastore contents to B2 as the off-site layer:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-ini" data-lang="ini">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># /etc/systemd/system/restic-pbs.service&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[Unit]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">Description&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">Restic backup of PBS datastore to B2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">After&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">pve-storage-local.mount&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[Service]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">Type&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">oneshot&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">EnvironmentFile&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">/etc/restic/b2-pbs.env&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">ExecStart&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">/usr/bin/restic backup /mnt/backup-drive/pve-backups \
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> --tag pbs-datastore&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">ExecStartPost&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">/usr/bin/restic forget \
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> --tag pbs-datastore \
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> --keep-daily 3 --keep-weekly 2&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This gives you a 3-2-1 stack:&lt;/p>
&lt;ul>
&lt;li>Copy 1: live Proxmox VMs on the production host&lt;/li>
&lt;li>Copy 2: PBS local backup&lt;/li>
&lt;li>Copy 3: restic → B2 (off-site, encrypted)&lt;/li>
&lt;/ul>
&lt;h2 id="bandwidth-and-cost-estimate">Bandwidth and cost estimate&lt;/h2>
&lt;p>For a homelab with 200GB of unique backup data, after the initial upload:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Initial B2 upload:&lt;/strong> 200GB × $0 (B2 doesn&amp;rsquo;t charge upload bandwidth) = $0&lt;/li>
&lt;li>&lt;strong>Monthly storage:&lt;/strong> 200GB × $0.00695 = $1.39/month&lt;/li>
&lt;li>&lt;strong>Monthly incremental upload:&lt;/strong> if 5GB changes per day × 30 days = 150GB new data, but after deduplication maybe 3GB/month net new = ~$0.02/month extra&lt;/li>
&lt;li>&lt;strong>Total B2 cost:&lt;/strong> ~$1.40–1.70/month&lt;/li>
&lt;/ul>
&lt;p>For 100GB of backup data: ~$0.70/month. Off-site encrypted backup for less than a cup of coffee. The bill from B2 is the easy part — the other cost is your own connection, so if you are on a metered plan, weigh that first seed upload against your household&amp;rsquo;s normal monthly volume with the &lt;a href="https://techfuelhq.com/tools/data-usage-calculator/">data usage calculator&lt;/a>.&lt;/p>
&lt;hr>
&lt;p>&lt;em>The &lt;a href="https://techfuelhq.com/tutorials/proxmox-backup-server-3-2-1-2026/">Proxmox Backup Server guide&lt;/a> covers the PBS layer (copy 2 in the 3-2-1 stack). This guide covers copy 3. Together they complete a full &lt;a href="https://techfuelhq.com/homelab/3-2-1-backup-rule-homelab-2026/">3-2-1 backup strategy&lt;/a> — see that page for what the three copies are and why RAID isn&amp;rsquo;t one of them.&lt;/em>&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://restic.readthedocs.io/en/stable/" rel="noopener">restic documentation&lt;/a> &amp;ndash; official reference for backup, retention, check, and restore commands&lt;/li>
&lt;li>&lt;a href="https://restic.readthedocs.io/en/stable/030_preparing_a_new_repo.html" rel="noopener">restic: preparing a new repository&lt;/a> &amp;ndash; official guide to the Backblaze B2 backend and required environment variables&lt;/li>
&lt;li>&lt;a href="https://www.backblaze.com/docs/cloud-storage-application-keys" rel="noopener">Backblaze B2 application keys&lt;/a> &amp;ndash; official docs for creating the bucket-scoped key restic authenticates with&lt;/li>
&lt;li>&lt;a href="https://healthchecks.io/docs/" rel="noopener">Healthchecks.io documentation&lt;/a> &amp;ndash; official reference for the dead-man&amp;rsquo;s-switch ping that alerts on missed backups&lt;/li>
&lt;/ul></description></item><item><title>Mini-ITX Homelab Build Guide (2026)</title><link>https://techfuelhq.com/homelab/mini-itx-homelab-build-2026/</link><pubDate>Thu, 04 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/homelab/mini-itx-homelab-build-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-04 · ~13 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/homelab/mini-itx-homelab-build-2026.svg" alt="Side-by-side comparison of two Mini-ITX Proxmox homelab builds: an efficient no-GPU node (Ryzen 5 5600X, 64GB DDR4, ~$660, ~40-55W idle) versus a GPU homelab workstation (Ryzen 7 7700X, RTX 3060 Ti 8GB, 64GB DDR5, ~$1,050, ~55-75W idle) comparing case, CPU, memory, cooling, power draw and annual electricity cost." width="1200" height="760" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>Mini-ITX occupies an interesting position between a mini PC and a full ATX tower — one of the five &lt;a href="https://techfuelhq.com/homelab/servers-for-homelab-2026/">classes of homelab server&lt;/a> worth weighing before you commit to a build. You get real desktop processor performance, a GPU slot, standard memory, and expansion — in a form factor that fits on a shelf without looking like server equipment. For a homelab in a living space, that&amp;rsquo;s a meaningful advantage.&lt;/p>
&lt;p>The tradeoff is cost (Mini-ITX motherboards carry a premium) and cooling (small cases constrain what you can use). This guide covers two build paths at different price points and the specific tradeoffs of building Mini-ITX for homelab use.&lt;/p>
&lt;h2 id="why-mini-itx-for-a-homelab">Why Mini-ITX for a homelab&lt;/h2>
&lt;p>&lt;strong>Compared to a pre-built mini PC:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Full desktop CPU (not a mobile Alder Lake-N or HX-class APU with power limits)&lt;/li>
&lt;li>Full PCIe ×16 slot for a discrete GPU (AI inference, hardware transcode, gaming VM)&lt;/li>
&lt;li>Standard DDR4/DDR5 DIMMs — cheaper per GB, higher capacity ceiling (up to 96GB on some AM5 Mini-ITX boards)&lt;/li>
&lt;li>More M.2 slots (2–3 vs 1–2 in typical mini PCs)&lt;/li>
&lt;li>Replaceable CPU cooler — quiet cooling is achievable&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Compared to an ATX mid-tower:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Half the physical footprint — fits on a shelf, inside a cabinet&lt;/li>
&lt;li>Fewer drive bays (usually 0–6 depending on case)&lt;/li>
&lt;li>Higher cost per component&lt;/li>
&lt;li>Thermal constraints at high TDP&lt;/li>
&lt;/ul>
&lt;p>For a homelab running Proxmox with 8–12 VMs, occasional AI inference, and hardware transcoding for media, Mini-ITX checks all the boxes without requiring a dedicated server room for a noisy ATX tower.&lt;/p>
&lt;h2 id="case-selection-the-most-important-mini-itx-decision">Case selection: the most important Mini-ITX decision&lt;/h2>
&lt;p>The case constrains every other component choice. Pick the case first.&lt;/p>
&lt;p>&lt;strong>Fractal Design Node 304&lt;/strong> (~$80 used, ~$120 new) — The homelab classic. 6× 3.5&amp;quot; drive bays + 2× 2.5&amp;quot;, 160mm CPU cooler height limit, full-length GPU up to 310mm. Not the smallest box but the most functional for a NAS-heavy homelab — it is the chassis behind our &lt;a href="https://techfuelhq.com/homelab/best-budget-nas-builds-2025/">budget NAS build&lt;/a>. Good airflow with two 92mm front fans.&lt;/p>
&lt;p>&lt;strong>Cooler Master NR200P&lt;/strong> (~$60–90) — Popular for GPU builds. Supports up to 330mm GPU (full RTX 5080 cards), 60mm CPU cooler height with a top-mounted 240mm AIO, excellent airflow options. Two GPU slots via PCIe riser (included). Solid mid-size Mini-ITX case.&lt;/p>
&lt;p>&lt;strong>Dan Cases A4-SFX&lt;/strong> (~$130–160) — The ultra-compact option. 7.25 liter total volume, supports cards up to 295mm length and dual-slot width. Requires SFX PSU and a 65W TDP cooler (Noctua L9a/L9i). For a low-power Proxmox node where you don&amp;rsquo;t need a GPU, this disappears on a desk.&lt;/p>
&lt;p>&lt;strong>Fractal Design Terra&lt;/strong> (~$140) — Premium modern design, 10 liter, supports 240mm AIO and up to 325mm GPU. Better thermals than the NR200P in practice, better build quality. Boutique option for the aesthetic homelab.&lt;/p>
&lt;p>&lt;strong>For NAS-focused builds: Node 304. For GPU builds: NR200P or NR200P Max. For size-constrained deployments: Dan A4.&lt;/strong>&lt;/p>
&lt;h2 id="build-1-efficient-proxmox-node-500650">Build 1: Efficient Proxmox node (~$500–650)&lt;/h2>
&lt;p>No discrete GPU — pure Proxmox VM host with NAS capability. Quiet, efficient, capable.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Component&lt;/th>
&lt;th scope="col">Part&lt;/th>
&lt;th scope="col">~Price&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Case&lt;/td>
&lt;td>Cooler Master NR200P (no PSU version)&lt;/td>
&lt;td>$75&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>CPU&lt;/td>
&lt;td>AMD Ryzen 5 5600X&lt;/td>
&lt;td>$100 used&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Motherboard&lt;/td>
&lt;td>ASUS ROG STRIX B550-I Gaming (Mini-ITX)&lt;/td>
&lt;td>$120 used&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>RAM&lt;/td>
&lt;td>64GB DDR4-3600 (2× 32GB)&lt;/td>
&lt;td>$75&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>CPU Cooler&lt;/td>
&lt;td>Noctua NH-L12S (70mm, quiet, fits NR200P)&lt;/td>
&lt;td>$60&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Storage (OS)&lt;/td>
&lt;td>Samsung 980 500GB NVMe&lt;/td>
&lt;td>$40&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Storage (VMs)&lt;/td>
&lt;td>WD Black SN850X 2TB NVMe&lt;/td>
&lt;td>$80&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>PSU&lt;/td>
&lt;td>Corsair SF750 (SFX)&lt;/td>
&lt;td>$110&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Total&lt;/strong>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;strong>~$660&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The Ryzen 5 5600X gives 6 cores/12 threads, ECC support on select B550 boards (verify with the specific board), and 65W TDP — easily handled by the NH-L12S in the NR200P. At idle this rig draws around 40–55W. Per the &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">Power &amp;amp; Cost Calculator&lt;/a>, that&amp;rsquo;s about $51–64/year at US average rates.&lt;/p>
&lt;p>&lt;strong>ECC note:&lt;/strong> The B550-I Gaming DOES support ECC registered DIMMs on the 5000-series Ryzen, but only in 2-DIMM configs. Check the ASUS compatibility list. ECC on consumer AM4 is unofficial but functional on this board.&lt;/p>
&lt;h2 id="build-2-gpu-homelab-workstation-9001100">Build 2: GPU homelab workstation (~$900–1,100)&lt;/h2>
&lt;p>Proxmox + GPU passthrough or direct inference, still in a Mini-ITX form factor.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Component&lt;/th>
&lt;th scope="col">Part&lt;/th>
&lt;th scope="col">~Price&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Case&lt;/td>
&lt;td>Cooler Master NR200P Max&lt;/td>
&lt;td>$170&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>CPU&lt;/td>
&lt;td>AMD Ryzen 7 7700X&lt;/td>
&lt;td>$175&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Motherboard&lt;/td>
&lt;td>ASUS ROG STRIX B650E-I Gaming (Mini-ITX)&lt;/td>
&lt;td>$200&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>RAM&lt;/td>
&lt;td>64GB DDR5-6000 (2× 32GB)&lt;/td>
&lt;td>$130&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>CPU Cooler&lt;/td>
&lt;td>240mm AIO (bundled with NR200P Max)&lt;/td>
&lt;td>included&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GPU&lt;/td>
&lt;td>NVIDIA RTX 3060 Ti 8GB&lt;/td>
&lt;td>$185 used&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Storage (OS)&lt;/td>
&lt;td>Samsung 980 Pro 1TB NVMe&lt;/td>
&lt;td>$80&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>PSU&lt;/td>
&lt;td>Corsair SF750 (SFX)&lt;/td>
&lt;td>$110&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Total&lt;/strong>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;strong>~$1,050&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The NR200P Max is the NR200P with an included 280mm AIO, making it one of the best value Mini-ITX GPU builds available. The Ryzen 7 7700X at 105W TDP is well-handled by the bundled AIO.&lt;/p>
&lt;p>The RTX 3060 Ti at $185 used gives you 8GB GDDR6 — enough for 13B models at Q4 quantization, hardware transcoding with zero session limits on Linux, and GPU passthrough to a Windows gaming VM. Not the RTX 5080, but at $185 it&amp;rsquo;s the right GPU for this budget.&lt;/p>
&lt;h2 id="proxmox-specific-mini-itx-considerations">Proxmox-specific Mini-ITX considerations&lt;/h2>
&lt;p>&lt;strong>NVMe + GPU PCIe bandwidth sharing.&lt;/strong> Mini-ITX boards have one PCIe ×16 slot for the GPU, plus M.2 slots. On AMD platforms, the M.2 slots share CPU or chipset lanes with each other but generally don&amp;rsquo;t compete with the GPU slot. Verify your board&amp;rsquo;s PCIe lane allocation if you&amp;rsquo;re planning to run 3+ NVMe drives — some budget boards sacrifice M.2 bandwidth when the PCIe ×16 slot is populated.&lt;/p>
&lt;p>&lt;strong>Passthrough IOMMU groups.&lt;/strong> Mini-ITX boards vary in IOMMU group quality. Before buying for GPU passthrough, check the OC-specific forums or r/homelab for that specific board&amp;rsquo;s IOMMU group layout. Boards where the GPU is in its own IOMMU group (no other devices sharing) are preferred.&lt;/p>
&lt;p>&lt;strong>Storage expansion.&lt;/strong> If you need more than 2 NVMe + 1–2 SATA drives and chose the NR200P, add a PCIe SATA HBA in the second PCIe slot (some Mini-ITX cases have a secondary slot via riser). The Node 304 has proper SATA drive cages and power connectors for 6 drives.&lt;/p>
&lt;p>&lt;strong>Remote management.&lt;/strong> Mini-ITX consumer boards don&amp;rsquo;t have iDRAC/iLO. For out-of-band management, use Tailscale on the Proxmox host — at least you can get in remotely. For physical KVM, a $25 PiKVM-based solution (Raspberry Pi + HDMI capture) fills the gap.&lt;/p>
&lt;h2 id="cooling-strategy">Cooling strategy&lt;/h2>
&lt;p>The biggest Mini-ITX challenge is dissipating heat in a tight space.&lt;/p>
&lt;p>&lt;strong>NH-L12S (70mm):&lt;/strong> Fits in most Mini-ITX cases, cools up to 65W TDP CPUs comfortably in a well-ventilated case like the NR200P. Quiet — Noctua&amp;rsquo;s A12×25 fan at low RPM is near-inaudible.&lt;/p>
&lt;p>&lt;strong>240mm AIO in NR200P Max:&lt;/strong> The correct choice if you&amp;rsquo;re going to push the CPU with compute-heavy VMs or want to run a 105W+ CPU. The included AIO in the NR200P Max performs well; third-party AIOs (Arctic Liquid Freezer II 240) offer better performance if you swap it.&lt;/p>
&lt;p>&lt;strong>The A4 cooling ceiling:&lt;/strong> In the Dan A4 and similar ultra-compact cases, you&amp;rsquo;re limited to 65mm height coolers. This means L9a or L9i class — which max at roughly 65W sustained in a warm room. The AM5 Ryzen 5 7600 at 65W TDP is the right CPU for this case. Anything higher hits the thermal ceiling under sustained Proxmox load.&lt;/p>
&lt;h2 id="power-consumption">Power consumption&lt;/h2>
&lt;p>Using the &lt;a href="https://techfuelhq.com/homelab/24-7-homelab-idle-power-costs-2026/">idle power data&lt;/a> for the components above:&lt;/p>
&lt;p>&lt;strong>Efficient Proxmox node (Build 1, no GPU):&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Idle: ~40–55W&lt;/li>
&lt;li>VM load: ~65–90W&lt;/li>
&lt;li>Annual electricity: ~$46–64 at US average&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>GPU workstation (Build 2, RTX 3060 Ti):&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>System idle (GPU in idle): ~55–75W&lt;/li>
&lt;li>Inference active: ~200–280W&lt;/li>
&lt;li>Annual electricity at 4h/day load: ~$100–130 at US average&lt;/li>
&lt;/ul>
&lt;p>The Mini-ITX format saves roughly 30–50W at idle compared to an equivalent ATX build with the same CPU, because Mini-ITX boards have fewer VRMs, fewer USB controllers, and no extra PCIe slot circuitry to power. The savings aren&amp;rsquo;t huge but they add up over three years of 24/7 operation.&lt;/p>
&lt;h2 id="where-to-buy-mini-itx-specific-components">Where to buy Mini-ITX-specific components&lt;/h2>
&lt;p>&lt;strong>Cases:&lt;/strong> Amazon and Newegg for new, eBay for used (Mini-ITX cases sell well used — people upgrade). r/sffpc subreddit frequently has build logs with specific case feedback.&lt;/p>
&lt;p>&lt;strong>SFX PSUs:&lt;/strong> The Corsair SF750 is the reliable recommendation. SeaSonic Focus SGX 650W is a solid alternative at $10–15 less. Avoid no-name SFX units — in a Mini-ITX case with a GPU, a bad PSU failure is a bad situation.&lt;/p>
&lt;p>&lt;strong>Mini-ITX motherboards:&lt;/strong> New from Amazon/Newegg for warranty protection. Used boards carry more risk (no return if defective) — stick to sellers with return policies.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Wondering whether a Mini-ITX build is the right fit versus a mini PC or a larger tower? If a pre-built box would do the job, the &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">best mini PCs for a homelab&lt;/a> guide has the picks by budget; the &lt;a href="https://techfuelhq.com/homelab/used-enterprise-vs-mini-pc-homelab-2026/">used enterprise vs mini PC comparison&lt;/a> covers the broader decision. Power cost analysis for your specific component list lives in the &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">Power &amp;amp; Cost Calculator&lt;/a>. Once the host is running, the &lt;a href="https://techfuelhq.com/tutorials/zfs-proxmox-pool-setup-arc-tuning-2026/">ZFS on Proxmox guide&lt;/a> covers pool setup and ARC tuning — the &lt;a href="https://techfuelhq.com/tools/proxmox-capacity-planner/">Proxmox VM Capacity Planner&lt;/a> shows exactly how many VMs your RAM and ZFS ARC allocation supports.&lt;/em>&lt;/p></description></item><item><title>Sanoid + Syncoid: Automated ZFS Snapshots &amp; Replication (2026)</title><link>https://techfuelhq.com/tutorials/sanoid-syncoid-zfs-snapshots-2026/</link><pubDate>Tue, 02 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tutorials/sanoid-syncoid-zfs-snapshots-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-02 · ~10 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/tutorials/sanoid-syncoid-zfs-snapshots-2026.svg" alt="Architecture diagram: a sanoid.timer systemd unit fires every 15 minutes to snapshot ZFS datasets (datapool/documents, vm-disks, media) on a Proxmox VE 8 source host using the production, vm_disks and media retention templates, while sanoid --monitor-snapshots pushes health to Uptime Kuma; syncoid then sends incremental zfs snapshots over SSH each day at 03:00 to a remote backuppool, where a restore test clones and mounts a snapshot to verify it." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>ZFS snapshots are instant, zero-cost at creation time (they only consume space as data changes), and a critical part of a storage strategy. But ZFS doesn&amp;rsquo;t automate them — you need a policy engine. Sanoid is that engine. Syncoid adds replication to a second ZFS pool, either locally or over SSH.&lt;/p>
&lt;p>This guide covers both: Sanoid for snapshot automation with retention policies, Syncoid for encrypted replication.&lt;/p>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;ul>
&lt;li>A ZFS pool already set up — see the &lt;a href="https://techfuelhq.com/tutorials/zfs-proxmox-pool-setup-arc-tuning-2026/">ZFS on Proxmox guide&lt;/a> if you&amp;rsquo;re starting from scratch&lt;/li>
&lt;li>Debian 12 / Proxmox VE 8 host (the commands apply to any Debian-based system with ZFS)&lt;/li>
&lt;li>For Syncoid replication: SSH access to a destination host with a ZFS pool&lt;/li>
&lt;/ul>
&lt;h2 id="step-1-install-sanoid">Step 1: Install Sanoid&lt;/h2>
&lt;p>Sanoid is in the Debian 12 repositories:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>apt update &lt;span style="color:#f92672">&amp;amp;&amp;amp;&lt;/span> apt install -y sanoid
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>On Proxmox VE (which is Debian-based), Sanoid installs cleanly. The package installs:&lt;/p>
&lt;ul>
&lt;li>&lt;code>/usr/sbin/sanoid&lt;/code> — the snapshot management daemon&lt;/li>
&lt;li>&lt;code>/usr/sbin/syncoid&lt;/code> — the replication tool (separate binary, same package)&lt;/li>
&lt;li>&lt;code>/etc/sanoid/sanoid.conf&lt;/code> — the policy config file&lt;/li>
&lt;li>A systemd timer that runs Sanoid every 15 minutes&lt;/li>
&lt;/ul>
&lt;h2 id="step-2-configure-snapshot-policies">Step 2: Configure snapshot policies&lt;/h2>
&lt;p>Edit the config file:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>nano /etc/sanoid/sanoid.conf
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Template-based configuration&lt;/strong> — Sanoid uses templates to define retention policies, then you apply templates to datasets:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-ini" data-lang="ini">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># /etc/sanoid/sanoid.conf&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># --- Templates ---&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Define retention policies once, reuse across datasets&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[template_production]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># Retention counts — how many snapshots of each type Sanoid keeps.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># A value of N means &amp;#34;keep the N most recent snapshots of this type&amp;#34;,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># not &amp;#34;take one every N hours&amp;#34; — Sanoid prunes down to the count.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">frequently&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">0 # No sub-hourly snapshots
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> hourly = 24 # Keep 24 hourly snapshots (last 24 hours)
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> daily = 30 # Keep 30 daily snapshots (last month)
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> weekly = 0 # No separate weekly retention
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> monthly = 12 # Keep 12 monthly snapshots (last year)
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> yearly = 0 # No yearly retention&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># When should Sanoid take each type?&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># (Sanoid runs every 15min; it takes a snapshot when the time has passed&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># since the last one of that type)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">autosnap&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">yes
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> autoprune = yes&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[template_media]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># Media changes rarely — weekly + monthly is enough&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">frequently&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> hourly = 0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> daily = 7
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> weekly = 0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> monthly = 3
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> yearly = 0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> autosnap = yes
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> autoprune = yes&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[template_vm_disks]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># Frequently-changing VM data — more hourly retention&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">frequently&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> hourly = 48 # Last 48 hours at hourly granularity
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> daily = 14
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> weekly = 0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> monthly = 3
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> yearly = 0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> autosnap = yes
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> autoprune = yes&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># --- Datasets ---&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Apply templates to your ZFS datasets&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[datapool/vm-disks]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">use_template&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">vm_disks&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[datapool/media]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">use_template&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">media&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[datapool/backups]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># Don&amp;#39;t snapshot the PBS backup datastore — PBS handles its own versioning&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">autosnap&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">no
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> autoprune = no&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[datapool/documents]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">use_template&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">production&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Replace &lt;code>datapool&lt;/code>&lt;/strong> with your pool name. List your pools and datasets with:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>zfs list -r
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Recursive datasets.&lt;/strong> To apply a policy to a dataset &lt;em>and all of its children&lt;/em> with a single stanza, add &lt;code>recursive = yes&lt;/code>. To snapshot only the children (not the parent dataset itself), add &lt;code>process_children_only = yes&lt;/code>. This is the clean way to cover a nested tree like &lt;code>datapool/vm-disks/vm-100&lt;/code>, &lt;code>datapool/vm-disks/vm-101&lt;/code> without listing each one:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-ini" data-lang="ini">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[datapool/vm-disks]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">use_template&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">vm_disks
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> recursive = yes # applies vm_disks policy to every child dataset&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>On the retention numbers.&lt;/strong> Each value (&lt;code>hourly = 24&lt;/code>, &lt;code>daily = 30&lt;/code>, &lt;code>monthly = 12&lt;/code>) is a &lt;em>retention count&lt;/em> — the number of snapshots of that type Sanoid keeps before pruning the oldest. It is not an interval. Sanoid takes one snapshot of each enabled type per period (one per hour for &lt;code>hourly&lt;/code>, one per day for &lt;code>daily&lt;/code>) and prunes the type down to its configured count on every run when &lt;code>autoprune = yes&lt;/code>. The &lt;code>frequently&lt;/code> key adds sub-hourly snapshots at the interval set by &lt;code>frequent_period&lt;/code> (default 15 minutes); it is set to &lt;code>0&lt;/code> here because hourly granularity is enough for most homelab datasets.&lt;/p>
&lt;h2 id="step-3-enable-and-test-the-systemd-timer">Step 3: Enable and test the systemd timer&lt;/h2>
&lt;p>Sanoid ships with a systemd service and timer. On Proxmox VE 8 (Debian 12), the timer is installed but not enabled by default:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Enable and start the timer&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>systemctl enable --now sanoid.timer
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Verify the timer is active&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>systemctl status sanoid.timer
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Manually trigger a run to test&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>systemctl start sanoid.service
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Check output&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>journalctl -u sanoid.service -n &lt;span style="color:#ae81ff">50&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>After a successful run, verify snapshots were created:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>zfs list -t snapshot -r datapool/documents
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>You should see snapshots named like &lt;code>datapool/documents@sanoid_2026-05-03_14:00:00_hourly&lt;/code>.&lt;/p>
&lt;h2 id="step-4-monitor-snapshot-health">Step 4: Monitor snapshot health&lt;/h2>
&lt;p>Sanoid includes a monitoring command that outputs Nagios-compatible status:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>sanoid --monitor-snapshots
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This checks whether recent snapshots exist and whether the latest snapshot is within the expected age. The output is:&lt;/p>
&lt;pre tabindex="0">&lt;code>OK: all monitored datasets have recent snapshots
&lt;/code>&lt;/pre>&lt;p>Or, if a dataset has missed snapshots:&lt;/p>
&lt;pre tabindex="0">&lt;code>CRITICAL: datapool/documents: no daily snapshot in the last 25 hours
&lt;/code>&lt;/pre>&lt;p>&lt;strong>Integrate with Uptime Kuma push monitoring:&lt;/strong>&lt;/p>
&lt;p>Add to a cron job or systemd override:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#!/bin/bash
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>&lt;span style="color:#75715e"># /usr/local/bin/sanoid-health-check.sh&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>STATUS&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#66d9ef">$(&lt;/span>sanoid --monitor-snapshots 2&amp;gt;&amp;amp;1&lt;span style="color:#66d9ef">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">if&lt;/span> echo &lt;span style="color:#e6db74">&amp;#34;&lt;/span>$STATUS&lt;span style="color:#e6db74">&amp;#34;&lt;/span> | grep -q &lt;span style="color:#e6db74">&amp;#34;^OK&amp;#34;&lt;/span>; &lt;span style="color:#66d9ef">then&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> curl -s &lt;span style="color:#e6db74">&amp;#34;https://uptime.yourdomain.com/api/push/YOUR_PUSH_KEY?status=up&amp;amp;msg=Sanoid+OK&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">else&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> curl -s &lt;span style="color:#e6db74">&amp;#34;https://uptime.yourdomain.com/api/push/YOUR_PUSH_KEY?status=down&amp;amp;msg=&lt;/span>&lt;span style="color:#66d9ef">$(&lt;/span>python3 -c &lt;span style="color:#e6db74">&amp;#39;import urllib.parse,sys; print(urllib.parse.quote(sys.stdin.read().strip()))&amp;#39;&lt;/span> &lt;span style="color:#f92672">&amp;lt;&amp;lt;&amp;lt;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&lt;/span>$STATUS&lt;span style="color:#e6db74">&amp;#34;&lt;/span>&lt;span style="color:#66d9ef">)&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">fi&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>chmod +x /usr/local/bin/sanoid-health-check.sh
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>echo &lt;span style="color:#e6db74">&amp;#34;*/30 * * * * root /usr/local/bin/sanoid-health-check.sh&amp;#34;&lt;/span> &amp;gt;&amp;gt; /etc/crontab
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="step-5-syncoid-replication">Step 5: Syncoid replication&lt;/h2>
&lt;p>Syncoid replicates datasets from a source ZFS pool to a destination ZFS pool. The destination can be:&lt;/p>
&lt;ul>
&lt;li>A second pool on the same host (local backup copy)&lt;/li>
&lt;li>A remote host over SSH&lt;/li>
&lt;li>A Proxmox Backup Server node with a ZFS datastore&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>One-time setup — SSH key auth to the destination:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># On the source host, generate a key for the root user (or a dedicated sanoid user)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ssh-keygen -t ed25519 -f /root/.ssh/sanoid_id -N &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Copy to the destination host&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ssh-copy-id -i /root/.ssh/sanoid_id.pub root@backup-host
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Test a manual replication:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Replicate datapool/documents to backuppool/documents on a remote host&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>syncoid --recursive &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> datapool/documents &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> root@backup-host:backuppool/documents
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The &lt;code>--recursive&lt;/code> flag replicates all child datasets. Syncoid automatically finds the most recent common snapshot between source and destination and sends only the incremental delta.&lt;/p>
&lt;p>&lt;strong>Push vs pull — which host runs the command.&lt;/strong> The example above is a &lt;em>push&lt;/em>: it runs on the source and sends to a remote destination (&lt;code>localdataset user@host:remotedataset&lt;/code>). You can also &lt;em>pull&lt;/em>, which runs on the backup host and reads from the remote source (&lt;code>user@host:remotedataset localdataset&lt;/code>). Pull is the safer topology for a dedicated backup server: the backup box holds the only SSH key that can reach the source, so a compromise of the source host cannot reach in and delete the backups.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># PULL: run this ON the backup host. It reads datapool/documents from the&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># production host and writes it to backuppool/documents locally.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>syncoid --recursive &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> root@prod-host:datapool/documents &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> backuppool/documents
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Whether you push or pull, Syncoid resolves the incremental automatically — the direction only changes which machine initiates the SSH connection and holds the key.&lt;/p>
&lt;p>&lt;strong>First replication note:&lt;/strong> The first run sends the entire dataset — this can take significant time for large pools. Run it manually first to verify the connection and transfer rate before scheduling.&lt;/p>
&lt;p>&lt;strong>Schedule Syncoid with systemd:&lt;/strong>&lt;/p>
&lt;p>Create a systemd service:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-ini" data-lang="ini">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># /etc/systemd/system/syncoid-replicate.service&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[Unit]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">Description&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">Syncoid ZFS Replication&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">Requires&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">network-online.target&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">After&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">network-online.target&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[Service]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">Type&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">oneshot&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">ExecStart&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">/usr/sbin/syncoid --recursive datapool/documents root@backup-host:backuppool/documents&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">ExecStartPost&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">/usr/sbin/syncoid --recursive datapool/vm-disks root@backup-host:backuppool/vm-disks&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Create the timer:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-ini" data-lang="ini">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># /etc/systemd/system/syncoid-replicate.timer&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[Unit]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">Description&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">Run Syncoid replication daily&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[Timer]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">OnCalendar&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">*-*-* 03:00:00&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">Persistent&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[Install]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">WantedBy&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">timers.target&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Enable:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>systemctl daemon-reload
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>systemctl enable --now syncoid-replicate.timer
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="step-6-verify-replicated-snapshots">Step 6: Verify replicated snapshots&lt;/h2>
&lt;p>On the destination host, confirm snapshots arrived:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># On backup-host&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>zfs list -t snapshot -r backuppool/documents | tail -10
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>You should see snapshots with Sanoid&amp;rsquo;s naming convention, matching what&amp;rsquo;s on the source.&lt;/p>
&lt;p>&lt;strong>Test a restore from a replicated snapshot:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># On backup-host: clone a snapshot to a test dataset&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>zfs clone backuppool/documents@sanoid_2026-05-03_00:00:00_daily backuppool/restore-test
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Mount it and verify content&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>zfs set mountpoint&lt;span style="color:#f92672">=&lt;/span>/mnt/restore-test backuppool/restore-test
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Check files&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ls /mnt/restore-test
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Clean up&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>zfs destroy backuppool/restore-test
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>This step is not optional.&lt;/strong> Snapshots that can&amp;rsquo;t be mounted and read are not useful backups. Run restore tests when you first set this up and periodically afterward.&lt;/p>
&lt;h2 id="retention-math">Retention math&lt;/h2>
&lt;p>For a dataset that changes 1GB/day, with the production template (24 hourly, 30 daily, 12 monthly):&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Snapshot type&lt;/th>
&lt;th scope="col">Count&lt;/th>
&lt;th scope="col">Total additional space&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Hourly (24h window)&lt;/td>
&lt;td>24&lt;/td>
&lt;td>~24 GB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Daily (30d window)&lt;/td>
&lt;td>30&lt;/td>
&lt;td>~30 GB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Monthly (12m window)&lt;/td>
&lt;td>12&lt;/td>
&lt;td>~12 GB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Total overhead&lt;/strong>&lt;/td>
&lt;td>&lt;strong>66&lt;/strong>&lt;/td>
&lt;td>&lt;strong>~66 GB&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Space is additive only for the data that changed between snapshots — unchanged blocks are shared. A dataset that changes 1 GB/day but has 100 GB of static content costs ~66 GB for a year of snapshots, not 66× 100 GB.&lt;/p>
&lt;p>ZFS compression applies to snapshot data as well as live data. If your data compresses at 1.5:1, snapshot overhead compresses proportionally.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Sanoid snapshots protect against accidental deletion and filesystem corruption within a single pool — but a snapshot on the same pool is &lt;a href="https://techfuelhq.com/homelab/3-2-1-backup-rule-homelab-2026/">not one of your 3-2-1 backup copies&lt;/a>; it dies with the pool. For off-machine protection (fire, hardware failure), combine with &lt;a href="https://techfuelhq.com/tutorials/proxmox-backup-server-3-2-1-2026/">Syncoid replication to a second physical host&lt;/a> or &lt;a href="https://techfuelhq.com/tutorials/automated-offsite-backups-restic-2026/">restic to Backblaze B2&lt;/a>. The &lt;a href="https://techfuelhq.com/tutorials/zfs-proxmox-pool-setup-arc-tuning-2026/">ZFS on Proxmox setup guide&lt;/a> covers the pool creation that Sanoid manages.&lt;/em>&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://github.com/jimsalterjrs/sanoid" rel="noopener">Sanoid and Syncoid project repository&lt;/a> &amp;ndash; the official source for the snapshot policy daemon and the zfs send/recv replication wrapper, including config syntax and templates.&lt;/li>
&lt;li>&lt;a href="https://openzfs.github.io/openzfs-docs/man/master/8/zfs-snapshot.8.html" rel="noopener">OpenZFS zfs-snapshot(8) manual page&lt;/a> &amp;ndash; documents the underlying native snapshot command Sanoid automates.&lt;/li>
&lt;li>&lt;a href="https://pve.proxmox.com/wiki/ZFS_on_Linux" rel="noopener">Proxmox VE wiki: ZFS on Linux&lt;/a> &amp;ndash; official Proxmox guidance on running ZFS pools on the Debian-based host this guide targets.&lt;/li>
&lt;/ul></description></item><item><title>Used Enterprise Server vs Mini PC for Homelab (2026)</title><link>https://techfuelhq.com/homelab/used-enterprise-vs-mini-pc-homelab-2026/</link><pubDate>Tue, 02 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/homelab/used-enterprise-vs-mini-pc-homelab-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-02 · ~13 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/homelab/used-enterprise-vs-mini-pc-homelab-2026.svg" alt="Spec comparison table: Dell PowerEdge R720 enterprise server vs Beelink N150 mini PC for homelab use — idle power 80-120W vs 10-18W, 3-year electricity $273-408 vs $33-60, idle noise 50-55 dBA vs under 30 dBA, max RAM 384-768GB DDR3 vs 16GB DDR5, 8 hot-swap drive bays vs 1-2 internal, iDRAC remote management vs none, and 3-year TCO of $541-741+ vs $541 for a 3-node mini PC cluster" width="1200" height="760" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>The used enterprise server path has a seductive pitch: a 2013 Dell R720 with 128GB RAM and 8 drive bays for $200. Versus a modern N150 mini PC with 16GB RAM for $160. The server sounds like an obvious win — until you look at what running it actually costs.&lt;/p>
&lt;p>This is the comparison without the romanticization.&lt;/p>
&lt;h2 id="at-a-glance">At a glance&lt;/h2>
&lt;p>Before the detailed breakdown, here is the head-to-head on the factors that actually decide it. Every figure below is drawn from the sections that follow — using the same reference machines, a used Dell R720 (1P, 8× HDD) against a modern Beelink N150-class mini PC.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Factor&lt;/th>
&lt;th scope="col">Used enterprise server (Dell R720)&lt;/th>
&lt;th scope="col">Modern mini PC (Beelink N150)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Upfront cost&lt;/td>
&lt;td>$200–400&lt;/td>
&lt;td>~$160&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Idle power draw&lt;/td>
&lt;td>80–120W&lt;/td>
&lt;td>10–18W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Idle noise (1 m)&lt;/td>
&lt;td>50–55 dBA&lt;/td>
&lt;td>0–25 dBA&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>RAM ceiling&lt;/td>
&lt;td>384–768GB DDR3 RDIMM&lt;/td>
&lt;td>16GB DDR5 SO-DIMM&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Expansion (drive bays)&lt;/td>
&lt;td>8–24 hot-swap&lt;/td>
&lt;td>1–2 internal&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Resale driver&lt;/td>
&lt;td>RAM density (DDR3 supply is finite)&lt;/td>
&lt;td>Modern DDR5 platform&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>3-year TCO ($0.13/kWh)&lt;/td>
&lt;td>$541–741+&lt;/td>
&lt;td>$541 for a 3-node cluster&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The pattern is consistent all the way down: the server wins on RAM ceiling and drive bays, the mini PC wins on power, noise, and upfront cost, and the two land at a similar three-year total cost of ownership. The rest of this article is why each of those numbers is what it is.&lt;/p>
&lt;h2 id="the-core-tradeoff">The core tradeoff&lt;/h2>
&lt;p>Used enterprise servers (Dell PowerEdge R720/R730, HP DL380 Gen9, etc.) were designed to maximize compute density and reliability in enterprise data centers. They were NOT designed for:&lt;/p>
&lt;ul>
&lt;li>Quiet operation&lt;/li>
&lt;li>Energy efficiency at homelab-scale workloads&lt;/li>
&lt;li>Fitting in a living space or spare bedroom&lt;/li>
&lt;/ul>
&lt;p>Modern mini PCs (Beelink SEi12 Pro N150, Intel NUC 13 Pro, MINISFORUM UM series) were designed for:&lt;/p>
&lt;ul>
&lt;li>Low power consumption&lt;/li>
&lt;li>Silent operation&lt;/li>
&lt;li>A small footprint&lt;/li>
&lt;/ul>
&lt;p>These goals are in direct conflict on several dimensions. If you&amp;rsquo;re weighing more than these two options, the &lt;a href="https://techfuelhq.com/homelab/servers-for-homelab-2026/">servers for a homelab overview&lt;/a> maps all five server classes before you narrow to this head-to-head.&lt;/p>
&lt;h2 id="the-detailed-comparison">The detailed comparison&lt;/h2>
&lt;h3 id="power-consumption-the-biggest-factor-over-time">Power consumption (the biggest factor over time)&lt;/h3>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Metric&lt;/th>
&lt;th scope="col">Dell R720 (1P, 8× HDD)&lt;/th>
&lt;th scope="col">Beelink N150 mini PC&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Idle power&lt;/td>
&lt;td>80–120W&lt;/td>
&lt;td>10–18W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Load power (moderate)&lt;/td>
&lt;td>150–250W&lt;/td>
&lt;td>25–55W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Annual electricity (idle, $0.13)&lt;/td>
&lt;td>$91–136&lt;/td>
&lt;td>$11–20&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>3-year electricity cost&lt;/td>
&lt;td>$273–408&lt;/td>
&lt;td>$33–60&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The difference in 3-year electricity is $240–375. A used R720 bought for $200 costs $440–575 to own for 3 years when you factor in electricity. At California rates ($0.28/kWh), add another $150+ over three years.&lt;/p>
&lt;p>The N150 mini PC at $160 upfront + $33–60 electricity = $193–220 over 3 years. The mini PC is cheaper to own over any meaningful timeframe at typical electricity rates.&lt;/p>
&lt;p>Model your specific setup in the &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">Power &amp;amp; Cost Calculator&lt;/a>.&lt;/p>
&lt;h3 id="noise">Noise&lt;/h3>
&lt;p>Mini PCs under light homelab load: &lt;strong>whisper quiet to silent&lt;/strong>. Most N100/N150 mini PCs under typical VM workloads run fans at 15–25% speed, measured below 30 dBA at 1 meter. Many run fanless at idle.&lt;/p>
&lt;p>A Dell R720 at idle: &lt;strong>50–55 dBA at 1 meter&lt;/strong>. That&amp;rsquo;s the volume of a quiet conversation. At load: 70–80 dBA. Without a dedicated server room with acoustic isolation, this eliminates enterprise rack servers from any living space.&lt;/p>
&lt;p>If you have a basement utility room, closet, or shed with a door, noise becomes manageable. If your homelab is in a bedroom, office, or shared living space, mini PCs win unconditionally on noise.&lt;/p>
&lt;h3 id="ram-capacity">RAM capacity&lt;/h3>
&lt;p>This is where enterprise servers genuinely win.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Platform&lt;/th>
&lt;th scope="col">Max RAM&lt;/th>
&lt;th scope="col">DIMM Type&lt;/th>
&lt;th scope="col">Cost per 32GB (2026)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Dell R720 (E5-2600 v2)&lt;/td>
&lt;td>384–768GB&lt;/td>
&lt;td>DDR3 RDIMM&lt;/td>
&lt;td>~$25–35&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Dell R730 (E5-2600 v4)&lt;/td>
&lt;td>768GB–3TB&lt;/td>
&lt;td>DDR4 RDIMM&lt;/td>
&lt;td>~$15–25&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Beelink SEi12 N150&lt;/td>
&lt;td>16GB&lt;/td>
&lt;td>DDR5 SO-DIMM&lt;/td>
&lt;td>~$45–65&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>MINISFORUM MS-01&lt;/td>
&lt;td>96GB&lt;/td>
&lt;td>DDR5 SO-DIMM&lt;/td>
&lt;td>~$100–150&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>If your homelab workload genuinely needs 128GB+ RAM — running many VMs, building a machine learning training environment, running large in-memory databases — enterprise servers deliver RAM at a fraction of the per-GB cost. A 4× 32GB DDR3 kit for an R720 is $50–80. The equivalent DDR5 for a consumer platform that supports that much RAM costs several hundred dollars.&lt;/p>
&lt;p>&lt;strong>The honest question:&lt;/strong> do you actually need 128GB? For most homelabs running 5–10 VMs and containers, 32–64GB is sufficient. The scenario where enterprise server RAM capacity is genuinely needed is narrower than server forums make it sound.&lt;/p>
&lt;h3 id="expandability">Expandability&lt;/h3>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Feature&lt;/th>
&lt;th scope="col">Enterprise rack server&lt;/th>
&lt;th scope="col">Mini PC&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>PCIe ×16 slots&lt;/td>
&lt;td>2–6 (2U/4U)&lt;/td>
&lt;td>0–1 (via USB4 or M.2-to-PCIe)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Drive bays&lt;/td>
&lt;td>8–24&lt;/td>
&lt;td>1–2 internal&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>10GbE built-in&lt;/td>
&lt;td>Common (dual-port)&lt;/td>
&lt;td>Rare&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Remote management (iDRAC/iLO)&lt;/td>
&lt;td>Yes (dedicated port)&lt;/td>
&lt;td>No (use Tailscale/KVM)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Hot-swap drives&lt;/td>
&lt;td>Yes (SAS/SATA backplane)&lt;/td>
&lt;td>No&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Enterprise servers genuinely win on expandability for specific use cases:&lt;/p>
&lt;p>&lt;strong>Storage density.&lt;/strong> If you need 8–24 drive bays for a large NAS, a used 4U enterprise chassis with a SAS backplane makes economic sense — it&amp;rsquo;s hard to match the per-drive-bay cost with a consumer alternative.&lt;/p>
&lt;p>&lt;strong>Remote management.&lt;/strong> Dell iDRAC and HP iLO give you out-of-band management: power on/off, BIOS access, virtual console, and OS install via virtual media — without being physically at the machine. Mini PCs don&amp;rsquo;t have this. For a server in a different location (basement, remote colocation), iDRAC is genuinely valuable.&lt;/p>
&lt;p>&lt;strong>PCIe expansion.&lt;/strong> If you need multiple PCIe cards (HBAs, 10GbE cards, capture cards), a 2U server has the slots. A mini PC typically has M.2 only.&lt;/p>
&lt;h3 id="the-minisforum-ms-01-middle-ground">The MINISFORUM MS-01 middle ground&lt;/h3>
&lt;p>The MS-01 is worth mentioning specifically: it&amp;rsquo;s a mini PC with 2× 10GbE SFP+, a PCIe ×4 slot (accessible with a riser), up to 96GB DDR5, and an Intel i9-12900H. It&amp;rsquo;s not cheap (~$450–600), but it delivers most of what makes enterprise servers attractive (PCIe expansion, 10GbE, ECC-adjacent RAM) without the noise and power floor.&lt;/p>
&lt;p>For many homelabs, the MS-01 or similar prosumer SFF machines represent the rational middle ground between a $150 N100 mini PC and a loud, power-hungry rack server.&lt;/p>
&lt;h2 id="who-should-buy-what">Who should buy what&lt;/h2>
&lt;p>&lt;strong>Buy a modern mini PC if:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Your homelab is in a living space (noise matters)&lt;/li>
&lt;li>You&amp;rsquo;re running fewer than 10 VMs/containers&lt;/li>
&lt;li>Your workloads don&amp;rsquo;t need more than 32–64GB RAM&lt;/li>
&lt;li>Electricity cost is a real concern&lt;/li>
&lt;li>You want a simple setup that &amp;ldquo;just works&amp;rdquo;&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Buy a used enterprise server if:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>You have a dedicated server room or acoustic isolation&lt;/li>
&lt;li>You need 128GB+ RAM cheaply (research workloads, large databases)&lt;/li>
&lt;li>You need 8+ drive bays in a single chassis&lt;/li>
&lt;li>You want iDRAC/iLO for remote out-of-band management&lt;/li>
&lt;li>You&amp;rsquo;re running a storage cluster where hot-swap drives matter&lt;/li>
&lt;li>Power cost is secondary (you&amp;rsquo;re in a low-rate area or someone else is paying)&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Both:&lt;/strong> A common advanced homelab setup runs a mini PC cluster for VMs/containers (quiet, efficient) alongside a used 4U enterprise server stripped of most drives and used as a cheap storage server (where noise is acceptable and RAM density matters).&lt;/p>
&lt;h2 id="the-honest-arithmetic-for-a-3-year-ownership-window">The honest arithmetic for a 3-year ownership window&lt;/h2>
&lt;p>&lt;strong>Dell R720 (1P, 8× HDD config):&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Hardware: $200–400&lt;/li>
&lt;li>Electricity ($0.13/kWh, 100W average): ~$341&lt;/li>
&lt;li>Cooling increase (server heat in your space): variable&lt;/li>
&lt;li>&lt;strong>3-year TCO: $541–741+&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>3× N150 mini PCs (cluster):&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Hardware: 3 × $160 = $480&lt;/li>
&lt;li>Electricity ($0.13/kWh, 15W average each): ~$61 total&lt;/li>
&lt;li>&lt;strong>3-year TCO: $541&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>The three mini PCs cost roughly the same over three years as a single R720, give you 3× the redundancy (any one node can fail without losing the cluster), consume 80% less power, and make no noise. They can&amp;rsquo;t touch the R720&amp;rsquo;s RAM ceiling or drive bay count — but for most homelab workloads, they don&amp;rsquo;t need to.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Running the power numbers for your specific setup? The &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">Power &amp;amp; Cost Calculator&lt;/a> lets you model each device individually. For mini PC recommendations, see &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">Best Mini PCs for Homelab 2026&lt;/a>, or price out the &lt;a href="https://techfuelhq.com/homelab/800-dollar-proxmox-server-used-parts-2026/">$800 used-parts Proxmox build&lt;/a> if you&amp;rsquo;d rather assemble a box from second-hand components. Once your hardware is chosen, the &lt;a href="https://techfuelhq.com/tutorials/zfs-proxmox-pool-setup-arc-tuning-2026/">ZFS on Proxmox guide&lt;/a> covers pool setup, and the &lt;a href="https://techfuelhq.com/tools/proxmox-capacity-planner/">Proxmox VM Capacity Planner&lt;/a> shows how much ZFS ARC headroom you have for VMs on each config.&lt;/em>&lt;/p></description></item><item><title>$800 Proxmox Server from Used and Refurbished Parts (2026)</title><link>https://techfuelhq.com/homelab/800-dollar-proxmox-server-used-parts-2026/</link><pubDate>Mon, 01 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/homelab/800-dollar-proxmox-server-used-parts-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-01 · ~13 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/homelab/800-dollar-proxmox-server-used-parts-2026.svg" alt="Buying guide comparing three Proxmox homelab builds under $800: a used Dell PowerEdge T430 enterprise tower ($360–630, 90W idle, ~$307 over 3 years), a used Ryzen 5 5600X consumer tower with RTX 3060 ($575–755, 55W, ~$188), and a three-node Beelink mini PC cluster ($580–620, 50W, ~$170), with total cost, idle power, and 3-year electricity cost per build." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>The argument for buying used is straightforward: someone else paid depreciation, and for server hardware that was running in a data center 24/7 for 5–7 years, &amp;ldquo;used&amp;rdquo; means proven reliability rather than a question mark. The $800 budget gives you several viable configurations depending on what you&amp;rsquo;re optimizing for — compute, RAM capacity, storage, or power efficiency.&lt;/p>
&lt;p>This article covers three distinct builds at or under $800, where to source parts, and what to verify before committing.&lt;/p>
&lt;h2 id="before-the-build-what-proxmox-actually-needs">Before the build: what Proxmox actually needs&lt;/h2>
&lt;p>Proxmox VE is a hypervisor, not a particularly demanding OS. What actually eats resources is your &lt;a href="https://techfuelhq.com/homelab/lxc-vs-vm-proxmox-2026/">VM and LXC&lt;/a> workload:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>RAM&lt;/strong> is the primary resource for VMs — each VM gets a dedicated allocation&lt;/li>
&lt;li>&lt;strong>CPU cores&lt;/strong> matter for highly parallel workloads; most homelab VMs are not CPU-bound&lt;/li>
&lt;li>&lt;strong>Storage IO&lt;/strong> matters for VMs doing heavy database or file operations&lt;/li>
&lt;li>&lt;strong>NIC speed&lt;/strong> matters if you&amp;rsquo;re running a NAS or doing VM live migration&lt;/li>
&lt;/ul>
&lt;p>A server that looks underpowered on paper (Xeon E5-2620 v4, 6 cores) can comfortably run 10–15 lightweight VMs and LXC containers because homelab workloads are rarely CPU-saturated simultaneously. If you want the minimum-versus-recommended numbers before you shop, the &lt;a href="https://techfuelhq.com/homelab/proxmox-hardware-requirements-2026/">Proxmox hardware requirements breakdown&lt;/a> covers the official floor, the practical RAM and CPU targets by workload, and the ZFS RAM rule these builds have to plan around.&lt;/p>
&lt;h2 id="build-option-1-used-enterprise-tower-server-350500">Build Option 1: Used enterprise tower server (~$350–500)&lt;/h2>
&lt;p>&lt;strong>The Workhorse — HP ProLiant ML350 Gen9 or Dell PowerEdge T430&lt;/strong>&lt;/p>
&lt;p>These are tower form-factor enterprise servers that run quietly enough for home use (no 1U blower fans), support large RAM configurations, and have been retired from businesses and sold at steep discounts.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Component&lt;/th>
&lt;th scope="col">Part&lt;/th>
&lt;th scope="col">Price&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Server&lt;/td>
&lt;td>Dell PowerEdge T430 (1P, E5-2600 v4)&lt;/td>
&lt;td>$150–300&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>CPU upgrade&lt;/td>
&lt;td>Intel Xeon E5-2680 v4 (14C/28T)&lt;/td>
&lt;td>$15–25&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>RAM&lt;/td>
&lt;td>4× 32GB DDR4 RDIMM (128GB total)&lt;/td>
&lt;td>$80–120&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Storage (OS)&lt;/td>
&lt;td>256GB SATA SSD&lt;/td>
&lt;td>$25–35&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Storage (VMs)&lt;/td>
&lt;td>2× used 4TB SATA HDD&lt;/td>
&lt;td>$40–70&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>10GbE NIC&lt;/td>
&lt;td>Intel X550-T2 dual-port&lt;/td>
&lt;td>$50–80&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Total&lt;/strong>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;strong>$360–630&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The E5-2680 v4 is a 14-core/28-thread Broadwell processor that runs $15–25 used in 2026 — absurd price for what it is. The T430 has 8 drive bays, hot-swap capability, iDRAC management, and PCI slots for NICs.&lt;/p>
&lt;p>&lt;strong>What to watch for:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Verify the T430 has the T430 BIOS, not a custom OEM BIOS that locks features&lt;/li>
&lt;li>Check iDRAC license — Enterprise iDRAC has HTML5 KVM console; Express does not&lt;/li>
&lt;li>Power consumption: T430 single-CPU idles at 80–100W. Model it in the &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">Power &amp;amp; Cost Calculator&lt;/a> before buying&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Where to buy:&lt;/strong> eBay, Bargain Hardware, local IT liquidators. Search &amp;ldquo;PowerEdge T430 CTO&amp;rdquo; for base units, then upgrade CPU and RAM separately. Buying with CPU/RAM pre-installed saves shipping but limits your configuration options.&lt;/p>
&lt;h2 id="build-option-2-consumer-tower-platform-350500">Build Option 2: Consumer tower platform (~$350–500)&lt;/h2>
&lt;p>&lt;strong>The Efficient Option — Ryzen 5 or 7 + AM5 platform&lt;/strong>&lt;/p>
&lt;p>Used consumer hardware has gotten cheap enough that it competes with enterprise gear on price while dramatically winning on power consumption and noise.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Component&lt;/th>
&lt;th scope="col">Part&lt;/th>
&lt;th scope="col">Price&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>CPU&lt;/td>
&lt;td>AMD Ryzen 5 5600X (6C/12T)&lt;/td>
&lt;td>$90–120 used&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Motherboard&lt;/td>
&lt;td>ASUS B550-A or MSI B550 Tomahawk&lt;/td>
&lt;td>$80–110 used&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>RAM&lt;/td>
&lt;td>64GB DDR4-3200 (2× 32GB)&lt;/td>
&lt;td>$60–80&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GPU (optional)&lt;/td>
&lt;td>NVIDIA RTX 3060 12GB&lt;/td>
&lt;td>$150–180 used&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Storage (OS)&lt;/td>
&lt;td>Samsung 970 EVO 500GB&lt;/td>
&lt;td>$40–55&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Storage (VMs)&lt;/td>
&lt;td>2TB WD Blue NVMe&lt;/td>
&lt;td>$65–80&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>PSU&lt;/td>
&lt;td>EVGA 650 GQ&lt;/td>
&lt;td>$50–70&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Case&lt;/td>
&lt;td>Fractal Define R5 (quiet, mid-tower)&lt;/td>
&lt;td>$40–60 used&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Total&lt;/strong>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;strong>$575–755&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The RTX 3060 12GB is the interesting addition here — at $150–180 used, it gives you 12GB VRAM for local AI inference (Llama 3.1 8B fits with headroom; 34B models at Q4 fit), hardware transcoding for Jellyfin, and GPU passthrough capability for a gaming VM.&lt;/p>
&lt;p>&lt;strong>Advantages over enterprise gear:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Idle power: ~45–65W vs 80–100W for the tower server&lt;/li>
&lt;li>Noise: consumer cases with good fans are much quieter than enterprise chassis&lt;/li>
&lt;li>GPU support: full PCIe ×16 slot for any consumer GPU, proper IOMMU groups&lt;/li>
&lt;li>Future upgrades: AM5 or AM4 platform has current driver support&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Where to buy:&lt;/strong> Facebook Marketplace, Craigslist, eBay used listings. Consumer CPUs/GPUs post-depreciation are often sold by gamers upgrading to newer generations.&lt;/p>
&lt;h2 id="build-option-3-3-used-mini-pcs-cluster-500700">Build Option 3: 3× Used Mini PCs cluster (~$500–700)&lt;/h2>
&lt;p>&lt;strong>The Resilient Option — budget mini PC Proxmox cluster&lt;/strong>&lt;/p>
&lt;p>Three nodes gives you high availability: if one node fails, VMs migrate to the other two. At $160–200 per refurbished N100/N150 mini PC, a 3-node cluster is within the $800 budget.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Component&lt;/th>
&lt;th scope="col">Part&lt;/th>
&lt;th scope="col">Price&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Node 1&lt;/td>
&lt;td>Beelink SEi12 N150 (16GB/500GB)&lt;/td>
&lt;td>$165 refurbished&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Node 2&lt;/td>
&lt;td>Beelink SEi12 N150 (16GB/500GB)&lt;/td>
&lt;td>$165 refurbished&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Node 3&lt;/td>
&lt;td>Beelink SEi12 N100 (16GB/500GB)&lt;/td>
&lt;td>$145 refurbished&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Switch&lt;/td>
&lt;td>TP-Link TL-SG108-M2 (8× 2.5GbE)&lt;/td>
&lt;td>$65&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Shared storage&lt;/td>
&lt;td>Used 4TB external USB (temporary)&lt;/td>
&lt;td>$40–60&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Total&lt;/strong>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;strong>$580–620&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The third node is deliberately slightly weaker — it handles the quorum and lighter workloads. All three have 2.5GbE built-in; the TP-Link switch connects them.&lt;/p>
&lt;p>&lt;strong>The shared storage gap:&lt;/strong> this configuration needs shared storage for VM live migration. A USB-attached HDD to one node works for a starter setup; the proper solution is a dedicated NAS or a Ceph cluster (which needs more nodes/resources to be practical). Plan the NAS upgrade separately or use local storage per node without live migration.&lt;/p>
&lt;p>&lt;strong>Advantages:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>3-node HA: one node can fail completely and services keep running&lt;/li>
&lt;li>Lowest power consumption: ~50W total idle for all three nodes&lt;/li>
&lt;li>Silent: N100/N150 mini PCs are near-silent under typical VM load&lt;/li>
&lt;li>Physical footprint: three miniature boxes&lt;/li>
&lt;/ul>
&lt;h2 id="sourcing-guide">Sourcing guide&lt;/h2>
&lt;p>&lt;strong>eBay:&lt;/strong> Best for enterprise server hardware, specific CPU models, and server-grade NICs. Search with &amp;ldquo;Sold&amp;rdquo; filter to validate realistic prices before bidding. Verify seller feedback and return policy.&lt;/p>
&lt;p>&lt;strong>Facebook Marketplace / Craigslist:&lt;/strong> Best for consumer hardware — CPUs, GPUs, cases, PSUs. Local pickup avoids shipping risk for heavy items. Negotiate; sellers often accept 10–20% below asking for cash/local.&lt;/p>
&lt;p>&lt;strong>r/homelabsales:&lt;/strong> Reddit community for homelab gear. Many trusted regular sellers with established reputation. Good for complete server systems, networking gear, and storage.&lt;/p>
&lt;p>&lt;strong>ServerMonkey / Horizon Technology:&lt;/strong> Vendors of tested refurbished enterprise equipment with return policies. Higher price than eBay but lower risk — parts are tested and you get a warranty.&lt;/p>
&lt;h2 id="what-to-test-when-the-hardware-arrives">What to test when the hardware arrives&lt;/h2>
&lt;p>&lt;strong>HDDs:&lt;/strong> Run a SMART extended test immediately: &lt;code>smartctl -t long /dev/sdX&lt;/code>. Check Reallocated Sector Count, Current Pending Sector, and Offline Uncorrectable — any non-zero value is a red flag on a production drive.&lt;/p>
&lt;p>&lt;strong>RAM:&lt;/strong> Run memtest86+ (bootable from USB) for at least one pass. Server RAM rarely fails, but a known-good verification saves debugging later.&lt;/p>
&lt;p>&lt;strong>CPU:&lt;/strong> Proxmox&amp;rsquo;s install and a CPU-Z reading (via a live OS) confirms the CPU model and clock speeds. Verify it&amp;rsquo;s not a remarked or counterfeit chip — buy from established sellers.&lt;/p>
&lt;p>&lt;strong>iDRAC/iLO:&lt;/strong> If the enterprise server has iDRAC, verify you can access it via the dedicated management port. Resetting the iDRAC password is possible with &lt;code>racadm&lt;/code> but takes extra time.&lt;/p>
&lt;p>&lt;strong>Power supply:&lt;/strong> On enterprise servers, the PSU is usually hot-swap and rated to server standards — reliable. On consumer builds, a failing PSU is a common failure point; buy known brands (Seasonic, EVGA, Corsair) and check for coil whine or instability.&lt;/p>
&lt;h2 id="tco-reminder">TCO reminder&lt;/h2>
&lt;p>Used parts are cheaper upfront. Factor in:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Power cost over 3 years&lt;/strong> — use the &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">Power &amp;amp; Cost Calculator&lt;/a>. The enterprise tower option at 90W idle costs ~$307 in electricity over 3 years at $0.13/kWh. The mini PC cluster at 50W total costs ~$170. The consumer tower at 55W idle costs ~$188.&lt;/li>
&lt;li>&lt;strong>Noise and location&lt;/strong> — enterprise tower servers are not quiet office companions. Plan for basement/closet/garage.&lt;/li>
&lt;li>&lt;strong>Future upgrade path&lt;/strong> — enterprise LGA2011-3 platform is dead-end (no new processors). AM4/AM5 consumer platforms have life ahead.&lt;/li>
&lt;/ul>
&lt;p>The $800 homelab is achievable several ways; the right configuration depends on what you&amp;rsquo;re optimizing for. Enterprise tower for RAM capacity and storage density. Consumer tower for efficiency and GPU support. Mini PC cluster for resilience and silence.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Want to compare the power consumption of these configurations before buying? The &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">Power &amp;amp; Cost Calculator&lt;/a> handles multi-node setups. The &lt;a href="https://techfuelhq.com/homelab/used-enterprise-vs-mini-pc-homelab-2026/">used enterprise vs mini PC comparison&lt;/a> covers the broader tradeoffs. Once Proxmox is installed, the &lt;a href="https://techfuelhq.com/tutorials/zfs-proxmox-pool-setup-arc-tuning-2026/">ZFS pool setup guide&lt;/a> covers pool creation, ARC tuning for a host with VMs, and scrub scheduling. The &lt;a href="https://techfuelhq.com/tools/proxmox-capacity-planner/">Proxmox VM Capacity Planner&lt;/a> calculates how many VMs you can run given your RAM and ZFS ARC allocation.&lt;/em>&lt;/p></description></item><item><title>Proxmox Backup Server: 3-2-1 Backup Setup Guide (2026)</title><link>https://techfuelhq.com/tutorials/proxmox-backup-server-3-2-1-2026/</link><pubDate>Mon, 01 Jun 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tutorials/proxmox-backup-server-3-2-1-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-06-01 · ~15 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/tutorials/proxmox-backup-server-3-2-1-2026.svg" alt="3-2-1 backup topology diagram: a Proxmox VE 8.x host sends daily 00:30 snapshot backups to a local PBS node with a deduplicated pve-backups datastore (prune 3/7d/4w/3m, weekly verify), which then syncs off-site at 06:00 to a second PBS node or via restic to Backblaze B2 at 07:00, with stats for 2.5x sizing, 6-8W draw, monthly restores, and port 8007." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>Most homelab Proxmox setups have no real backup strategy. They rely on ZFS snapshots (local-only, same hardware), maybe Clonezilla images that haven&amp;rsquo;t been tested, or a mental note to &amp;ldquo;set up backups eventually.&amp;rdquo; Eventually usually means the day a drive fails.&lt;/p>
&lt;p>This guide walks through setting up Proxmox Backup Server (PBS) to cover the 3-2-1 rule: 3 copies of data, on 2 different media, with 1 copy off-site. By the end you&amp;rsquo;ll have automated daily backups, verified restores, and an off-site sync. All free, all running in your homelab. This is the Proxmox implementation of the rule; for the platform-agnostic version — including why RAID and a same-pool snapshot are &lt;em>not&lt;/em> backups — see &lt;a href="https://techfuelhq.com/homelab/3-2-1-backup-rule-homelab-2026/">the 3-2-1 backup rule for homelabs&lt;/a>.&lt;/p>
&lt;h2 id="what-the-3-2-1-rule-means-in-practice">What the 3-2-1 rule means in practice&lt;/h2>
&lt;p>&lt;strong>3 copies&lt;/strong> — the production data (on your Proxmox host), a local PBS backup, and an off-site copy.&lt;/p>
&lt;p>&lt;strong>2 different media&lt;/strong> — your main host storage and the PBS datastore on separate disks or separate machines. Storing PBS on the same physical disk as your VMs is not 2-media.&lt;/p>
&lt;p>&lt;strong>1 off-site&lt;/strong> — a copy that survives your house burning down. For homelabs this is typically: a second PBS instance at a friend&amp;rsquo;s or family member&amp;rsquo;s house synced via PBS sync jobs, or a cloud backup using restic to Backblaze B2.&lt;/p>
&lt;p>This guide builds copies 2 (local PBS) and 3 (off-site sync) assuming copy 1 (production) already exists on your Proxmox host.&lt;/p>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;ul>
&lt;li>Proxmox VE 8.x running with at least one VM or LXC container to protect&lt;/li>
&lt;li>A separate machine (or a VM on a separate host) to run PBS — bare metal is ideal&lt;/li>
&lt;li>For off-site: a second PBS node at a remote location, or a Backblaze B2 bucket&lt;/li>
&lt;/ul>
&lt;p>If you want to run PBS as a VM on your single Proxmox host to start, that works — you get deduplication and scheduling — but it is not a true 3-2-1 until you add the off-site piece.&lt;/p>
&lt;h2 id="step-1-install-proxmox-backup-server">Step 1: Install Proxmox Backup Server&lt;/h2>
&lt;p>&lt;strong>Download PBS.&lt;/strong> Get the ISO from &lt;a href="https://www.proxmox.com/en/downloads/proxmox-backup-server" rel="noopener">proxmox.com/en/downloads/proxmox-backup-server&lt;/a>. As of 2026 the current release is PBS 3.x.&lt;/p>
&lt;p>&lt;strong>Install on bare metal or VM.&lt;/strong> The PBS installer is similar to PVE&amp;rsquo;s — choose a target disk, set hostname (I use &lt;code>pbs01.lan&lt;/code>), IP address, and root password. Use a static IP on your LAN for PBS since PVE will connect to it by IP or hostname.&lt;/p>
&lt;p>If installing PBS as a VM on PVE, allocate at least 2 vCPUs, 2GB RAM, and pass through or assign a dedicated disk for the backup datastore. Do not use the same physical disk your VMs live on.&lt;/p>
&lt;h2 id="step-2-configure-a-datastore">Step 2: Configure a datastore&lt;/h2>
&lt;p>A PBS datastore is a directory that holds chunked backup data. Log into the PBS web UI at &lt;code>https://pbs-ip:8007&lt;/code>.&lt;/p>
&lt;ol>
&lt;li>Go to &lt;strong>Datastore → Create Datastore&lt;/strong>&lt;/li>
&lt;li>Set &lt;strong>Name&lt;/strong> (e.g., &lt;code>pve-backups&lt;/code>)&lt;/li>
&lt;li>Set &lt;strong>Backing Path&lt;/strong> — this should point to your backup disk. For a dedicated drive mounted at &lt;code>/mnt/backup-drive&lt;/code>, set the path to &lt;code>/mnt/backup-drive/pve-backups&lt;/code>&lt;/li>
&lt;li>Leave &lt;strong>Chunk Order&lt;/strong> at default (inode)&lt;/li>
&lt;li>Click &lt;strong>Create&lt;/strong>&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Configure garbage collection.&lt;/strong> Go to the datastore → GC settings. Enable it on a schedule — daily at 3am works. GC removes chunks that are no longer referenced by any backup snapshot.&lt;/p>
&lt;p>&lt;strong>Configure prune settings.&lt;/strong> Under the datastore&amp;rsquo;s &lt;strong>Options&lt;/strong>, set prune defaults:&lt;/p>
&lt;pre tabindex="0">&lt;code>Keep Last: 3
Keep Daily: 7
Keep Weekly: 4
Keep Monthly: 3
&lt;/code>&lt;/pre>&lt;p>This keeps 3 most-recent backups, the last 7 daily, 4 weekly, and 3 monthly. Adjust to your storage capacity.&lt;/p>
&lt;h2 id="step-3-add-pbs-to-proxmox-ve">Step 3: Add PBS to Proxmox VE&lt;/h2>
&lt;p>In PVE&amp;rsquo;s web UI:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Datacenter → Storage → Add → Proxmox Backup Server&lt;/strong>&lt;/li>
&lt;li>Set &lt;strong>ID&lt;/strong> (e.g., &lt;code>pbs01&lt;/code>)&lt;/li>
&lt;li>Set &lt;strong>Server&lt;/strong> to the PBS IP or hostname&lt;/li>
&lt;li>Set &lt;strong>Username&lt;/strong> to &lt;code>root@pam&lt;/code> (or create a dedicated PBS user — preferred for production)&lt;/li>
&lt;li>Set &lt;strong>Password&lt;/strong> and the &lt;strong>Datastore&lt;/strong> name you created&lt;/li>
&lt;li>Click &lt;strong>Add&lt;/strong>&lt;/li>
&lt;/ol>
&lt;p>PVE will connect to PBS and verify credentials. If this fails, check that port 8007 is reachable between PVE and PBS and that the PBS firewall allows the connection.&lt;/p>
&lt;p>&lt;strong>Better: create a dedicated PBS user.&lt;/strong> In PBS web UI:&lt;/p>
&lt;pre tabindex="0">&lt;code>Administration → Access Control → Add User
Username: pve-backup@pbs
Password: (strong password)
&lt;/code>&lt;/pre>&lt;p>Then assign the &lt;code>DatastoreBackup&lt;/code> role to this user on the specific datastore:&lt;/p>
&lt;pre tabindex="0">&lt;code>Administration → Access Control → Permissions → Add
Path: /datastore/pve-backups
User: pve-backup@pbs
Role: DatastoreBackup
&lt;/code>&lt;/pre>&lt;p>Use &lt;code>pve-backup@pbs&lt;/code> as the username when adding PBS to PVE instead of &lt;code>root@pam&lt;/code>. This limits what the PVE connection can do on your PBS server.&lt;/p>
&lt;h2 id="step-4-schedule-automated-backups">Step 4: Schedule automated backups&lt;/h2>
&lt;p>In PVE:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Datacenter → Backup → Add&lt;/strong>&lt;/li>
&lt;li>Set &lt;strong>Storage&lt;/strong> to your PBS storage entry (&lt;code>pbs01&lt;/code>)&lt;/li>
&lt;li>Set &lt;strong>Schedule&lt;/strong> — &lt;code>00:30&lt;/code> daily is a good default (after midnight, before your morning activity)&lt;/li>
&lt;li>Set &lt;strong>Mode&lt;/strong> — &lt;code>Snapshot&lt;/code> for VMs (live, no downtime), &lt;code>Suspend&lt;/code> or &lt;code>Stop&lt;/code> for LXC&lt;/li>
&lt;li>Under &lt;strong>Selection&lt;/strong>, choose which VMs/LXCs to back up — I recommend selecting all and excluding specific ones you don&amp;rsquo;t care about&lt;/li>
&lt;li>Enable &lt;strong>Send email notification&lt;/strong> and enter your email&lt;/li>
&lt;/ol>
&lt;p>For LXC containers, &lt;code>Snapshot&lt;/code> mode requires the underlying storage to support snapshots (ZFS or LVM-thin). If you&amp;rsquo;re using a directory-backed storage, use &lt;code>Suspend&lt;/code> mode instead.&lt;/p>
&lt;p>&lt;strong>Per-VM backup settings.&lt;/strong> On individual VMs/LXCs, you can override retention under the &lt;strong>Backup&lt;/strong> tab. This lets high-value VMs keep 30 days of dailies while less critical containers keep only 7.&lt;/p>
&lt;h2 id="step-5-verify-a-restore">Step 5: Verify a restore&lt;/h2>
&lt;p>A backup you haven&amp;rsquo;t tested is not a backup. After your first scheduled backup runs:&lt;/p>
&lt;ol>
&lt;li>In PVE, go to the VM or LXC → &lt;strong>Backup&lt;/strong> tab&lt;/li>
&lt;li>Select the most recent backup entry&lt;/li>
&lt;li>Click &lt;strong>Restore&lt;/strong> → set a new VMID (not the same one — you don&amp;rsquo;t want to overwrite production)&lt;/li>
&lt;li>Boot the restored VM and verify it starts and the data is intact&lt;/li>
&lt;li>Delete the test VM&lt;/li>
&lt;/ol>
&lt;p>Do this monthly. Seriously. Backup software has bugs, datastores corrupt, configurations drift. A monthly manual restore is the only way to know your backups are actually usable — and the same restore path is how you &lt;a href="https://techfuelhq.com/tutorials/proxmox-migrate-vm-without-cluster-2026/">move a guest to new hardware without building a cluster&lt;/a>.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Or test from the PBS CLI — list backups:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>proxmox-backup-client list --repository root@pam@pbs-ip:8007:pve-backups
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Restore a VM disk to a local path for inspection:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>proxmox-backup-client restore vm/100/2026-04-29T00:30:00Z &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> drive-scsi0.img:drive-scsi0.img &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --repository root@pam@pbs-ip:8007:pve-backups
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="step-6-off-site-sync-completing-3-2-1">Step 6: Off-site sync (completing 3-2-1)&lt;/h2>
&lt;h3 id="option-a-second-pbs-node-at-a-remote-location">Option A: Second PBS node at a remote location&lt;/h3>
&lt;p>If you have a second PBS instance running at a trusted location (family member&amp;rsquo;s house, colocated mini PC, etc.):&lt;/p>
&lt;ol>
&lt;li>In PBS web UI → &lt;strong>Remotes → Add Remote&lt;/strong>&lt;/li>
&lt;li>Enter the remote PBS IP/hostname, port (8007), and credentials&lt;/li>
&lt;li>Go to &lt;strong>Datastore → pve-backups → Sync Jobs → Add&lt;/strong>&lt;/li>
&lt;li>Set &lt;strong>Remote&lt;/strong> to the remote you just added, &lt;strong>Remote Store&lt;/strong> to the remote datastore&lt;/li>
&lt;li>Set &lt;strong>Schedule&lt;/strong> — &lt;code>06:00&lt;/code> daily works (a few hours after local backups complete)&lt;/li>
&lt;li>Set &lt;strong>Delete Vanished&lt;/strong> if you want the remote to mirror exactly (remove backups that no longer exist locally)&lt;/li>
&lt;/ol>
&lt;p>PBS sync is bandwidth-efficient — only changed chunks transfer. After the initial full sync, daily incrementals for a typical homelab are a few hundred MB.&lt;/p>
&lt;h3 id="option-b-backblaze-b2-with-restic">Option B: Backblaze B2 with restic&lt;/h3>
&lt;p>If you don&amp;rsquo;t have a second site, Backblaze B2 gives you off-site object storage at $0.00695/GB/month ($6.95/TB). For 100GB of compressed, deduplicated backup data, that&amp;rsquo;s about $0.70/month.&lt;/p>
&lt;p>Install restic on PBS or on a separate backup machine:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>apt install restic
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Initialize the B2 repository&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>export B2_ACCOUNT_ID&lt;span style="color:#f92672">=&lt;/span>your-account-id
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>export B2_ACCOUNT_KEY&lt;span style="color:#f92672">=&lt;/span>your-application-key
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>restic -r b2:your-bucket-name:pve-backups init
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Back up the PBS datastore directory&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>restic -r b2:your-bucket-name:pve-backups backup /mnt/backup-drive/pve-backups &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --exclude &lt;span style="color:#e6db74">&amp;#34;*.tmp&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Set this up as a systemd timer that runs after PBS&amp;rsquo;s garbage collection:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-ini" data-lang="ini">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># /etc/systemd/system/restic-b2.service&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[Unit]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">Description&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">Restic backup to Backblaze B2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">After&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">network-online.target&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[Service]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">Type&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">oneshot&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">EnvironmentFile&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">/etc/restic/b2.env&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">ExecStart&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">/usr/bin/restic -r b2:your-bucket:pve-backups backup /mnt/backup-drive/pve-backups&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">ExecStartPost&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">/usr/bin/restic -r b2:your-bucket:pve-backups forget \
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> --keep-daily 7 --keep-weekly 4 --keep-monthly 3 --prune&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-ini" data-lang="ini">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># /etc/systemd/system/restic-b2.timer&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[Unit]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">Description&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">Run Restic B2 backup daily&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[Timer]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">OnCalendar&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">*-*-* 07:00:00&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">Persistent&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[Install]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">WantedBy&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">timers.target&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>systemctl enable --now restic-b2.timer
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Store your B2 credentials and restic password in &lt;code>/etc/restic/b2.env&lt;/code> with &lt;code>chmod 600&lt;/code>. Do not hardcode them in the unit file.&lt;/p>
&lt;h2 id="monitoring-know-when-backups-fail">Monitoring: know when backups fail&lt;/h2>
&lt;p>Backups that silently fail for weeks are common. Set up monitoring before you need to rely on the backups.&lt;/p>
&lt;p>&lt;strong>PBS built-in:&lt;/strong> Enable email notifications in PBS → Administration → Notifications. PBS will email on backup failure, verify errors, and GC issues.&lt;/p>
&lt;p>&lt;strong>Uptime Kuma push monitor.&lt;/strong> Add a push-type monitor in Uptime Kuma. At the end of your backup cron or systemd service, add:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>curl -s &lt;span style="color:#e6db74">&amp;#34;https://uptime.yourdomain.com/api/push/YOUR_PUSH_KEY?status=up&amp;amp;msg=PBS%20OK&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>If Uptime Kuma doesn&amp;rsquo;t receive a push within your expected window, it pages you. This catches silent failures where PBS thinks it succeeded but the data is corrupted.&lt;/p>
&lt;p>&lt;strong>PBS verify jobs.&lt;/strong> In the PBS web UI, under each datastore, schedule a &lt;strong>Verify Job&lt;/strong>. This reads every backup chunk and checks its SHA-256 hash against the stored checksum. Run it weekly. A verify job that fails means corruption — find out before you need a restore.&lt;/p>
&lt;h2 id="what-this-setup-protects-against">What this setup protects against&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Failure scenario&lt;/th>
&lt;th scope="col">Protected by&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Single drive failure&lt;/td>
&lt;td>PBS local backup&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Host hardware failure&lt;/td>
&lt;td>PBS on separate machine&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Accidental VM deletion&lt;/td>
&lt;td>PBS snapshots with retention&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ransomware on host&lt;/td>
&lt;td>PBS is separate system; B2 versioning&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>House fire / theft&lt;/td>
&lt;td>Off-site PBS or B2&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>PBS corruption&lt;/td>
&lt;td>B2 restic copy&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The one thing this doesn&amp;rsquo;t protect: your B2 account getting compromised. Restic&amp;rsquo;s encryption ensures the data itself is safe even if B2 is breached, but an attacker with B2 credentials can delete your bucket. Enable B2&amp;rsquo;s &lt;strong>Object Lock&lt;/strong> (immutable storage) on the bucket for protection against deletion.&lt;/p>
&lt;h2 id="storage-sizing-reference">Storage sizing reference&lt;/h2>
&lt;p>Running this on a &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">homelab power budget&lt;/a>? A small PBS node on a mini PC with a 4TB HDD adds around 6–8W idle to your setup — about $7–9/year at average US rates. That&amp;rsquo;s cheap insurance.&lt;/p>
&lt;p>For datastore sizing: assume 2.5× the sum of all your VM/LXC disk sizes for 30 days of daily backups with PBS deduplication. A homelab with 1TB of total VM disk content typically uses 600GB–1.2TB of PBS datastore space for a month of retention.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Running Proxmox? The &lt;a href="https://techfuelhq.com/homelab/lxc-vs-vm-proxmox-2026/">LXC vs VM guide&lt;/a> covers when to use each for your workloads. For ZFS datastores under PBS, the &lt;a href="https://techfuelhq.com/tutorials/zfs-proxmox-pool-setup-arc-tuning-2026/">ZFS on Proxmox guide&lt;/a> covers pool setup, ARC sizing, and Sanoid snapshot schedules that complement PBS retention. For the off-site B2 restic copy in detail, see &lt;a href="https://techfuelhq.com/tutorials/automated-offsite-backups-restic-2026/">Automated Off-Site Backups with restic&lt;/a>. The &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">Power &amp;amp; Cost Calculator&lt;/a> shows what your PBS node adds to your monthly electricity bill.&lt;/em>&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://pbs.proxmox.com/docs/installation.html" rel="noopener">Proxmox Backup Server Installation&lt;/a> &amp;ndash; official install steps for PBS on bare metal or as a VM.&lt;/li>
&lt;li>&lt;a href="https://pbs.proxmox.com/docs/maintenance.html" rel="noopener">PBS Maintenance: Prune, GC, Verify&lt;/a> &amp;ndash; official reference for pruning retention, garbage collection, and verify jobs.&lt;/li>
&lt;li>&lt;a href="https://pbs.proxmox.com/docs/managing-remotes.html" rel="noopener">PBS Managing Remotes and Sync&lt;/a> &amp;ndash; official docs for the remote and sync jobs used for off-site replication.&lt;/li>
&lt;li>&lt;a href="https://restic.readthedocs.io/en/stable/030_preparing_a_new_repo.html" rel="noopener">restic Preparing a Repository&lt;/a> &amp;ndash; official restic docs for initializing the Backblaze B2 repository used in the off-site copy.&lt;/li>
&lt;/ul></description></item><item><title>Home Assistant on Proxmox: Install HAOS as a VM (2026)</title><link>https://techfuelhq.com/tutorials/home-assistant-proxmox-2026/</link><pubDate>Sun, 31 May 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tutorials/home-assistant-proxmox-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-05-31 · ~13 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/tutorials/home-assistant-proxmox-2026.svg" alt="Architecture diagram of Home Assistant OS running as a Proxmox VM (ID 200, q35/UEFI, SCSI, VirtIO on vmbr0): the Supervisor orchestrating Zigbee2MQTT, Frigate, Tailscale, and Rclone add-ons, USB passthrough of a Zigbee/Z-Wave coordinator by vendor:product ID, the HA dashboard on port 8123, and a two-layer backup of PBS VM snapshots plus HA config backups to a NAS." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>Running Home Assistant on dedicated hardware (a Pi, an old NUC) made sense five years ago. If you already have a Proxmox homelab, there is no reason for a second machine. (If you don&amp;rsquo;t have a homelab yet and just want a dedicated box for Home Assistant, start with our &lt;a href="https://techfuelhq.com/homelab/best-mini-pc-home-assistant-2026/">best mini PC for Home Assistant guide&lt;/a> and come back here to install it.) A HAOS VM on Proxmox runs exactly like bare-metal HAOS, gets the same updates, supports all add-ons, and takes up about 4GB of RAM when loaded.&lt;/p>
&lt;p>This guide installs Home Assistant OS as a Proxmox VM — the supported method that gets you Supervisor, the add-on store, and HA-style snapshots. Not HA Core in an LXC (unsupported, loses add-ons), not HA Container (no Supervisor). HAOS in a VM.&lt;/p>
&lt;h2 id="why-vm-not-lxc">Why VM, not LXC&lt;/h2>
&lt;p>The &lt;a href="https://techfuelhq.com/homelab/lxc-vs-vm-proxmox-2026/">LXC vs VM decision&lt;/a> applies here clearly: Home Assistant OS is a full operating system, not a service. It runs its own kernel, manages its own update cycle, and orchestrates multiple internal containers via Supervisor. Putting it in an LXC violates the architectural contract HAOS was designed around and breaks add-ons that depend on host kernel access.&lt;/p>
&lt;p>If you want to run it in a container anyway, use the official Home Assistant Container image in Docker — but you lose Supervisor and the add-on ecosystem. For everything, use a VM.&lt;/p>
&lt;h2 id="step-1-download-the-haos-disk-image">Step 1: Download the HAOS disk image&lt;/h2>
&lt;p>Go to &lt;a href="https://www.home-assistant.io/installation/alternative" rel="noopener">home-assistant.io/installation/alternative&lt;/a> and download the &lt;strong>KVM/Proxmox&lt;/strong> image. As of 2026 this is a &lt;code>.qcow2&lt;/code> file — pre-built disk image for QEMU.&lt;/p>
&lt;p>Or download directly to your Proxmox host:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># SSH into Proxmox host&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cd /tmp
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Get the latest HAOS version number from GitHub releases&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>HAOS_VERSION&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#66d9ef">$(&lt;/span>curl -s https://api.github.com/repos/home-assistant/operating-system/releases/latest | grep tag_name | cut -d&lt;span style="color:#e6db74">&amp;#39;&amp;#34;&amp;#39;&lt;/span> -f4&lt;span style="color:#66d9ef">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Download qcow2 image (replace x86_64 with aarch64 for ARM)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>wget &lt;span style="color:#e6db74">&amp;#34;https://github.com/home-assistant/operating-system/releases/download/&lt;/span>&lt;span style="color:#e6db74">${&lt;/span>HAOS_VERSION&lt;span style="color:#e6db74">}&lt;/span>&lt;span style="color:#e6db74">/haos_ova-&lt;/span>&lt;span style="color:#e6db74">${&lt;/span>HAOS_VERSION&lt;span style="color:#e6db74">}&lt;/span>&lt;span style="color:#e6db74">.qcow2.xz&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Extract&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>xz -d haos_ova-&lt;span style="color:#e6db74">${&lt;/span>HAOS_VERSION&lt;span style="color:#e6db74">}&lt;/span>.qcow2.xz
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="step-2-create-the-vm-in-proxmox">Step 2: Create the VM in Proxmox&lt;/h2>
&lt;p>In the Proxmox web UI, click &lt;strong>Create VM&lt;/strong>:&lt;/p>
&lt;p>&lt;strong>General tab:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Node: your Proxmox host&lt;/li>
&lt;li>VM ID: choose a free ID (e.g., 200)&lt;/li>
&lt;li>Name: &lt;code>home-assistant&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>OS tab:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Select &amp;ldquo;Do not use any media&amp;rdquo; (we&amp;rsquo;ll import the disk image instead of booting from ISO)&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>System tab:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Machine: &lt;code>q35&lt;/code>&lt;/li>
&lt;li>BIOS: &lt;code>OVMF (UEFI)&lt;/code> — HAOS requires UEFI&lt;/li>
&lt;li>Check &amp;ldquo;Add EFI Disk&amp;rdquo; → storage: local-lvm (or your preferred storage)&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Disks tab:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Delete the default disk that was created (we&amp;rsquo;ll import our own)&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>CPU tab:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Sockets: 1&lt;/li>
&lt;li>Cores: 2 (minimum), 4 recommended for add-ons like Frigate&lt;/li>
&lt;li>Type: &lt;code>host&lt;/code> — lets the VM use your CPU&amp;rsquo;s full instruction set&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Memory tab:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>2048 MB minimum, 4096 MB comfortable&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Network tab:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Bridge: vmbr0 (your main LAN bridge)&lt;/li>
&lt;li>Model: VirtIO&lt;/li>
&lt;/ul>
&lt;p>Click &lt;strong>Finish&lt;/strong> — do NOT start the VM yet.&lt;/p>
&lt;h2 id="step-3-import-the-haos-disk">Step 3: Import the HAOS disk&lt;/h2>
&lt;p>SSH into Proxmox and import the downloaded image into the VM you just created. Replace &lt;code>200&lt;/code> with your VM ID and &lt;code>local-lvm&lt;/code> with your storage:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>qm importdisk &lt;span style="color:#ae81ff">200&lt;/span> /tmp/haos_ova-*.qcow2 local-lvm
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This creates a new disk in the storage. Back in the Proxmox web UI:&lt;/p>
&lt;ol>
&lt;li>Go to the VM → &lt;strong>Hardware&lt;/strong>&lt;/li>
&lt;li>You&amp;rsquo;ll see an &amp;ldquo;Unused Disk&amp;rdquo; entry — click it → &lt;strong>Edit&lt;/strong>&lt;/li>
&lt;li>Set &lt;strong>Bus/Device&lt;/strong> to &lt;code>SCSI&lt;/code> (scsi0) — required for best performance with HAOS&lt;/li>
&lt;li>Enable &lt;strong>Discard&lt;/strong> (for SSD/NVMe storage)&lt;/li>
&lt;li>Click &lt;strong>Add&lt;/strong>&lt;/li>
&lt;/ol>
&lt;p>Now set the boot order:&lt;/p>
&lt;ol>
&lt;li>VM → &lt;strong>Options → Boot Order&lt;/strong>&lt;/li>
&lt;li>Enable &lt;code>scsi0&lt;/code> and move it to position 1&lt;/li>
&lt;li>Disable any other boot devices&lt;/li>
&lt;/ol>
&lt;h2 id="step-4-first-boot-and-initial-setup">Step 4: First boot and initial setup&lt;/h2>
&lt;p>Start the VM. In the Proxmox web console, watch the boot sequence. HAOS boots in about 30–60 seconds on first run (initial setup takes longer as it downloads updates).&lt;/p>
&lt;p>&lt;strong>Find the IP address.&lt;/strong> HAOS uses DHCP by default. Check your router&amp;rsquo;s DHCP table for a device named &lt;code>homeassistant&lt;/code>, or watch the console — HAOS prints its IP when fully booted.&lt;/p>
&lt;p>Open a browser to &lt;code>http://homeassistant-ip:8123&lt;/code>. You&amp;rsquo;ll see the Home Assistant onboarding wizard:&lt;/p>
&lt;ol>
&lt;li>Create your account&lt;/li>
&lt;li>Set your home location&lt;/li>
&lt;li>HA will discover devices on your network automatically — review them and add what&amp;rsquo;s yours&lt;/li>
&lt;/ol>
&lt;p>After onboarding, go to &lt;strong>Settings → System → Updates&lt;/strong> and apply any pending updates. HAOS manages its own OS updates separately from HA Core updates.&lt;/p>
&lt;h2 id="step-5-usb-device-passthrough-zigbeez-wave">Step 5: USB device passthrough (Zigbee/Z-Wave)&lt;/h2>
&lt;p>If you have a Zigbee coordinator (Sonoff Zigbee 3.0 Dongle Plus, HUSBZB-1, Aeotec Z-Stick) or Z-Wave stick connected to your Proxmox host, pass it through to the HA VM.&lt;/p>
&lt;p>&lt;strong>Identify the device on the host:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>lsusb
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Find your coordinator in the list. Note the vendor:product ID (e.g., &lt;code>1a86:55d4&lt;/code> for the Sonoff Zigbee dongle).&lt;/p>
&lt;p>&lt;strong>Pass through in Proxmox:&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>VM → &lt;strong>Hardware → Add → USB Device&lt;/strong>&lt;/li>
&lt;li>Select &lt;strong>Use USB vendor/product ID&lt;/strong> (not port — this survives physical port changes)&lt;/li>
&lt;li>Enter vendor ID and product ID&lt;/li>
&lt;li>Click &lt;strong>Add&lt;/strong>&lt;/li>
&lt;/ol>
&lt;p>Restart the VM. In Home Assistant, go to &lt;strong>Settings → Add-ons → Zigbee2MQTT&lt;/strong> (install from the add-on store), configure it with the USB device path (typically &lt;code>/dev/ttyACM0&lt;/code> or &lt;code>/dev/ttyUSB0&lt;/code> — check the Z2M add-on logs if wrong).&lt;/p>
&lt;h2 id="step-6-configure-external-backups">Step 6: Configure external backups&lt;/h2>
&lt;p>HAOS has its own backup system (supervisor-level snapshots). By default, backups stay inside the HAOS VM. For real off-site protection, configure an external backup location.&lt;/p>
&lt;p>&lt;strong>NAS via SMB/CIFS:&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>Home Assistant → &lt;strong>Settings → System → Backups&lt;/strong>&lt;/li>
&lt;li>Configure a network backup location → SMB share on your NAS&lt;/li>
&lt;li>Set automatic backup schedule (daily is reasonable for an active HA setup)&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Rclone add-on:&lt;/strong> The community Rclone add-on can sync HA backups to Backblaze B2, Google Drive, or any rclone-supported destination. Combined with your &lt;a href="https://techfuelhq.com/tutorials/proxmox-backup-server-3-2-1-2026/">PBS VM backup&lt;/a>, this gives you two-layer coverage: HA config-level backups on NAS, full VM snapshot via PBS.&lt;/p>
&lt;h2 id="step-7-remote-access">Step 7: Remote access&lt;/h2>
&lt;p>&lt;strong>Nabu Casa (Home Assistant Cloud).&lt;/strong> The easiest remote access option — $65/year buys remote access, Google/Alexa integration, and supports HA development. If you&amp;rsquo;re already paying for cloud services, this is worth it.&lt;/p>
&lt;p>&lt;strong>Tailscale add-on.&lt;/strong> For free remote access through Tailscale, install the Tailscale add-on from the HA add-on store. After installing and authorizing, your HA instance gets a Tailscale IP and becomes accessible from anywhere on your tailnet. No port forwarding, no external domain required.&lt;/p>
&lt;p>Install the add-on: &lt;strong>Settings → Add-ons → Add-on Store → search &amp;ldquo;Tailscale&amp;rdquo;&lt;/strong>&lt;/p>
&lt;p>The Tailscale add-on handles the key exchange and keeps the tunnel running. Combined with your existing &lt;a href="https://techfuelhq.com/tutorials/tailscale-remote-access-homelab-2026/">Tailscale homelab setup&lt;/a>, HA is just another device on your tailnet.&lt;/p>
&lt;p>&lt;strong>NGINX Proxy Manager.&lt;/strong> If you want a proper domain with HTTPS: add a proxy host in NPM pointing to the HA VM&amp;rsquo;s LAN IP on port 8123. Enable Let&amp;rsquo;s Encrypt. In HA&amp;rsquo;s &lt;code>configuration.yaml&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">http&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">use_x_forwarded_for&lt;/span>: &lt;span style="color:#66d9ef">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">trusted_proxies&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">192.168.1&lt;/span>&lt;span style="color:#ae81ff">.x &lt;/span> &lt;span style="color:#75715e"># NPM container&amp;#39;s LAN IP&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="increasing-vm-disk-size">Increasing VM disk size&lt;/h2>
&lt;p>HAOS ships with a ~6GB disk image. If you&amp;rsquo;re using add-ons that store data (Frigate with video, Music Assistant with a library, or large recorder databases), you&amp;rsquo;ll need more. Frigate is the one that gets away from people — the &lt;a href="https://techfuelhq.com/tools/frigate-nvr-storage-calculator/">Frigate NVR storage calculator&lt;/a> turns camera count, resolution, codec, and retention into an actual figure before you size the disk.&lt;/p>
&lt;p>Resize in Proxmox (VM must be running):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>qm resize &lt;span style="color:#ae81ff">200&lt;/span> scsi0 +32G
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>HAOS&amp;rsquo;s filesystem resizing is automatic — it detects available space at boot and expands its partition to fill the disk. No fdisk, no resize2fs.&lt;/p>
&lt;h2 id="performance-notes">Performance notes&lt;/h2>
&lt;p>HAOS on a Proxmox VM with &lt;code>host&lt;/code> CPU type and VirtIO networking is functionally indistinguishable from bare-metal performance for home automation workloads. HA Core updates complete in under 60 seconds. Z-Wave and Zigbee latency is USB-passthrough latency — no virtualization penalty.&lt;/p>
&lt;p>The one area where a dedicated Pi still has an edge: always-on idle power consumption. HAOS on Proxmox shares the host&amp;rsquo;s idle draw. If your Proxmox host is a mini PC using 20W at idle, HA is part of that 20W — but so are your other VMs and containers. It doesn&amp;rsquo;t add measurable power on its own. A dedicated Pi 5 would use 3–5W idle for HA alone, but then you&amp;rsquo;ve added another device to manage. The &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">Power &amp;amp; Cost Calculator&lt;/a> can model both scenarios.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Running HAOS and other services on Proxmox? The &lt;a href="https://techfuelhq.com/tutorials/proxmox-backup-server-3-2-1-2026/">Proxmox Backup Server guide&lt;/a> covers protecting the whole setup with 3-2-1 backups. For remote access to the HA dashboard without opening ports, &lt;a href="https://techfuelhq.com/tutorials/tailscale-remote-access-homelab-2026/">Tailscale&lt;/a> or &lt;a href="https://techfuelhq.com/tutorials/wireguard-self-hosted-vpn-proxmox-2026/">WireGuard&lt;/a> both work well — Tailscale is faster to set up, WireGuard gives you full control. To trigger automations from outside Home Assistant (n8n workflows calling the HA REST API, for example), the &lt;a href="https://techfuelhq.com/tutorials/n8n-self-hosted-docker-2026/">n8n self-hosted guide&lt;/a> covers connecting to LAN services. For the next step after this guide — pairing Zigbee devices via Zigbee2MQTT and Z-Wave devices via Z-Wave JS UI, and managing mesh health — the &lt;a href="https://techfuelhq.com/tutorials/home-assistant-zigbee-zwave-2026/">Zigbee and Z-Wave integration guide&lt;/a> picks up where this one leaves off. Once your devices are paired and reporting state, the &lt;a href="https://techfuelhq.com/tutorials/home-assistant-automations-guide-2026/">Home Assistant automations guide&lt;/a> covers turning those devices into triggers, conditions, and actions.&lt;/em>&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://www.home-assistant.io/installation/alternative" rel="noopener">Home Assistant: Alternative installation methods&lt;/a> &amp;ndash; official source for the KVM/Proxmox qcow2 disk image.&lt;/li>
&lt;li>&lt;a href="https://github.com/home-assistant/operating-system/releases/latest" rel="noopener">Home Assistant OS GitHub releases&lt;/a> &amp;ndash; official release artifacts and version numbers for the HAOS image.&lt;/li>
&lt;li>&lt;a href="https://pve.proxmox.com/pve-docs/chapter-qm.html" rel="noopener">Proxmox VE QEMU/KVM Virtual Machines&lt;/a> &amp;ndash; official reference for VM creation, q35/OVMF, importdisk, and boot order.&lt;/li>
&lt;li>&lt;a href="https://pve.proxmox.com/wiki/USB_Devices_in_Virtual_Machines" rel="noopener">Proxmox VE USB Devices in Virtual Machines&lt;/a> &amp;ndash; official guide to passing a Zigbee/Z-Wave USB coordinator by vendor/product ID.&lt;/li>
&lt;li>&lt;a href="https://www.home-assistant.io/common-tasks/os/" rel="noopener">Home Assistant OS common tasks&lt;/a> &amp;ndash; official reference for HAOS backups and system maintenance.&lt;/li>
&lt;/ul></description></item><item><title>NAS &amp; RAID Capacity Calculator</title><link>https://techfuelhq.com/tools/nas-storage-calculator/</link><pubDate>Sun, 31 May 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tools/nas-storage-calculator/</guid><description>&lt;h2 id="how-to-use-this-calculator">How to use this calculator&lt;/h2>
&lt;p>This RAID capacity calculator turns your drive count and drive size into usable storage for every level — RAID 0, 1, 5, 6, 10 and ZFS RAIDZ1/2/3. Select your RAID level, enter how many drives you have and their individual capacity, and it instantly shows usable space, redundancy level, and what happens when a drive fails.&lt;/p>
&lt;p>Use the RAID comparison table at the bottom to see all levels side-by-side for your drive count.&lt;/p>
&lt;h2 id="the-raid-capacity-formula">The RAID capacity formula&lt;/h2>
&lt;p>Every RAID level starts from your raw capacity — drive count (N) times drive size — and reserves some of it for redundancy. The usable-space math is exactly what this calculator runs:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>RAID 0 / JBOD&lt;/strong> — N x size. No redundancy, 100% usable.&lt;/li>
&lt;li>&lt;strong>RAID 1 (mirror)&lt;/strong> — size. One drive&amp;rsquo;s worth of usable space; every drive holds a full copy.&lt;/li>
&lt;li>&lt;strong>RAID 5 / RAIDZ1&lt;/strong> — (N - 1) x size. One drive reserved for parity.&lt;/li>
&lt;li>&lt;strong>RAID 6 / RAIDZ2&lt;/strong> — (N - 2) x size. Two drives reserved for parity.&lt;/li>
&lt;li>&lt;strong>RAIDZ3&lt;/strong> — (N - 3) x size. Three drives reserved for parity.&lt;/li>
&lt;li>&lt;strong>RAID 10&lt;/strong> — (N / 2) x size. Half the raw capacity, in mirrored pairs.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Worked example.&lt;/strong> Four 4 TB drives (16 TB raw): RAID 5 gives (4 - 1) x 4 = &lt;strong>12 TB usable&lt;/strong> (25% overhead); RAID 6 gives (4 - 2) x 4 = &lt;strong>8 TB usable&lt;/strong> (50% overhead); RAID 10 also gives 8 TB usable but rebuilds faster after a failure. Six 8 TB drives in RAIDZ2 give (6 - 2) x 8 = &lt;strong>32 TB usable&lt;/strong>.&lt;/p>
&lt;p>Those are decimal TB, the way drives are labeled. Your OS reports binary TiB, so a 12 TB result shows as roughly 10.9 TiB — about 7-10% less — before any filesystem overhead.&lt;/p>
&lt;p>&lt;strong>A ZFS caveat (RAIDZ padding).&lt;/strong> RAIDZ uses the parity formula above, but real usable capacity on ZFS is usually a little lower than the raw math shows. RAIDZ rounds every block up to a multiple of (parity + 1) sectors — the &amp;ldquo;skip blocks&amp;rdquo; that catch people out — and ZFS also reserves about 3.2% slop space it won&amp;rsquo;t let you fill. The padding is negligible with the default 128K recordsize on friendly drive counts, but grows with small recordsize/volblocksize on ashift=12 (4K-sector) pools, where small-block zvols (VM disks) can approach mirror-level overhead. So treat the RAIDZ figures here as the parity ceiling; for exact capacity that models skip blocks, use the &lt;a href="https://jro.io/capacity/" rel="noopener">OpenZFS capacity calculator&lt;/a>.&lt;/p>
&lt;h2 id="choosing-a-raid-level">Choosing a RAID level&lt;/h2>
&lt;p>&lt;strong>Zero tolerance for data loss at any point&lt;/strong> — use RAID 6 or ZFS RAIDZ2. Both survive two simultaneous drive failures and are safe during the rebuild window after the first failure.&lt;/p>
&lt;p>&lt;strong>Best usable space with one-drive redundancy&lt;/strong> — RAID 5 or ZFS RAIDZ1. Same parity formula, though ZFS&amp;rsquo;s real usable capacity runs a little lower once RAIDZ padding is counted (see the ZFS note above); the ZFS version is also safer (no write hole).&lt;/p>
&lt;p>&lt;strong>Simple mirroring for small arrays&lt;/strong> — RAID 1 (2 drives) or RAID 10 (4+ drives in mirrored pairs). Lower capacity efficiency but simpler failure recovery and better random read performance.&lt;/p>
&lt;p>&lt;strong>Maximum space, no redundancy&lt;/strong> — RAID 0 or JBOD. One drive failure loses everything. Only appropriate for scratch storage or content you have elsewhere.&lt;/p>
&lt;h2 id="raid-does-not-replace-backups">RAID does not replace backups&lt;/h2>
&lt;p>RAID protects against drive hardware failure. It does not protect against:&lt;/p>
&lt;ul>
&lt;li>Accidental file deletion (the deletion propagates across all drives instantly)&lt;/li>
&lt;li>Ransomware (encrypts data on all drives simultaneously)&lt;/li>
&lt;li>Controller failure (the RAID controller itself can corrupt data on failure)&lt;/li>
&lt;li>Fire, theft, or physical disaster&lt;/li>
&lt;/ul>
&lt;p>For a complete data protection strategy: RAID for uptime during a drive failure, plus a &lt;a href="https://techfuelhq.com/tutorials/proxmox-backup-server-3-2-1-2026/">3-2-1 backup strategy&lt;/a> with at least one off-site copy. The two layers address different failure modes.&lt;/p></description></item><item><title>VLANs for the Homelab: Network Segmentation Guide (2026)</title><link>https://techfuelhq.com/tutorials/vlans-homelab-2026/</link><pubDate>Sun, 31 May 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tutorials/vlans-homelab-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Updated 2026-07-12 · ~15 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/tutorials/vlans-homelab-2026.svg" alt="Homelab VLAN topology diagram: internet to an OPNsense firewall doing inter-VLAN routing, an 802.1Q tagged trunk to a MikroTik CRS305 managed switch, untagged access ports fanning out to VLAN 10 Homelab/Proxmox (192.168.10.0/24), VLAN 20 IoT (192.168.20.0/24), VLAN 30 Guest (192.168.30.0/24), VLAN 1 Default (192.168.1.0/24), plus a VLAN 99 Management segment." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>A flat network — every device sharing one &lt;code>/24&lt;/code> subnet — is fine right up until it isn&amp;rsquo;t. It stays fine while everything on it is trusted. It stops being fine the day you plug in a smart TV whose firmware stopped getting patches in 2022, or a doorbell camera phoning home to a cloud you&amp;rsquo;ve never audited, or you want a guest to have Wi-Fi without also having a clear path to your NAS. On a flat network, every device can talk to every other device. Segmentation is how you take that away without unplugging anything.&lt;/p>
&lt;p>VLANs are the tool. One managed switch, one router that can route between the segments, and you can carve that single flat network into as many isolated lanes as you want — IoT that can reach the internet but not your Proxmox host, a guest network walled off from everything local, a management VLAN only your admin laptop can touch. This guide walks the whole thing end to end for the most common homelab stack: &lt;strong>OPNsense doing the routing and firewalling, a MikroTik managed switch doing the tagging, and Proxmox carrying VLANs to VMs and containers over a single cable.&lt;/strong> The concepts transfer to UniFi, pfSense, or a $30 Netgear smart switch — only the menus change.&lt;/p>
&lt;p>Before the menus, though, one diagram earns its keep more than any other. Almost every VLAN problem I&amp;rsquo;ve helped someone debug came down to not having a mental model of what physically happens to a frame on the wire — specifically, why some ports are &amp;ldquo;tagged&amp;rdquo; and some are &amp;ldquo;untagged,&amp;rdquo; and why mixing that up quietly breaks everything. So we start there.&lt;/p>
&lt;!-- ========== SIGNATURE VISUAL A: HOW A VLAN TAG LIVES AND DIES ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;border:1px solid rgba(255,255,255,0.07);border-radius:10px;padding:26px 22px 20px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
&lt;div style="margin-bottom:18px;">
&lt;div style="font-size:19px;font-weight:700;color:#e8e8f0;letter-spacing:-0.3px;">How a VLAN tag lives and dies&lt;/div>
&lt;div style="font-size:12.5px;color:#9a9ab5;margin-top:5px;line-height:1.5;">A frame is born untagged, gets stamped at the access port, rides the trunk alongside other VLANs, and is stripped bare again on the way out. Devices never see the tag &amp;mdash; the switch does all the work.&lt;/div>
&lt;/div>
&lt;!-- three-zone flow -->
&lt;div style="display:flex;gap:8px;align-items:stretch;flex-wrap:wrap;">
&lt;!-- zone 1: access in -->
&lt;div style="flex:1;min-width:170px;background:rgba(255,255,255,0.02);border:1px solid rgba(255,255,255,0.07);border-radius:8px;padding:14px;">
&lt;div style="font-size:10.5px;letter-spacing:1.5px;color:#5dca7a;font-weight:700;">ACCESS PORT &amp;middot; IN&lt;/div>
&lt;div style="font-size:12.5px;color:#c8c8d8;margin-top:8px;line-height:1.5;">Your laptop sends an ordinary frame. It has no idea VLANs exist.&lt;/div>
&lt;div style="margin-top:12px;display:inline-block;background:#1a1a3a;border:1px dashed #5a5a7a;border-radius:5px;padding:6px 10px;font-size:11px;color:#9a9ab5;font-family:ui-monospace,monospace;">untagged frame&lt;/div>
&lt;div style="margin-top:10px;font-size:11px;color:#9a9ab5;line-height:1.5;">Switch stamps it with the port's &lt;strong style="color:#e8e8f0;">PVID = 10&lt;/strong> on ingress.&lt;/div>
&lt;/div>
&lt;!-- arrow -->
&lt;div style="display:flex;align-items:center;color:#5090e0;font-size:22px;font-weight:700;">&amp;rarr;&lt;/div>
&lt;!-- zone 2: trunk -->
&lt;div style="flex:1.4;min-width:210px;background:rgba(80,144,224,0.06);border:1px solid rgba(80,144,224,0.3);border-radius:8px;padding:14px;">
&lt;div style="font-size:10.5px;letter-spacing:1.5px;color:#5090e0;font-weight:700;">TRUNK &amp;middot; ONE CABLE, MANY VLANS&lt;/div>
&lt;div style="font-size:12.5px;color:#c8c8d8;margin-top:8px;line-height:1.5;">Every frame here carries a tag. Three VLANs share the wire and never mix.&lt;/div>
&lt;div style="margin-top:12px;display:flex;flex-direction:column;gap:5px;">
&lt;div style="background:#1a2a1a;border-left:3px solid #5dca7a;border-radius:4px;padding:5px 9px;font-size:11px;color:#c8e8c8;font-family:ui-monospace,monospace;">[VID 10] homelab &amp;rarr;&lt;/div>
&lt;div style="background:#2a2416;border-left:3px solid #ffa040;border-radius:4px;padding:5px 9px;font-size:11px;color:#e8d8b8;font-family:ui-monospace,monospace;">[VID 20] iot &amp;rarr;&lt;/div>
&lt;div style="background:#2a1a2a;border-left:3px solid #b070e0;border-radius:4px;padding:5px 9px;font-size:11px;color:#e0c8e8;font-family:ui-monospace,monospace;">[VID 30] guest &amp;rarr;&lt;/div>
&lt;/div>
&lt;/div>
&lt;!-- arrow -->
&lt;div style="display:flex;align-items:center;color:#5090e0;font-size:22px;font-weight:700;">&amp;rarr;&lt;/div>
&lt;!-- zone 3: access out -->
&lt;div style="flex:1;min-width:170px;background:rgba(255,255,255,0.02);border:1px solid rgba(255,255,255,0.07);border-radius:8px;padding:14px;">
&lt;div style="font-size:10.5px;letter-spacing:1.5px;color:#5dca7a;font-weight:700;">ACCESS PORT &amp;middot; OUT&lt;/div>
&lt;div style="font-size:12.5px;color:#c8c8d8;margin-top:8px;line-height:1.5;">The VID-10 frame reaches the Proxmox port. The switch strips the tag.&lt;/div>
&lt;div style="margin-top:12px;display:inline-block;background:#1a1a3a;border:1px dashed #5a5a7a;border-radius:5px;padding:6px 10px;font-size:11px;color:#9a9ab5;font-family:ui-monospace,monospace;">untagged frame&lt;/div>
&lt;div style="margin-top:10px;font-size:11px;color:#9a9ab5;line-height:1.5;">The server receives clean traffic. It never knew it was on VLAN 10.&lt;/div>
&lt;/div>
&lt;/div>
&lt;!-- 802.1Q tag anatomy -->
&lt;div style="margin-top:20px;padding-top:16px;border-top:1px solid rgba(255,255,255,0.06);">
&lt;div style="font-size:12px;color:#9a9ab5;margin-bottom:9px;">The 4 bytes that make it work &amp;mdash; the &lt;strong style="color:#e8e8f0;">802.1Q tag&lt;/strong>, slipped in right after the source MAC address:&lt;/div>
&lt;div style="display:flex;gap:3px;flex-wrap:wrap;font-family:ui-monospace,monospace;">
&lt;div style="flex:3;min-width:110px;background:#151533;border:1px solid #2a2a4a;border-radius:4px 0 0 4px;padding:8px 6px;text-align:center;">&lt;div style="font-size:13px;color:#c8ff00;font-weight:700;">0x8100&lt;/div>&lt;div style="font-size:9.5px;color:#7a7a96;margin-top:2px;">TPID &amp;middot; 16 bits&lt;/div>&lt;/div>
&lt;div style="flex:1;min-width:52px;background:#151533;border:1px solid #2a2a4a;padding:8px 6px;text-align:center;">&lt;div style="font-size:13px;color:#e8e8f0;font-weight:700;">PCP&lt;/div>&lt;div style="font-size:9.5px;color:#7a7a96;margin-top:2px;">3 bits&lt;/div>&lt;/div>
&lt;div style="flex:1;min-width:44px;background:#151533;border:1px solid #2a2a4a;padding:8px 6px;text-align:center;">&lt;div style="font-size:13px;color:#e8e8f0;font-weight:700;">DEI&lt;/div>&lt;div style="font-size:9.5px;color:#7a7a96;margin-top:2px;">1 bit&lt;/div>&lt;/div>
&lt;div style="flex:3;min-width:110px;background:#1a2a1a;border:1px solid #3a5a3a;border-radius:0 4px 4px 0;padding:8px 6px;text-align:center;">&lt;div style="font-size:13px;color:#5dca7a;font-weight:700;">VID = 10&lt;/div>&lt;div style="font-size:9.5px;color:#7a9a7a;margin-top:2px;">12 bits &amp;middot; the VLAN number&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="margin-top:9px;font-size:11px;color:#6a6a86;line-height:1.5;">The VID is only 12 bits, so valid VLAN IDs run &lt;strong style="color:#9a9ab5;">1&amp;ndash;4094&lt;/strong> (0 and 4095 are reserved). Everything a homelab needs fits in that range many times over.&lt;/div>
&lt;/div>
&lt;div style="margin-top:16px;padding-top:12px;border-top:1px solid rgba(255,255,255,0.06);font-size:10.5px;color:#55556e;display:flex;justify-content:space-between;">
&lt;span>Get tagged-vs-untagged right and 90% of VLAN pain never happens.&lt;/span>
&lt;span>techfuelhq.com&lt;/span>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>Read that diagram twice if you need to. The single most common VLAN mistake is treating a device port as &amp;ldquo;tagged&amp;rdquo; — it isn&amp;rsquo;t. &lt;strong>End devices connect to untagged (access) ports; only links between network gear are tagged (trunk) ports.&lt;/strong> A Proxmox host is the exception that proves the rule: because it hosts guests on many VLANs, its uplink is a trunk, and Proxmox itself handles the per-guest tagging internally.&lt;/p>
&lt;h2 id="why-segment-your-network">Why segment your network&lt;/h2>
&lt;p>&lt;strong>IoT isolation is the reason most people start.&lt;/strong> Smart TVs, cameras, speakers, robot vacuums — cheap devices with firmware that stops getting security updates the moment the next model ships. Put them on their own VLAN with a firewall rule that blocks them from reaching your trusted network, and a compromised camera can still phone home to its cloud, but it can&amp;rsquo;t pivot to your NAS or scan your Proxmox management interface. If you&amp;rsquo;re properly paranoid, you also block IoT devices from reaching &lt;em>each other&lt;/em>, so one bad device can&amp;rsquo;t recruit the others.&lt;/p>
&lt;p>&lt;strong>A guest network that&amp;rsquo;s actually isolated.&lt;/strong> Visitors get internet, full stop — no visibility into your file shares, your Home Assistant, or your admin panels. A guest VLAN with a block-all-local rule does this cleanly, and you never have to hand out (or later change) your real Wi-Fi password.&lt;/p>
&lt;p>&lt;strong>A management VLAN for the things that run everything.&lt;/strong> Proxmox web UIs, switch management IPs, IPMI/iKVM, UPS network cards — the interfaces that, if reached by the wrong device, hand an attacker the keys. Lock them to a VLAN only your admin machine can enter.&lt;/p>
&lt;p>&lt;strong>Separation of services.&lt;/strong> Production VMs and lab/dev VMs on different VLANs, with outbound rules per segment: production can only reach the specific destinations it needs; the dev VLAN can go anywhere but can&amp;rsquo;t touch production. This is where a homelab starts behaving like a real network, and it&amp;rsquo;s genuinely good practice to learn on hardware you own.&lt;/p>
&lt;h2 id="plan-the-vlans-before-you-touch-a-menu">Plan the VLANs before you touch a menu&lt;/h2>
&lt;p>Ten minutes on paper saves an hour of &amp;ldquo;why can&amp;rsquo;t this ping that.&amp;rdquo; Decide your VLAN IDs, subnets, and the one-line purpose of each before you log into anything:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">VLAN ID&lt;/th>
&lt;th scope="col">Name&lt;/th>
&lt;th scope="col">Subnet&lt;/th>
&lt;th scope="col">Purpose&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>1&lt;/td>
&lt;td>Default&lt;/td>
&lt;td>192.168.1.0/24&lt;/td>
&lt;td>Native/untagged VLAN — leave it mostly empty&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>10&lt;/td>
&lt;td>Homelab&lt;/td>
&lt;td>192.168.10.0/24&lt;/td>
&lt;td>Proxmox nodes, NAS, homelab infrastructure&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>20&lt;/td>
&lt;td>IoT&lt;/td>
&lt;td>192.168.20.0/24&lt;/td>
&lt;td>Smart devices, cameras, Zigbee/Z-Wave gateways&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>30&lt;/td>
&lt;td>Guest&lt;/td>
&lt;td>192.168.30.0/24&lt;/td>
&lt;td>Visitor devices, fully isolated&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>99&lt;/td>
&lt;td>Management&lt;/td>
&lt;td>192.168.99.0/24&lt;/td>
&lt;td>Switch mgmt IPs, OPNsense admin, IPMI&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The IDs are arbitrary but conventions help future-you: 10/20/30/40 for user VLANs, 99 for management, and VLAN 1 left alone. &lt;strong>Don&amp;rsquo;t put anything important on VLAN 1.&lt;/strong> It&amp;rsquo;s the default native VLAN, it carries untagged traffic that lands on it by accident, and every switch treats it specially — using it for real devices is how &amp;ldquo;untagged frames leaked between segments&amp;rdquo; bugs happen.&lt;/p>
&lt;p>Each VLAN above gets a full &lt;code>/24&lt;/code>, which is 254 usable hosts — far more than a home segment will ever need, and the simplicity is worth the wasted address space. If you&amp;rsquo;d rather carve a block into tidier segments or check the usable host range for a given prefix, the &lt;a href="https://techfuelhq.com/tools/subnet-cidr-calculator/">subnet &amp;amp; CIDR calculator&lt;/a> works out the network, broadcast, and host ranges for any CIDR.&lt;/p>
&lt;p>With the plan on paper, the next question is the one that trips people up: once every VLAN is isolated, &lt;em>what is actually allowed to talk to what?&lt;/em> Draw that as a grid and the entire firewall policy becomes obvious.&lt;/p>
&lt;!-- ========== SIGNATURE VISUAL B: THE ISOLATION MATRIX ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;border:1px solid rgba(255,255,255,0.07);border-radius:10px;padding:26px 22px 20px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
&lt;div style="margin-bottom:16px;">
&lt;div style="font-size:19px;font-weight:700;color:#e8e8f0;letter-spacing:-0.3px;">The isolation matrix&lt;/div>
&lt;div style="font-size:12.5px;color:#9a9ab5;margin-top:5px;line-height:1.5;">Read a row as &amp;ldquo;traffic starting &lt;em>from&lt;/em> this VLAN, going &lt;em>to&lt;/em>&amp;hellip;&amp;rdquo;. This grid &lt;em>is&lt;/em> the firewall policy &amp;mdash; every green cell is a pass rule, every red cell a block rule. Build this before you write a single rule.&lt;/div>
&lt;/div>
&lt;div style="overflow-x:auto;">
&lt;table style="border-collapse:collapse;width:100%;min-width:520px;font-size:12.5px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
&lt;thead>
&lt;tr>
&lt;th style="text-align:left;padding:8px 10px;color:#6b6b8a;font-size:10.5px;letter-spacing:1px;font-weight:700;border-bottom:1px solid #2a2a4a;">FROM &amp;darr; / TO &amp;rarr;&lt;/th>
&lt;th style="padding:8px 6px;color:#c8c8d8;border-bottom:1px solid #2a2a4a;">Trusted&lt;/th>
&lt;th style="padding:8px 6px;color:#c8c8d8;border-bottom:1px solid #2a2a4a;">Homelab&lt;/th>
&lt;th style="padding:8px 6px;color:#c8c8d8;border-bottom:1px solid #2a2a4a;">IoT&lt;/th>
&lt;th style="padding:8px 6px;color:#c8c8d8;border-bottom:1px solid #2a2a4a;">Guest&lt;/th>
&lt;th style="padding:8px 6px;color:#c8c8d8;border-bottom:1px solid #2a2a4a;">Mgmt&lt;/th>
&lt;th style="padding:8px 6px;color:#c8c8d8;border-bottom:1px solid #2a2a4a;">Internet&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="padding:7px 10px;color:#e8e8f0;font-weight:600;border-bottom:1px solid #16162e;">Trusted&lt;/td>
&lt;td style="text-align:center;background:#16301a;color:#7ee89a;border-bottom:1px solid #16162e;">self&lt;/td>
&lt;td style="text-align:center;background:#16301a;color:#7ee89a;border-bottom:1px solid #16162e;">allow&lt;/td>
&lt;td style="text-align:center;background:#16301a;color:#7ee89a;border-bottom:1px solid #16162e;">allow&lt;/td>
&lt;td style="text-align:center;background:#301616;color:#e88a8a;border-bottom:1px solid #16162e;">block&lt;/td>
&lt;td style="text-align:center;background:#301616;color:#e88a8a;border-bottom:1px solid #16162e;">block&lt;/td>
&lt;td style="text-align:center;background:#14243a;color:#8ab8e8;border-bottom:1px solid #16162e;">allow&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="padding:7px 10px;color:#e8e8f0;font-weight:600;border-bottom:1px solid #16162e;">Homelab&lt;/td>
&lt;td style="text-align:center;background:#16301a;color:#7ee89a;border-bottom:1px solid #16162e;">allow&lt;/td>
&lt;td style="text-align:center;background:#16301a;color:#7ee89a;border-bottom:1px solid #16162e;">self&lt;/td>
&lt;td style="text-align:center;background:#16301a;color:#7ee89a;border-bottom:1px solid #16162e;">allow&lt;/td>
&lt;td style="text-align:center;background:#301616;color:#e88a8a;border-bottom:1px solid #16162e;">block&lt;/td>
&lt;td style="text-align:center;background:#301616;color:#e88a8a;border-bottom:1px solid #16162e;">block&lt;/td>
&lt;td style="text-align:center;background:#14243a;color:#8ab8e8;border-bottom:1px solid #16162e;">allow&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="padding:7px 10px;color:#e8e8f0;font-weight:600;border-bottom:1px solid #16162e;">IoT&lt;/td>
&lt;td style="text-align:center;background:#301616;color:#e88a8a;border-bottom:1px solid #16162e;">block&lt;/td>
&lt;td style="text-align:center;background:#301616;color:#e88a8a;border-bottom:1px solid #16162e;">block&lt;/td>
&lt;td style="text-align:center;background:#2a2416;color:#e8c87a;border-bottom:1px solid #16162e;">self*&lt;/td>
&lt;td style="text-align:center;background:#301616;color:#e88a8a;border-bottom:1px solid #16162e;">block&lt;/td>
&lt;td style="text-align:center;background:#301616;color:#e88a8a;border-bottom:1px solid #16162e;">block&lt;/td>
&lt;td style="text-align:center;background:#14243a;color:#8ab8e8;border-bottom:1px solid #16162e;">allow&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="padding:7px 10px;color:#e8e8f0;font-weight:600;border-bottom:1px solid #16162e;">Guest&lt;/td>
&lt;td style="text-align:center;background:#301616;color:#e88a8a;border-bottom:1px solid #16162e;">block&lt;/td>
&lt;td style="text-align:center;background:#301616;color:#e88a8a;border-bottom:1px solid #16162e;">block&lt;/td>
&lt;td style="text-align:center;background:#301616;color:#e88a8a;border-bottom:1px solid #16162e;">block&lt;/td>
&lt;td style="text-align:center;background:#301616;color:#e88a8a;border-bottom:1px solid #16162e;">block&lt;/td>
&lt;td style="text-align:center;background:#301616;color:#e88a8a;border-bottom:1px solid #16162e;">block&lt;/td>
&lt;td style="text-align:center;background:#14243a;color:#8ab8e8;border-bottom:1px solid #16162e;">allow&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="padding:7px 10px;color:#e8e8f0;font-weight:600;">Mgmt&lt;/td>
&lt;td style="text-align:center;background:#16301a;color:#7ee89a;">allow&lt;/td>
&lt;td style="text-align:center;background:#16301a;color:#7ee89a;">allow&lt;/td>
&lt;td style="text-align:center;background:#16301a;color:#7ee89a;">allow&lt;/td>
&lt;td style="text-align:center;background:#16301a;color:#7ee89a;">allow&lt;/td>
&lt;td style="text-align:center;background:#16301a;color:#7ee89a;">self&lt;/td>
&lt;td style="text-align:center;background:#14243a;color:#8ab8e8;">allow&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;div style="margin-top:14px;display:flex;gap:16px;flex-wrap:wrap;font-size:11px;color:#9a9ab5;">
&lt;span>&lt;span style="display:inline-block;width:10px;height:10px;background:#16301a;border:1px solid #2a5a2a;border-radius:2px;vertical-align:middle;">&lt;/span> pass rule&lt;/span>
&lt;span>&lt;span style="display:inline-block;width:10px;height:10px;background:#301616;border:1px solid #5a2a2a;border-radius:2px;vertical-align:middle;">&lt;/span> block rule&lt;/span>
&lt;span>&lt;span style="display:inline-block;width:10px;height:10px;background:#14243a;border:1px solid #2a4a6a;border-radius:2px;vertical-align:middle;">&lt;/span> internet only&lt;/span>
&lt;/div>
&lt;div style="margin-top:11px;font-size:11px;color:#6a6a86;line-height:1.55;">*IoT-to-IoT is a judgment call: block it too if you want one compromised device unable to reach the others. Note the deliberate one-way arrows &amp;mdash; Trusted reaches Homelab, but Homelab-to-Trusted stays open here because you trust your own infrastructure; tighten that if you don't.&lt;/div>
&lt;div style="margin-top:14px;padding-top:12px;border-top:1px solid rgba(255,255,255,0.06);font-size:10.5px;color:#55556e;display:flex;justify-content:space-between;">
&lt;span>Default-deny between VLANs; open exactly the cells you need.&lt;/span>
&lt;span>techfuelhq.com&lt;/span>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>The rest of this guide is just teaching your three boxes to enforce that grid. OPNsense routes and filters (the colored cells above). The MikroTik switch tags and untags (the frame lifecycle up top). Proxmox carries the whole set of VLANs to your VMs over one cable.&lt;/p>
&lt;h2 id="opnsense-routing-and-the-firewall-rules">OPNsense: routing and the firewall rules&lt;/h2>
&lt;p>OPNsense is where the isolation matrix becomes real. It terminates every VLAN, hands out DHCP on each, and enforces the pass/block rules.&lt;/p>
&lt;h3 id="create-the-vlan-interfaces">Create the VLAN interfaces&lt;/h3>
&lt;p>Open &lt;code>Interfaces → Other Types → VLAN&lt;/code>. For each VLAN:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Parent interface:&lt;/strong> your LAN NIC (e.g., &lt;code>igc1&lt;/code>)&lt;/li>
&lt;li>&lt;strong>VLAN Tag:&lt;/strong> the VLAN ID (e.g., &lt;code>10&lt;/code>)&lt;/li>
&lt;li>&lt;strong>Description:&lt;/strong> Homelab, IoT, Guest, etc.&lt;/li>
&lt;/ul>
&lt;p>Then assign them under &lt;code>Interfaces → Assignments&lt;/code>: add each subinterface (&lt;code>igc1.10&lt;/code>, &lt;code>igc1.20&lt;/code>, &lt;code>igc1.30&lt;/code>, &lt;code>igc1.99&lt;/code>) as a new interface and rename to something legible — &lt;code>HOMELAB&lt;/code>, &lt;code>IOT&lt;/code>, &lt;code>GUEST&lt;/code>, &lt;code>MGMT&lt;/code>. This assignment step is easy to forget, and until you do it the interface has no IP and routes nothing.&lt;/p>
&lt;h3 id="give-each-vlan-an-ip-and-dhcp">Give each VLAN an IP and DHCP&lt;/h3>
&lt;p>For each assigned interface (e.g., &lt;code>Interfaces → HOMELAB&lt;/code>): &lt;strong>Enable&lt;/strong>, IPv4 Config Type &lt;strong>Static&lt;/strong>, address &lt;code>192.168.10.1/24&lt;/code>. That &lt;code>.1&lt;/code> is the VLAN&amp;rsquo;s gateway. Repeat per VLAN.&lt;/p>
&lt;p>Then &lt;code>Services → DHCPv4 → [HOMELAB]&lt;/code>: enable it and set a range like &lt;code>192.168.10.100&lt;/code>–&lt;code>192.168.10.199&lt;/code>. Do the same for IoT (&lt;code>.20.100–200&lt;/code>) and Guest (&lt;code>.30.100–200&lt;/code>). The Management VLAN can stay static-only if you prefer to hand-assign admin addresses.&lt;/p>
&lt;h3 id="write-the-firewall-rules">Write the firewall rules&lt;/h3>
&lt;p>&lt;code>Firewall → Rules&lt;/code>, per interface tab. OPNsense evaluates rules &lt;strong>top to bottom, first match wins&lt;/strong> — order is not cosmetic, it&amp;rsquo;s the whole logic. Translating the matrix:&lt;/p>
&lt;pre tabindex="0">&lt;code># IoT tab
Block IoT net -&amp;gt; RFC1918 (all private ranges) # can&amp;#39;t reach any other LAN
Pass IoT net -&amp;gt; any # internet is fine
&lt;/code>&lt;/pre>&lt;pre tabindex="0">&lt;code># Guest tab
Block Guest net -&amp;gt; 192.168.0.0/16 + 10.0.0.0/8 # no local anything
Pass Guest net -&amp;gt; any # internet only
&lt;/code>&lt;/pre>&lt;pre tabindex="0">&lt;code># Homelab tab
Pass Homelab net -&amp;gt; any # trusted infrastructure
&lt;/code>&lt;/pre>&lt;pre tabindex="0">&lt;code># Management tab (strict)
Block any non-MGMT source -&amp;gt; MGMT net # nothing else reaches mgmt
Pass MGMT net -&amp;gt; any # admins reach everything
&lt;/code>&lt;/pre>&lt;p>The block-before-pass ordering on IoT and Guest is the part people get wrong. Put a &lt;code>pass any&lt;/code> above the block and the block never runs — the first match already let the traffic through. If a VLAN can reach things it shouldn&amp;rsquo;t, this ordering is the first place to look.&lt;/p>
&lt;h2 id="mikrotik-bridge-vlan-filtering-do-this-the-modern-way">MikroTik: bridge VLAN filtering (do this the modern way)&lt;/h2>
&lt;p>Here is where a lot of older guides — and the previous version of this one — will steer you wrong, so read this section carefully. On a CRS3xx-class MikroTik switch, VLANs are &lt;strong>not&lt;/strong> configured by creating &lt;code>/interface vlan&lt;/code> objects on a physical port. That approach is exactly the misconfiguration MikroTik&amp;rsquo;s own documentation warns against; it produces switches that &amp;ldquo;work&amp;rdquo; until they mysteriously don&amp;rsquo;t, because traffic is being software-switched through the CPU instead of hardware-offloaded in the switch chip. The correct modern method is &lt;strong>bridge VLAN filtering&lt;/strong>: one bridge, a VLAN table that says which ports are tagged and untagged for each VLAN, and a single switch to turn filtering on.&lt;/p>
&lt;p>&lt;strong>One hard warning first:&lt;/strong> enabling &lt;code>vlan-filtering=yes&lt;/code> is the last step, and doing it wrong locks you out of the switch. Configure everything else, make sure your own access port and management VLAN are in the table, and ideally have serial/console access before you flip that switch. If you enable filtering over the very connection you&amp;rsquo;re configuring and the management VLAN isn&amp;rsquo;t set up correctly, the session dies mid-command.&lt;/p>
&lt;p>&lt;strong>Build the bridge with filtering off, add the ports:&lt;/strong>&lt;/p>
&lt;pre tabindex="0">&lt;code>/interface bridge
add name=bridge1 vlan-filtering=no
# ether1 = trunk uplink to OPNsense (no pvid; it carries tags)
/interface bridge port
add bridge=bridge1 interface=ether1
# ether2 = access port for a Proxmox node on VLAN 10
add bridge=bridge1 interface=ether2 pvid=10 ingress-filtering=yes frame-types=admit-only-untagged-and-priority-tagged
# ether3 = access port for an IoT hub on VLAN 20
add bridge=bridge1 interface=ether3 pvid=20 ingress-filtering=yes frame-types=admit-only-untagged-and-priority-tagged
&lt;/code>&lt;/pre>&lt;p>The &lt;code>pvid&lt;/code> on an access port is what stamps incoming untagged frames onto the right VLAN — it&amp;rsquo;s the &amp;ldquo;IN&amp;rdquo; step from the frame-lifecycle diagram. &lt;code>frame-types=admit-only-untagged-and-priority-tagged&lt;/code> tells that port to reject already-tagged frames, so a device can&amp;rsquo;t lie about its VLAN.&lt;/p>
&lt;p>&lt;strong>Fill in the VLAN table — which ports are tagged vs untagged per VLAN:&lt;/strong>&lt;/p>
&lt;pre tabindex="0">&lt;code>/interface bridge vlan
# ether1 (trunk) is tagged for every VLAN; bridge1 is tagged so the CPU can reach mgmt
add bridge=bridge1 tagged=bridge1,ether1 untagged=ether2 vlan-ids=10
add bridge=bridge1 tagged=bridge1,ether1 untagged=ether3 vlan-ids=20
add bridge=bridge1 tagged=bridge1,ether1 vlan-ids=30
add bridge=bridge1 tagged=bridge1,ether1 vlan-ids=99
&lt;/code>&lt;/pre>&lt;p>&lt;strong>Put the switch&amp;rsquo;s own management IP on VLAN 99, then enable filtering last:&lt;/strong>&lt;/p>
&lt;pre tabindex="0">&lt;code>/interface vlan
add interface=bridge1 name=vlan99 vlan-id=99
# this /interface vlan is correct - it is on the BRIDGE, giving the switch itself an L3 presence on VLAN 99
/ip address
add address=192.168.99.2/24 interface=vlan99
/ip route
add dst-address=0.0.0.0/0 gateway=192.168.99.1
# everything is staged - now turn filtering on (do this from console if you can)
/interface bridge
set bridge1 vlan-filtering=yes
&lt;/code>&lt;/pre>&lt;p>Note the distinction that trips everyone up: &lt;code>/interface vlan&lt;/code> is wrong on a &lt;em>physical ether port&lt;/em> (that&amp;rsquo;s the software-switching trap) but &lt;strong>right on the bridge itself&lt;/strong>, where it gives the switch a routable management address on VLAN 99. Same command, completely different meaning depending on where you point it.&lt;/p>
&lt;h2 id="proxmox-one-vlan-aware-bridge-every-vlan">Proxmox: one VLAN-aware bridge, every VLAN&lt;/h2>
&lt;p>Proxmox is the elegant part. You do not create a bridge per VLAN. You make one bridge VLAN-aware and tag each guest individually.&lt;/p>
&lt;p>&lt;code>Datacenter → pve01 → System → Network&lt;/code>:&lt;/p>
&lt;ul>
&lt;li>Select your bridge (&lt;code>vmbr0&lt;/code>)&lt;/li>
&lt;li>Tick &lt;strong>VLAN aware&lt;/strong>&lt;/li>
&lt;li>Save, then Apply Configuration&lt;/li>
&lt;/ul>
&lt;p>The bridge&amp;rsquo;s physical NIC (e.g., &lt;code>eno1&lt;/code>) plugs into a &lt;strong>trunk port&lt;/strong> on the switch — the same kind of tagged port as the OPNsense uplink, carrying every VLAN. Then, when creating or editing any VM/LXC, in the network tab:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Bridge:&lt;/strong> &lt;code>vmbr0&lt;/code>&lt;/li>
&lt;li>&lt;strong>VLAN Tag:&lt;/strong> &lt;code>10&lt;/code> (for the Homelab VLAN)&lt;/li>
&lt;/ul>
&lt;p>The guest gets an untagged interface that Proxmox silently places on VLAN 10. The VM has no idea — it&amp;rsquo;s the frame-lifecycle &amp;ldquo;OUT&amp;rdquo; step happening inside the host. Want a guest reachable from two VLANs (Home Assistant is the classic case — user access on the trusted VLAN, device discovery on IoT)? Add a second network device with a different VLAN Tag. One caveat worth burning into memory: &lt;strong>don&amp;rsquo;t put the Proxmox management interface itself on a VLAN unless you&amp;rsquo;re sure the config is right and you have console/iKVM access.&lt;/strong> A VLAN typo on the management interface locks you out of the very web UI you&amp;rsquo;d use to fix it.&lt;/p>
&lt;h2 id="the-thing-that-quietly-breaks-mdns-and-multicast">The thing that quietly breaks: mDNS and multicast&lt;/h2>
&lt;p>You will finish all of the above, test it, watch IoT get blocked from your LAN, feel great — and then discover you can no longer cast to the living-room TV, AirPlay to a HomePod, or print from your laptop. Nothing is broken. This is VLANs working &lt;em>exactly&lt;/em> as designed, and it&amp;rsquo;s the single most common &amp;ldquo;why did I even do this&amp;rdquo; moment.&lt;/p>
&lt;p>Service discovery — Chromecast, AirPlay, HomeKit, Spotify Connect, AirPrint, most network printers — relies on &lt;strong>mDNS (multicast DNS) on UDP port 5353&lt;/strong>. Multicast is local-segment-only by design; it does not cross VLAN boundaries. So your phone on the trusted VLAN literally cannot &lt;em>see&lt;/em> the Chromecast sitting on the IoT VLAN, even if a firewall rule would allow the connection, because the discovery packets never make the trip.&lt;/p>
&lt;p>The fix is an &lt;strong>mDNS reflector&lt;/strong> (also called a repeater): a service that listens for those multicast announcements on one VLAN and rebroadcasts them onto the others, so devices on different segments can discover each other. On OPNsense:&lt;/p>
&lt;ol>
&lt;li>&lt;code>System → Firmware → Plugins&lt;/code> — install &lt;strong>&lt;code>os-mdns-repeater&lt;/code>&lt;/strong>, then reload the page.&lt;/li>
&lt;li>&lt;code>Services → mDNS Repeater&lt;/code> — enable it and select the VLANs that need to see each other (typically Trusted and IoT).&lt;/li>
&lt;li>&lt;code>Firewall → Rules&lt;/code> — &lt;strong>add a rule allowing UDP 5353&lt;/strong> from each participating VLAN. The plugin only relays the announcements; without the firewall pass rule, the actual connection that follows discovery is still blocked. This is the step people miss.&lt;/li>
&lt;/ol>
&lt;p>A reflector is a passive relay, not a bidirectional proxy, so occasionally a chatty device needs mDNS allowed in both directions — but for casting, AirPlay, HomeKit, and printers, enabling the repeater on the two relevant VLANs plus the UDP 5353 rule is the whole fix. Decide up front which VLANs actually need cross-discovery; you don&amp;rsquo;t want to reflect your Guest network&amp;rsquo;s multicast into your trusted LAN.&lt;/p>
&lt;h2 id="test-that-isolation-is-real">Test that isolation is real&lt;/h2>
&lt;p>Configuration that isn&amp;rsquo;t verified is a guess. Prove each cell of the matrix:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># From an IoT device (or a VM tagged onto VLAN 20)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ping 1.1.1.1 &lt;span style="color:#75715e"># PASS - internet allowed&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ping 192.168.1.1 &lt;span style="color:#75715e"># FAIL - blocked from trusted LAN&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ping 192.168.10.10 &lt;span style="color:#75715e"># FAIL - blocked from homelab&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># From a laptop on the trusted VLAN&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ping 192.168.10.10 &lt;span style="color:#75715e"># PASS - trusted can reach a Proxmox node&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># From the IoT VLAN again&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ping 192.168.10.10 &lt;span style="color:#75715e"># FAIL - IoT stays walled off&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>If an inter-VLAN test fails when it should pass (or passes when it should fail), work down this list in order:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>OPNsense rule order&lt;/strong> — block before pass, first match wins. This is the cause about 70% of the time.&lt;/li>
&lt;li>&lt;strong>DHCP scope&lt;/strong> — is the device actually getting an address in the right VLAN&amp;rsquo;s range? Wrong subnet means wrong VLAN, upstream of any rule.&lt;/li>
&lt;li>&lt;strong>Switch VLAN table&lt;/strong> — does the untagged port assignment match the VLAN ID? And did you remember &lt;code>vlan-filtering=yes&lt;/code>?&lt;/li>
&lt;/ol>
&lt;h2 id="the-mistakes-that-cost-the-most-time">The mistakes that cost the most time&lt;/h2>
&lt;p>&lt;strong>&lt;code>vlan-filtering=yes&lt;/code> never got set.&lt;/strong> You built the entire bridge VLAN table, everything looks configured, and no segmentation is enforced — because filtering is still off and the table is inert. This is a silent failure: nothing errors, it just doesn&amp;rsquo;t work. It&amp;rsquo;s the first thing to check on a MikroTik that &amp;ldquo;isn&amp;rsquo;t segmenting.&amp;rdquo;&lt;/p>
&lt;p>&lt;strong>A pass-any rule sitting above the block rule.&lt;/strong> OPNsense reads top to bottom and stops at the first match. If IoT can still reach your LAN, a broad pass rule is almost certainly shadowing your block. Reorder it.&lt;/p>
&lt;p>&lt;strong>Forgetting to assign the VLAN interface in OPNsense.&lt;/strong> Creating the subinterface under &lt;code>Interfaces → Other Types → VLAN&lt;/code> is only half the job — it does nothing until you also add it under &lt;code>Interfaces → Assignments&lt;/code> and give it an IP.&lt;/p>
&lt;p>&lt;strong>The trunk isn&amp;rsquo;t tagged for a VLAN that needs it.&lt;/strong> If VLAN 20 traffic never reaches OPNsense, the trunk port (and the bridge) probably isn&amp;rsquo;t in VLAN 20&amp;rsquo;s tagged list. Every VLAN that has to reach the router must be tagged on the uplink.&lt;/p>
&lt;p>&lt;strong>Management on a VLAN with no escape hatch.&lt;/strong> Putting a switch or Proxmox host&amp;rsquo;s management interface on a VLAN is good practice — right up until a VLAN typo locks you out of the only interface you could fix it from. Always keep a console path: serial for the switch, iKVM or a directly attached keyboard/monitor for Proxmox.&lt;/p>
&lt;p>&lt;strong>Blaming VLANs when it&amp;rsquo;s really mDNS.&lt;/strong> If casting or printing stops after segmentation, you didn&amp;rsquo;t break routing — you did it correctly, and now discovery needs an mDNS reflector (above). Chasing firewall rules for this is a time sink.&lt;/p>
&lt;hr>
&lt;p>&lt;em>VLANs need a capable router to enforce inter-VLAN firewall rules — the segmentation lives at the switch, but the policy lives at the firewall. The &lt;a href="https://techfuelhq.com/tutorials/opnsense-mini-pc-setup-2026/">OPNsense setup guide&lt;/a> covers building that firewall from scratch, and the &lt;a href="https://techfuelhq.com/networking/homelab-firewall-router-stack-2026/">homelab firewall &amp;amp; router comparison&lt;/a> helps pick between OPNsense, pfSense, and MikroTik for the routing role. For the physical layer — managed switches and cabling — the &lt;a href="https://techfuelhq.com/networking/10gbe-home-networking-budget-2026/">10GbE home networking guide&lt;/a> covers hardware selection.&lt;/em>&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://en.wikipedia.org/wiki/IEEE_802.1Q" rel="noopener">IEEE 802.1Q (VLAN tagging standard)&lt;/a> &amp;ndash; the tag structure used in the frame-lifecycle diagram: a 4-byte tag (TPID 0x8100, PCP, DEI, and a 12-bit VID with valid range 1-4094), extending the maximum frame from 1518 to 1522 bytes.&lt;/li>
&lt;li>&lt;a href="https://help.mikrotik.com/docs/spaces/ROS/pages/28606465/Bridge&amp;#43;VLAN&amp;#43;Table" rel="noopener">MikroTik RouterOS: Bridge VLAN Table&lt;/a> &amp;ndash; official RouterOS reference for bridge VLAN filtering, tagged trunk and untagged access port assignments, &lt;code>pvid&lt;/code>, &lt;code>frame-types&lt;/code>, and the &lt;code>vlan-filtering&lt;/code> switch. The source for the &amp;ldquo;do it the modern way&amp;rdquo; rewrite.&lt;/li>
&lt;li>&lt;a href="https://docs.opnsense.org/manual/how-tos/vlan_and_lagg.html" rel="noopener">OPNsense manual: VLAN and LAGG Setup&lt;/a> &amp;ndash; official OPNsense steps for creating tagged VLAN interfaces, assigning them, and configuring inter-VLAN routing.&lt;/li>
&lt;li>&lt;a href="https://docs.opnsense.org/manual/how-tos/multicast-dns.html" rel="noopener">OPNsense manual: Multicast DNS Proxy&lt;/a> &amp;ndash; official documentation for the &lt;code>os-mdns-repeater&lt;/code> plugin used to make Chromecast, AirPlay, HomeKit, and printers discoverable across VLANs, including the UDP 5353 firewall requirement.&lt;/li>
&lt;li>&lt;a href="https://pve.proxmox.com/wiki/Network_Configuration" rel="noopener">Proxmox VE wiki: Network Configuration&lt;/a> &amp;ndash; official Proxmox documentation for VLAN-aware Linux bridges and per-guest VLAN tags.&lt;/li>
&lt;/ul></description></item><item><title>GPU Passthrough to a Proxmox VM (2026 Setup Guide)</title><link>https://techfuelhq.com/tutorials/gpu-passthrough-proxmox-vm-2026/</link><pubDate>Sat, 30 May 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tutorials/gpu-passthrough-proxmox-vm-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-05-30 · ~16 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/tutorials/gpu-passthrough-proxmox-vm-2026.svg" alt="VFIO GPU passthrough topology for Proxmox VE 8.x: BIOS VT-d/AMD-Vi and iommu=pt kernel flags enable IOMMU Group 20, where the GPU (0a:00.0, 10de:2c02) and its HDMI audio (0a:00.1, 10de:1aef) have host drivers blacklisted and are bound to vfio-pci, then passed to a q35 OVMF guest VM running the native NVIDIA driver within 1-3% of bare-metal" width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>GPU passthrough gives a Proxmox VM exclusive access to a physical GPU with near-bare-metal performance. The VM gets the full GPU — not a virtual representation, not a shared slice — and runs its own GPU driver. This makes Proxmox viable for gaming VMs, professional GPU workloads, and AI inference VMs where you need the GPU&amp;rsquo;s full performance and driver stack.&lt;/p>
&lt;p>The setup is not trivial. VFIO (Virtual Function I/O) passthrough involves kernel parameters, driver blacklisting, IOMMU group verification, and BIOS settings that vary by platform. This guide covers the full process step by step with the commands you actually run.&lt;/p>
&lt;h2 id="what-you-need">What you need&lt;/h2>
&lt;ul>
&lt;li>Proxmox VE 8.x&lt;/li>
&lt;li>CPU and motherboard with IOMMU support (Intel VT-d or AMD-Vi)&lt;/li>
&lt;li>GPU for passthrough (discrete — passthrough does not work with iGPUs as the primary passthrough target)&lt;/li>
&lt;li>A second GPU or iGPU for the Proxmox host display (so you can see the host while the GPU is passed through to a VM)&lt;/li>
&lt;li>Target VM already created (or create it after this setup)&lt;/li>
&lt;/ul>
&lt;p>Most modern CPUs and motherboards support IOMMU. The tricky part is IOMMU group isolation — explained below.&lt;/p>
&lt;h2 id="step-1-enable-iommu-in-bios">Step 1: Enable IOMMU in BIOS&lt;/h2>
&lt;p>Reboot into your BIOS/UEFI.&lt;/p>
&lt;p>&lt;strong>Intel:&lt;/strong> Enable &lt;strong>VT-d&lt;/strong> (usually under Advanced CPU Configuration or an Intel Virtualization Technology menu). Also look for &amp;ldquo;Intel VT for Directed I/O.&amp;rdquo;&lt;/p>
&lt;p>&lt;strong>AMD:&lt;/strong> Enable &lt;strong>AMD-Vi&lt;/strong> or &lt;strong>IOMMU&lt;/strong> (sometimes labeled &amp;ldquo;AMD SVM&amp;rdquo; or under the AMD CBS menu). The Ryzen 7 7800X3D and B650 platform have this under AMD CBS → NBIO → NB Configuration.&lt;/p>
&lt;p>Save and boot back into Proxmox.&lt;/p>
&lt;h2 id="step-2-enable-iommu-in-the-linux-kernel">Step 2: Enable IOMMU in the Linux kernel&lt;/h2>
&lt;p>Edit the GRUB boot parameters:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>nano /etc/default/grub
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Find the &lt;code>GRUB_CMDLINE_LINUX_DEFAULT&lt;/code> line and add the IOMMU flags:&lt;/p>
&lt;p>&lt;strong>Intel:&lt;/strong>&lt;/p>
&lt;pre tabindex="0">&lt;code>GRUB_CMDLINE_LINUX_DEFAULT=&amp;#34;quiet intel_iommu=on iommu=pt&amp;#34;
&lt;/code>&lt;/pre>&lt;p>&lt;strong>AMD:&lt;/strong>&lt;/p>
&lt;pre tabindex="0">&lt;code>GRUB_CMDLINE_LINUX_DEFAULT=&amp;#34;quiet amd_iommu=on iommu=pt&amp;#34;
&lt;/code>&lt;/pre>&lt;p>The &lt;code>iommu=pt&lt;/code> flag (passthrough mode) reduces IOMMU overhead for devices not being passed through — recommended for performance.&lt;/p>
&lt;p>Update GRUB and reboot:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>update-grub
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>reboot
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>After reboot, verify IOMMU is active:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>dmesg | grep -i iommu | head -10
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>You should see output like &lt;code>AMD-Vi: AMD IOMMUv2 loaded and initialized&lt;/code> or &lt;code>DMAR: IOMMU enabled&lt;/code>.&lt;/p>
&lt;h2 id="step-3-load-vfio-kernel-modules">Step 3: Load VFIO kernel modules&lt;/h2>
&lt;p>Add VFIO modules to load at boot:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>echo &lt;span style="color:#e6db74">&amp;#34;vfio&amp;#34;&lt;/span> &amp;gt;&amp;gt; /etc/modules
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>echo &lt;span style="color:#e6db74">&amp;#34;vfio_iommu_type1&amp;#34;&lt;/span> &amp;gt;&amp;gt; /etc/modules
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>echo &lt;span style="color:#e6db74">&amp;#34;vfio_pci&amp;#34;&lt;/span> &amp;gt;&amp;gt; /etc/modules
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>echo &lt;span style="color:#e6db74">&amp;#34;vfio_virqfd&amp;#34;&lt;/span> &amp;gt;&amp;gt; /etc/modules
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Update initramfs:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>update-initramfs -u
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="step-4-identify-your-gpus-iommu-group">Step 4: Identify your GPU&amp;rsquo;s IOMMU group&lt;/h2>
&lt;p>This step is critical. Each device in your system is assigned to an IOMMU group. For passthrough, you need to pass through all devices in the same IOMMU group as your target GPU — or ensure the GPU is the only device in its group.&lt;/p>
&lt;p>Run this script to see all IOMMU groups:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#!/bin/bash
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>&lt;span style="color:#66d9ef">for&lt;/span> d in /sys/kernel/iommu_groups/*/devices/*; &lt;span style="color:#66d9ef">do&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> n&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">${&lt;/span>d#*/iommu_groups/*&lt;span style="color:#e6db74">}&lt;/span>; n&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">${&lt;/span>n%%/*&lt;span style="color:#e6db74">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> printf &lt;span style="color:#e6db74">&amp;#39;IOMMU Group %s &amp;#39;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&lt;/span>$n&lt;span style="color:#e6db74">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> lspci -nns &lt;span style="color:#e6db74">&amp;#34;&lt;/span>&lt;span style="color:#e6db74">${&lt;/span>d##*/&lt;span style="color:#e6db74">}&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">done&lt;/span> | sort -n -t&lt;span style="color:#e6db74">&amp;#39; &amp;#39;&lt;/span> -k3
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Look for your GPU in the output. Example:&lt;/p>
&lt;pre tabindex="0">&lt;code>IOMMU Group 20 0a:00.0 VGA compatible controller [0300]: NVIDIA Corporation GB203 [GeForce RTX 5080] [10de:2c02] (rev a1)
IOMMU Group 20 0a:00.1 Audio device [0403]: NVIDIA Corporation GB203 High Definition Audio Controller [10de:1aef] (rev a1)
&lt;/code>&lt;/pre>&lt;p>In this example, the GPU (0a:00.0) and its HDMI audio controller (0a:00.1) share IOMMU Group 20. Both need to be passed through together — that&amp;rsquo;s fine and expected. The GPU audio device should always be passed with the GPU.&lt;/p>
&lt;p>&lt;strong>Problem case:&lt;/strong> if other unrelated devices (another PCIe card, a USB controller) share the GPU&amp;rsquo;s IOMMU group, you either need to pass those through too, or use the ACS override patch (not recommended — it&amp;rsquo;s a security tradeoff, and Proxmox kernels don&amp;rsquo;t ship it by default).&lt;/p>
&lt;p>Note the PCI addresses (e.g., &lt;code>0a:00.0&lt;/code> and &lt;code>0a:00.1&lt;/code>) and vendor:product IDs (e.g., &lt;code>10de:2c02&lt;/code> and &lt;code>10de:1aef&lt;/code>).&lt;/p>
&lt;h2 id="step-5-blacklist-the-gpu-driver-on-the-host">Step 5: Blacklist the GPU driver on the host&lt;/h2>
&lt;p>The host must NOT load the NVIDIA or AMD driver for the GPU you&amp;rsquo;re passing through. If the host driver loads first, VFIO can&amp;rsquo;t bind to the device.&lt;/p>
&lt;p>Create a blacklist file:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># /etc/modprobe.d/blacklist-gpu.conf&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Blacklist NVIDIA drivers for passthrough GPU&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>blacklist nouveau
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>blacklist nvidia
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>blacklist nvidiafb
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>blacklist nvidia_drm
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Blacklist AMD drivers if passing through AMD GPU&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># blacklist amdgpu&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># blacklist radeon&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Then bind VFIO to the GPU at boot by setting its PCI IDs:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># /etc/modprobe.d/vfio.conf&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>options vfio-pci ids&lt;span style="color:#f92672">=&lt;/span>10de:2c02,10de:1aef
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Replace &lt;code>10de:2c02,10de:1aef&lt;/code> with your GPU&amp;rsquo;s actual vendor:product IDs from the IOMMU group output.&lt;/p>
&lt;p>Update initramfs again:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>update-initramfs -u
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>reboot
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>After reboot, verify the GPU is bound to vfio-pci and not the NVIDIA driver:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>lspci -nnk -d 10de:2c02
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>You should see &lt;code>Kernel driver in use: vfio-pci&lt;/code> — not &lt;code>nvidia&lt;/code>.&lt;/p>
&lt;h2 id="step-6-configure-the-vm">Step 6: Configure the VM&lt;/h2>
&lt;p>&lt;strong>VM hardware settings in Proxmox:&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>Machine type: &lt;code>q35&lt;/code>&lt;/li>
&lt;li>BIOS: &lt;code>OVMF (UEFI)&lt;/code> with an EFI disk&lt;/li>
&lt;li>CPU type: &lt;code>host&lt;/code>&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Add the PCI device:&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>VM → Hardware → Add → PCI Device&lt;/li>
&lt;li>Select your GPU from the dropdown (it should show as available now that VFIO owns it)&lt;/li>
&lt;li>Enable &lt;strong>All Functions&lt;/strong> (passes through all functions: GPU + audio)&lt;/li>
&lt;li>Enable &lt;strong>Primary GPU&lt;/strong> if this will be the VM&amp;rsquo;s only display output&lt;/li>
&lt;li>Enable &lt;strong>ROM-Bar&lt;/strong> (required for most GPUs to initialize properly)&lt;/li>
&lt;li>If you see an option for &lt;strong>PCI-Express&lt;/strong> — enable it&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>NVIDIA-specific: hide the hypervisor&lt;/strong>&lt;/p>
&lt;p>In the Proxmox shell, edit the VM&amp;rsquo;s config file:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>nano /etc/pve/qemu-server/VMID.conf
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Add these lines:&lt;/p>
&lt;pre tabindex="0">&lt;code>args: -cpu host,kvm=off,hv_vendor_id=GenuineIntel
cpu: host,hidden=1
&lt;/code>&lt;/pre>&lt;p>The &lt;code>kvm=off&lt;/code> hides the KVM hypervisor signature from NVIDIA&amp;rsquo;s driver check. &lt;code>hv_vendor_id=GenuineIntel&lt;/code> sets a neutral vendor ID that NVIDIA&amp;rsquo;s Error 43 check doesn&amp;rsquo;t flag. Modern NVIDIA drivers (520+) are less strict about this, but adding it doesn&amp;rsquo;t hurt.&lt;/p>
&lt;h2 id="step-7-install-the-vm-os-and-gpu-driver">Step 7: Install the VM OS and GPU driver&lt;/h2>
&lt;p>Start the VM and install your OS (Windows 11 or Linux). During OS install, the GPU may not display anything if you&amp;rsquo;re relying on it as the primary display — use Proxmox&amp;rsquo;s VNC console temporarily, then switch to the GPU output after the driver is installed.&lt;/p>
&lt;p>&lt;strong>Windows 11 VM:&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>Install Windows normally via VNC console&lt;/li>
&lt;li>Install VirtIO drivers from the &lt;a href="https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win.iso" rel="noopener">VirtIO ISO&lt;/a> for network and storage&lt;/li>
&lt;li>Install NVIDIA drivers from nvidia.com&lt;/li>
&lt;li>Switch display to the GPU&amp;rsquo;s actual output (HDMI/DisplayPort from the card)&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Linux VM (for AI inference):&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>Install Debian/Ubuntu normally&lt;/li>
&lt;li>Install CUDA: &lt;code>apt install nvidia-cuda-toolkit&lt;/code> or follow NVIDIA&amp;rsquo;s CUDA repo instructions for your distro&lt;/li>
&lt;li>Verify: &lt;code>nvidia-smi&lt;/code> should show the GPU model and memory&lt;/li>
&lt;/ol>
&lt;h2 id="step-8-verify-passthrough-is-working">Step 8: Verify passthrough is working&lt;/h2>
&lt;p>In the VM:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Linux&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>nvidia-smi
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Should show: GPU 0: [Your GPU Model], Memory Usage: ...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Run a quick benchmark&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>nvidia-smi dmon &lt;span style="color:#75715e"># real-time GPU monitoring&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Or test with llama.cpp&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>./build/bin/llama-bench -m model.gguf --n-gpu-layers &lt;span style="color:#ae81ff">999&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>If &lt;code>nvidia-smi&lt;/code> shows the correct GPU and VRAM, passthrough is working. The GPU is running with its native driver inside the VM.&lt;/p>
&lt;h2 id="common-issues">Common issues&lt;/h2>
&lt;p>&lt;strong>VM won&amp;rsquo;t boot (black screen on GPU output):&lt;/strong> Check that ROM-Bar is enabled in PCI device settings. Some GPUs also need their vBIOS passed explicitly:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Dump the GPU vBIOS to a file on the host&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cd /sys/bus/pci/devices/0000:0a:00.0/
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>echo &lt;span style="color:#ae81ff">1&lt;/span> &amp;gt; rom
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cat rom &amp;gt; /tmp/gpu.rom
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>echo &lt;span style="color:#ae81ff">0&lt;/span> &amp;gt; rom
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cp /tmp/gpu.rom /var/lib/vz/vgabios/gpu.rom
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>In the VM&amp;rsquo;s PCI device config, set &lt;strong>ROM file&lt;/strong> to &lt;code>/var/lib/vz/vgabios/gpu.rom&lt;/code>.&lt;/p>
&lt;p>&lt;strong>Error 43 in Windows:&lt;/strong> Add the &lt;code>kvm=off&lt;/code> and &lt;code>hv_vendor_id&lt;/code> args as described above.&lt;/p>
&lt;p>&lt;strong>IOMMU group contains other devices:&lt;/strong> If your GPU shares an IOMMU group with a USB controller or another card, you need to pass all those devices through too, or switch the GPU to a different PCIe slot (slots are often in different IOMMU groups).&lt;/p>
&lt;p>&lt;strong>GPU resets when VM stops:&lt;/strong> NVIDIA GPUs sometimes require a reset to reinitialize after a VM shutdown. Install the &lt;a href="https://github.com/VGPU-Community-Drivers/vGPU-Unlock-patcher" rel="noopener">nvidia-vgpu-kvm&lt;/a> patcher or use a GPU with good reset support. AMD RX 6000/7000 series generally handles resets better than NVIDIA for passthrough.&lt;/p>
&lt;h2 id="performance-expectations">Performance expectations&lt;/h2>
&lt;p>A GPU running via VFIO passthrough performs within 1–3% of bare-metal for sustained workloads. The overhead is in PCIe transaction translation, not in actual GPU compute. For gaming, frame times are indistinguishable from bare metal in nearly all scenarios. For AI inference, throughput matches bare metal.&lt;/p>
&lt;p>The main limitation: you lose real-time reprofiling via Afterburner while the GPU is in a VM. For the &lt;a href="https://techfuelhq.com/articles/rtx-5080-undervolt-guide-2026/">RTX 5080 undervolt workflow&lt;/a>, run Afterburner inside the Windows VM rather than on the host.&lt;/p>
&lt;hr>
&lt;p>&lt;em>GPU passthrough turns Proxmox into a single-machine replacement for dedicated gaming and AI rigs. For the AI inference use case, see the &lt;a href="https://techfuelhq.com/articles/1000-local-ai-workstation-rtx-5080-2026/">Local AI Workstation guide&lt;/a>. For running local LLMs on a dedicated GPU node, the &lt;a href="https://techfuelhq.com/tutorials/self-host-local-llm-rtx-5060-2026/">self-host a local LLM guide&lt;/a> covers Ollama, llama.cpp, and real throughput numbers.&lt;/em>&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://pve.proxmox.com/wiki/PCI%28e%29_Passthrough" rel="noopener">Proxmox VE PCI(e) Passthrough wiki&lt;/a> &amp;ndash; official guide to IOMMU, VFIO modules, and passing a device to a VM.&lt;/li>
&lt;li>&lt;a href="https://pve.proxmox.com/pve-docs/chapter-qm.html" rel="noopener">Proxmox VE QEMU/KVM Virtual Machines&lt;/a> &amp;ndash; official reference for machine type (q35), OVMF/UEFI, and CPU settings used in passthrough VMs.&lt;/li>
&lt;li>&lt;a href="https://www.kernel.org/doc/html/latest/driver-api/vfio.html" rel="noopener">Linux kernel VFIO documentation&lt;/a> &amp;ndash; official reference for the VFIO framework, IOMMU groups, and vfio-pci binding.&lt;/li>
&lt;/ul></description></item><item><title>LXC vs VM in Proxmox: When to Use Each</title><link>https://techfuelhq.com/homelab/lxc-vs-vm-proxmox-2026/</link><pubDate>Sat, 30 May 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/homelab/lxc-vs-vm-proxmox-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-05-30 · ~12 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/homelab/lxc-vs-vm-proxmox-2026.svg" alt="Side-by-side comparison table of LXC containers vs KVM/QEMU VMs in Proxmox VE 8.x, benchmarked on a Beelink SEi12 Pro: LXC uses ~55 MB RAM, under 1% CPU, boots in 0.5-1.5s and backs up to ~400 MB; the VM uses ~280 MB RAM, 1-3% CPU, boots in 8-20s and backs up to ~2.0 GB but wins on own kernel, GPU passthrough, Windows guests, and isolation." width="1200" height="760" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>The single most common question I see from people &lt;a href="https://techfuelhq.com/articles/proxmox-mini-pc-setup/">setting up Proxmox for the first time&lt;/a>: &amp;ldquo;Should I use a container or a VM for this?&amp;rdquo; The answer is not &amp;ldquo;it depends&amp;rdquo; — that&amp;rsquo;s the non-answer. The answer is a decision tree with clear rules, and once you internalize it, you&amp;rsquo;ll stop second-guessing every workload.&lt;/p>
&lt;p>Here&amp;rsquo;s what I use in my own homelab, why, and where the lines are.&lt;/p>
&lt;h2 id="what-proxmox-actually-gives-you">What Proxmox actually gives you&lt;/h2>
&lt;p>Proxmox VE is a hypervisor that supports two completely different virtualization approaches from the same interface.&lt;/p>
&lt;p>&lt;strong>KVM/QEMU virtual machines&lt;/strong> are full hardware emulation. The VM gets its own virtualized CPU, RAM, storage controller, and network card. It runs its own kernel. From inside the VM, there is no way to tell you&amp;rsquo;re not on bare metal (unless you&amp;rsquo;re inspecting CPUID flags). The hypervisor isolates the VM at the hardware level.&lt;/p>
&lt;p>&lt;strong>LXC containers&lt;/strong> share the host kernel. There is no hardware emulation. The container gets its own filesystem namespace, PID namespace, and network namespace — it looks like a separate Linux system from the inside — but it&amp;rsquo;s the same kernel call table as the host. The &amp;ldquo;container OS&amp;rdquo; is just a userland: &lt;code>/bin&lt;/code>, &lt;code>/etc&lt;/code>, &lt;code>/home&lt;/code>, and the processes running on top of the shared kernel.&lt;/p>
&lt;p>This single architectural difference drives everything else in the comparison.&lt;/p>
&lt;h2 id="performance-where-each-wins">Performance: where each wins&lt;/h2>
&lt;h3 id="lxc-advantages">LXC advantages&lt;/h3>
&lt;p>Containers have near-zero virtualization overhead. A process running inside an LXC container makes system calls directly to the host kernel — no VMexit, no QEMU device emulation, no virtio driver overhead. For IO-heavy workloads like a NAS service, a database, or a file sync daemon, this matters.&lt;/p>
&lt;p>&lt;strong>Storage IO:&lt;/strong> An LXC container on a local ext4 or ZFS dataset reads and writes with basically host-native throughput. A VM&amp;rsquo;s virtio-blk or virtio-scsi driver adds a thin translation layer — in practice, a few percent overhead on sequential reads/writes. For random IO on NVMe at high queue depths, the VM overhead becomes more measurable.&lt;/p>
&lt;p>&lt;strong>Network:&lt;/strong> LXC containers using a veth pair and a Linux bridge (the default Proxmox setup) have near-native throughput. VMs go through virtio-net, which is excellent but adds ~1–3% overhead versus bare metal depending on packet size and rate.&lt;/p>
&lt;p>&lt;strong>Memory:&lt;/strong> A container doesn&amp;rsquo;t need memory for a guest kernel, QEMU, or virtio device state. A bare Debian LXC uses 30–60MB RAM before you run any services. A Debian VM with the same services uses 200–400MB. On a mini PC with 16GB RAM, that difference is significant if you&amp;rsquo;re running 10 services.&lt;/p>
&lt;p>&lt;strong>Boot time:&lt;/strong> LXC containers start in under a second. A VM boots in 5–15 seconds depending on BIOS/UEFI simulation.&lt;/p>
&lt;h3 id="vm-advantages">VM advantages&lt;/h3>
&lt;p>&lt;strong>Full kernel control.&lt;/strong> Each VM runs its own kernel. You can run Ubuntu 24.04 in one VM, Alpine 3.19 in another, and a custom-compiled kernel in a third — without any of them affecting each other or the host. LXC containers are locked to the host kernel version.&lt;/p>
&lt;p>&lt;strong>GPU passthrough.&lt;/strong> Passing a GPU through to an LXC container is possible but limited — you&amp;rsquo;re sharing the host kernel&amp;rsquo;s GPU driver with the container. Passing through to a VM via VFIO gives the VM exclusive access to the hardware and its own driver. If you&amp;rsquo;re doing GPU inference, GPU transcoding, or gaming VMs, use a VM.&lt;/p>
&lt;p>&lt;strong>Windows and non-Linux guests.&lt;/strong> LXC is Linux-only. Want a Windows Server VM for Active Directory, a Windows gaming VM, or anything non-Linux? KVM/QEMU, full stop.&lt;/p>
&lt;p>&lt;strong>Stronger isolation.&lt;/strong> Shared kernel means a kernel exploit in one container affects all containers and the host. A VM&amp;rsquo;s exploit surface is bounded by QEMU and KVM — materially harder to escape from. For anything running untrusted or public-facing code, this matters.&lt;/p>
&lt;p>&lt;strong>Kernel modules.&lt;/strong> If your workload needs a kernel module that&amp;rsquo;s not loaded on the host — WireGuard kernel module, ZFS on a different version, a custom NIC driver — a VM is the only real option. You can load modules in an LXC with &lt;code>allow_dangerous_writes&lt;/code>, but you&amp;rsquo;re still touching the host kernel.&lt;/p>
&lt;h2 id="resource-overhead-numbers">Resource overhead numbers&lt;/h2>
&lt;p>Here&amp;rsquo;s a concrete comparison running on a Beelink SEi12 Pro (N150, 16GB RAM, 512GB NVMe) running Proxmox VE 8.x:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Metric&lt;/th>
&lt;th scope="col">LXC (Debian 12, idle)&lt;/th>
&lt;th scope="col">VM (Debian 12, idle, virtio)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>RAM used by guest&lt;/td>
&lt;td>~55 MB&lt;/td>
&lt;td>~280 MB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>CPU overhead&lt;/td>
&lt;td>&amp;lt;1%&lt;/td>
&lt;td>1–3%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Storage IO vs bare metal&lt;/td>
&lt;td>~98%&lt;/td>
&lt;td>~94–97%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Network throughput vs bare metal&lt;/td>
&lt;td>~99%&lt;/td>
&lt;td>~97%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Boot time&lt;/td>
&lt;td>0.5–1.5 seconds&lt;/td>
&lt;td>8–20 seconds&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Backup size (Debian + 1 app)&lt;/td>
&lt;td>~400 MB&lt;/td>
&lt;td>~2.0 GB&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Numbers are representative of Proxmox 8.x with virtio drivers. The storage IO gap closes significantly when using virtio-blk with io_uring.&lt;/p>
&lt;h2 id="what-i-actually-run-in-lxc-vs-vm">What I actually run in LXC vs VM&lt;/h2>
&lt;p>In my own Proxmox setup, the split is roughly:&lt;/p>
&lt;p>&lt;strong>LXC containers:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Home Assistant (isolated HAOS-style config on a Debian container)&lt;/li>
&lt;li>Vaultwarden (no kernel needs, pure userspace app)&lt;/li>
&lt;li>Nginx reverse proxy&lt;/li>
&lt;li>Uptime Kuma&lt;/li>
&lt;li>Immich photo server&lt;/li>
&lt;li>Pi-hole DNS&lt;/li>
&lt;li>Gitea&lt;/li>
&lt;li>Prometheus + Grafana stack — see &lt;a href="https://techfuelhq.com/homelab/grafana-vs-prometheus-2026/">Grafana vs Prometheus&lt;/a> for what each layer actually does&lt;/li>
&lt;li>Any service that&amp;rsquo;s &amp;ldquo;just a process&amp;rdquo; — no special kernel requirements, no GPU, trusted code&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Virtual machines:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>TrueNAS Scale (needs its own ZFS kernel, storage needs isolation)&lt;/li>
&lt;li>Windows 11 (gaming and testing)&lt;/li>
&lt;li>Any LLM inference node with RTX 5080 GPU passthrough&lt;/li>
&lt;li>OPNsense (firewall OS — needs network kernel control and isolation is mandatory)&lt;/li>
&lt;li>Any publicly-exposed service handling user data&lt;/li>
&lt;/ul>
&lt;p>The pattern: if the workload is a Linux service that doesn&amp;rsquo;t need kernel modules, GPU access, or strong isolation, it&amp;rsquo;s an LXC container. If it needs any of those, it&amp;rsquo;s a VM.&lt;/p>
&lt;h2 id="the-decision-tree">The decision tree&lt;/h2>
&lt;pre tabindex="0">&lt;code>New workload in Proxmox?
│
├─ Is it Windows or non-Linux? → VM
│
├─ Does it need GPU passthrough? → VM
│
├─ Does it need a specific kernel version or custom module? → VM
│
├─ Is it running untrusted or public-facing code? → VM (strongly recommended)
│
├─ Does it need ZFS as a storage backend (not just a ZFS dataset)? → VM
│
└─ Everything else → LXC container
(Linux service, trusted code, no GPU, no custom kernel)
&lt;/code>&lt;/pre>&lt;p>When in doubt, start with a VM. You can always move a workload from a VM to a container later. Moving from a container to a VM when you discover you need GPU passthrough three months later is more annoying.&lt;/p>
&lt;h2 id="proxmox-specific-gotchas">Proxmox-specific gotchas&lt;/h2>
&lt;p>&lt;strong>LXC and NFS.&lt;/strong> Mounting NFS inside an LXC container requires &lt;code>features: mount=nfs&lt;/code> in the container options. Without it, the kernel will reject NFS mounts inside the container namespace. Proxmox makes this a simple toggle.&lt;/p>
&lt;p>&lt;strong>LXC and Docker.&lt;/strong> Docker inside LXC requires &lt;code>features: nesting=1,keyctl=1&lt;/code>. This works for most Compose stacks — though on a ZFS host there is a storage-driver gotcha, covered in our full &lt;a href="https://techfuelhq.com/articles/proxmox-vs-docker-2026/">Proxmox vs Docker layering guide&lt;/a>. Kubernetes inside LXC is possible but painful — just use a VM for K8s.&lt;/p>
&lt;p>&lt;strong>Unprivileged vs privileged containers.&lt;/strong> Proxmox creates LXC containers as unprivileged by default — UIDs inside the container are remapped to high UIDs on the host, limiting damage from a container breakout. Privileged containers run as root on the host. Use unprivileged containers unless you have a specific reason not to (some hardware passthrough scenarios require privileged mode).&lt;/p>
&lt;p>&lt;strong>Memory balloons for VMs.&lt;/strong> Proxmox supports KVM memory ballooning — VMs can return unused RAM to the host dynamically. Enable the balloon device in the VM hardware settings and set minimum/maximum RAM. This makes VMs more RAM-efficient when idle, closing part of the gap with LXC.&lt;/p>
&lt;p>&lt;strong>Snapshots.&lt;/strong> Both LXC and VMs support Proxmox snapshots. LXC snapshots require the storage to support snapshots (ZFS datasets or LVM-thin, not raw directories). VM snapshots work on any QEMU-compatible storage.&lt;/p>
&lt;h2 id="backup-behavior">Backup behavior&lt;/h2>
&lt;p>Proxmox Backup Server handles both, but differently:&lt;/p>
&lt;p>&lt;strong>LXC backups&lt;/strong> suspend or stop the container, archive the container filesystem as a tar.zst, and optionally take a live snapshot (vzdump with &lt;code>--mode snapshot&lt;/code>). Resulting backup is small — a Debian + one service is typically 300–600 MB, which is also why &lt;code>vzdump&lt;/code> plus &lt;code>pct restore&lt;/code> is the simplest way to &lt;a href="https://techfuelhq.com/tutorials/proxmox-migrate-vm-without-cluster-2026/">move a container to a different host without a cluster&lt;/a>.&lt;/p>
&lt;p>&lt;strong>VM backups&lt;/strong> use QEMU&amp;rsquo;s dirty-bitmap tracking to do incremental block-level snapshots. Initial backup is larger (full disk size, compressed); incrementals are small. Live VM backup works without stopping the VM using QEMU&amp;rsquo;s native snapshot capability.&lt;/p>
&lt;p>Both integrate with PBS deduplication — if you&amp;rsquo;re running 10 nearly-identical Debian LXC containers, PBS deduplicates the common chunks and your backup storage footprint stays manageable. See the &lt;a href="https://techfuelhq.com/tutorials/proxmox-backup-server-3-2-1-2026/">Proxmox Backup Server guide&lt;/a> for the full setup.&lt;/p>
&lt;h2 id="when-to-run-both-for-the-same-service">When to run both for the same service&lt;/h2>
&lt;p>Some setups make sense as a hybrid. A common pattern:&lt;/p>
&lt;ul>
&lt;li>Run TrueNAS Scale as a VM (needs ZFS, storage isolation)&lt;/li>
&lt;li>Mount TrueNAS shares into LXC containers via NFS/SMB (Nextcloud, Immich, media servers)&lt;/li>
&lt;/ul>
&lt;p>The VM handles storage integrity and its kernel; the containers handle the application layer efficiently. This is cleaner than running everything inside TrueNAS jails and avoids the overhead of running a full VM for each application.&lt;/p>
&lt;h2 id="summary">Summary&lt;/h2>
&lt;p>LXC containers are faster, lighter, and simpler to manage for standard Linux services. VMs are the right choice when you need kernel isolation, GPU passthrough, Windows, or strong security boundaries. Most homelabs run a mix — lighter services in containers, anything that needs hardware ownership or serious isolation in VMs.&lt;/p>
&lt;p>Proxmox makes both first-class. The overhead of using either is low. The cost of choosing wrong is usually &amp;ldquo;rebuild and migrate the data&amp;rdquo; — not catastrophic, but avoidable if you think through the decision tree before deploying.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Running a Proxmox cluster? The &lt;a href="https://techfuelhq.com/tools/proxmox-capacity-planner/">Proxmox VM Capacity Planner&lt;/a> calculates exactly how many VMs or containers your host can run given your RAM, cores, and ZFS ARC allocation. The &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">Power &amp;amp; Cost Calculator&lt;/a> shows what those nodes cost to run 24/7. The &lt;a href="https://techfuelhq.com/homelab/ups-power-sizing-homelab-2026/">UPS sizing guide&lt;/a> covers keeping them alive through a power outage. For the Docker Compose services that run inside most LXC containers here — NPM, Portainer, Uptime Kuma, Watchtower — the &lt;a href="https://techfuelhq.com/tutorials/docker-compose-starter-stack-homelab-2026/">Docker Compose starter stack tutorial&lt;/a> has the full working compose files. If you&amp;rsquo;re running ZFS on Proxmox, the &lt;a href="https://techfuelhq.com/tutorials/zfs-proxmox-pool-setup-arc-tuning-2026/">ZFS pool setup guide&lt;/a> covers pool creation, ARC tuning, and scrub scheduling.&lt;/em>&lt;/p></description></item><item><title>Self-Hosted Password Manager: Vaultwarden on Proxmox (2026)</title><link>https://techfuelhq.com/tutorials/vaultwarden-proxmox-2026/</link><pubDate>Fri, 29 May 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tutorials/vaultwarden-proxmox-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-05-29 · ~14 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/tutorials/vaultwarden-proxmox-2026.svg" alt="Architecture diagram of Vaultwarden on Proxmox: a Debian 12 LXC inside a Proxmox VE host runs the Rust Vaultwarden binary on 127.0.0.1:8080 behind a Caddy reverse proxy that terminates Let's Encrypt HTTPS; browser, mobile, and desktop Bitwarden clients sync in over HTTPS, access is via public Let's Encrypt or Tailscale-only, and a daily 2 AM job backs up the SQLite database, attachments, and RSA keys to a NAS — about 100MB total RAM." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>Password managers that live in someone else&amp;rsquo;s cloud have one failure mode that self-hosted doesn&amp;rsquo;t: the company goes under, gets acquired, or changes pricing. Vaultwarden on Proxmox solves this. Your vault lives on hardware you own, all Bitwarden official clients work against it without modification, and the whole setup runs in a lightweight LXC container that uses maybe 80MB of RAM.&lt;/p>
&lt;p>This guide goes from zero to a working Vaultwarden install with HTTPS, automatic backups, and all your devices connected.&lt;/p>
&lt;h2 id="what-vaultwarden-is">What Vaultwarden is&lt;/h2>
&lt;p>Vaultwarden is an open-source reimplementation of the Bitwarden server written in Rust. It is not affiliated with Bitwarden, Inc., but it is compatible with all official Bitwarden clients — browser extensions, mobile apps, desktop apps — without any modification to those clients.&lt;/p>
&lt;p>What you get versus bitwarden.com paid plans: organizations, collections, TOTP authenticator codes, and Bitwarden Send — all for free, running on your own hardware. What you don&amp;rsquo;t get: Bitwarden&amp;rsquo;s enterprise compliance features and their guaranteed uptime. For a homelab password manager, the trade is worth it.&lt;/p>
&lt;p>(If you haven&amp;rsquo;t settled that trade yet, &lt;a href="https://techfuelhq.com/homelab/vaultwarden-vs-bitwarden-2026/">Vaultwarden vs Bitwarden&lt;/a> breaks down the eleven-container official deployment against this single Rust container, exactly which features you give up, and where Bitwarden&amp;rsquo;s newer lite option lands. Come back here to build it.)&lt;/p>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;ul>
&lt;li>Proxmox VE 8.x with LXC capability&lt;/li>
&lt;li>A domain name you control with the ability to add a DNS record (even a subdomain works)&lt;/li>
&lt;li>Tailscale or port forwarding to reach your homelab from outside (for syncing mobile devices)&lt;/li>
&lt;li>Basic comfort with SSH and running commands&lt;/li>
&lt;/ul>
&lt;p>For the HTTPS setup, this guide uses Caddy as the reverse proxy because its automatic Let&amp;rsquo;s Encrypt handling requires zero certificate management on your part. If you already have nginx handling reverse proxy, adapt the config blocks to nginx.&lt;/p>
&lt;h2 id="step-1-create-a-debian-lxc-in-proxmox">Step 1: Create a Debian LXC in Proxmox&lt;/h2>
&lt;p>In the Proxmox web UI:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Create CT&lt;/strong> → Debian 12 template (download from Proxmox if not already present)&lt;/li>
&lt;li>&lt;strong>Hostname:&lt;/strong> &lt;code>vaultwarden&lt;/code>&lt;/li>
&lt;li>&lt;strong>Storage:&lt;/strong> 8GB is plenty (Vaultwarden + OS is under 500MB; increase if you&amp;rsquo;ll store file attachments)&lt;/li>
&lt;li>&lt;strong>RAM:&lt;/strong> 256MB minimum, 512MB comfortable&lt;/li>
&lt;li>&lt;strong>CPU:&lt;/strong> 1 core is sufficient&lt;/li>
&lt;li>&lt;strong>Network:&lt;/strong> DHCP or a static IP on your LAN&lt;/li>
&lt;li>&lt;strong>Features → Nesting:&lt;/strong> enable if you want Docker later; not required for this setup&lt;/li>
&lt;/ol>
&lt;p>Start the container and SSH in as root, or use the Proxmox console.&lt;/p>
&lt;p>Update the system:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>apt update &lt;span style="color:#f92672">&amp;amp;&amp;amp;&lt;/span> apt upgrade -y
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>apt install -y curl wget unzip
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="step-2-install-vaultwarden">Step 2: Install Vaultwarden&lt;/h2>
&lt;p>Vaultwarden ships as a single binary with no external dependencies beyond a SQLite database. The simplest install method is the official Docker image, but since we&amp;rsquo;re in an LXC and want minimal overhead, we&amp;rsquo;ll use the pre-built binary distribution.&lt;/p>
&lt;p>&lt;strong>Option A: Docker Compose (easiest, ~5MB extra overhead)&lt;/strong>&lt;/p>
&lt;p>Install Docker:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>curl -fsSL https://get.docker.com | sh
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Create a directory and compose file:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>mkdir -p /opt/vaultwarden/data
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cd /opt/vaultwarden
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># /opt/vaultwarden/docker-compose.yml&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">services&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">vaultwarden&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">vaultwarden/server:latest&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">vaultwarden&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">unless-stopped&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">./data:/data&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">environment&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">DOMAIN&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;https://vault.yourdomain.com&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">SIGNUPS_ALLOWED&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;false&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">ADMIN_TOKEN&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;generate-a-strong-token-here&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">ports&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#34;127.0.0.1:8080:80&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Generate a strong admin token:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>openssl rand -base64 &lt;span style="color:#ae81ff">48&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Paste the output as &lt;code>ADMIN_TOKEN&lt;/code>. Set &lt;code>DOMAIN&lt;/code> to the URL you&amp;rsquo;ll access Vaultwarden at.&lt;/p>
&lt;p>Start it:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>docker compose up -d
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker compose logs -f
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Vaultwarden is now listening on &lt;code>127.0.0.1:8080&lt;/code>. The reverse proxy (next step) exposes it publicly over HTTPS.&lt;/p>
&lt;p>&lt;strong>Option B: Pre-built binary (no Docker)&lt;/strong>&lt;/p>
&lt;p>Download the latest release from &lt;a href="https://github.com/dani-garcia/vaultwarden/releases" rel="noopener">github.com/dani-garcia/vaultwarden/releases&lt;/a>. Get the &lt;code>amd64-musl&lt;/code> tarball:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>wget https://github.com/dani-garcia/vaultwarden/releases/latest/download/vaultwarden-1.32.7-linux-amd64.tar.gz
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>tar -xzf vaultwarden-*.tar.gz
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mv vaultwarden /usr/local/bin/
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>chmod +x /usr/local/bin/vaultwarden
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Create a data directory and &lt;code>.env&lt;/code> file:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>mkdir -p /opt/vaultwarden/data
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># /opt/vaultwarden/.env&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>DATA_FOLDER&lt;span style="color:#f92672">=&lt;/span>/opt/vaultwarden/data
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>DOMAIN&lt;span style="color:#f92672">=&lt;/span>https://vault.yourdomain.com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>SIGNUPS_ALLOWED&lt;span style="color:#f92672">=&lt;/span>false
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ADMIN_TOKEN&lt;span style="color:#f92672">=&lt;/span>your-strong-token-here
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ROCKET_ADDRESS&lt;span style="color:#f92672">=&lt;/span>127.0.0.1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ROCKET_PORT&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">8080&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Create a systemd service:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-ini" data-lang="ini">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># /etc/systemd/system/vaultwarden.service&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[Unit]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">Description&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">Vaultwarden password server&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">After&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">network.target&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[Service]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">User&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">root&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">EnvironmentFile&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">/opt/vaultwarden/.env&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">ExecStart&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">/usr/local/bin/vaultwarden&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">Restart&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">on-failure&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">WorkingDirectory&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">/opt/vaultwarden&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[Install]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">WantedBy&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">multi-user.target&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>systemctl enable --now vaultwarden
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>systemctl status vaultwarden
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="step-3-https-with-caddy">Step 3: HTTPS with Caddy&lt;/h2>
&lt;p>Install Caddy:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>curl -1sLf &lt;span style="color:#e6db74">&amp;#39;https://dl.cloudsmith.io/public/caddy/stable/gpg.key&amp;#39;&lt;/span> | gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>curl -1sLf &lt;span style="color:#e6db74">&amp;#39;https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt&amp;#39;&lt;/span> | tee /etc/apt/sources.list.d/caddy-stable.list
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>apt update
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>apt install -y caddy
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Create the Caddyfile:&lt;/p>
&lt;pre tabindex="0">&lt;code># /etc/caddy/Caddyfile
vault.yourdomain.com {
reverse_proxy localhost:8080
}
&lt;/code>&lt;/pre>&lt;p>Replace &lt;code>vault.yourdomain.com&lt;/code> with your actual domain. Caddy automatically obtains a Let&amp;rsquo;s Encrypt certificate for this domain — no certbot, no manual renewal.&lt;/p>
&lt;p>For Caddy to get the certificate, port 80 and 443 on your router must forward to this LXC&amp;rsquo;s LAN IP. If you&amp;rsquo;re using Tailscale for access only (not exposing to the internet), skip Let&amp;rsquo;s Encrypt and use Caddy with a self-signed cert or use the Tailscale HTTPS feature instead.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>systemctl enable --now caddy
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>systemctl status caddy
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>After Caddy starts, wait 30–60 seconds for certificate issuance, then visit &lt;code>https://vault.yourdomain.com&lt;/code>. You should see the Bitwarden login screen.&lt;/p>
&lt;h2 id="step-4-create-your-account-and-disable-signups">Step 4: Create your account and disable signups&lt;/h2>
&lt;p>Open &lt;code>https://vault.yourdomain.com&lt;/code> and create your account. After your account is created, signups are already disabled in the config (&lt;code>SIGNUPS_ALLOWED=false&lt;/code>). New users would need to go through the admin panel at &lt;code>https://vault.yourdomain.com/admin&lt;/code> to create accounts.&lt;/p>
&lt;p>The admin panel requires the &lt;code>ADMIN_TOKEN&lt;/code> you set. Go there now and confirm the settings look right.&lt;/p>
&lt;p>&lt;strong>Enable TOTP 2FA.&lt;/strong> In your Vaultwarden account settings → Security → Two-step login → enable Authenticator App. Store the recovery codes somewhere safe — not in Vaultwarden itself (obvious), not in your email (bad idea), somewhere physically separate.&lt;/p>
&lt;h2 id="step-5-connect-all-devices">Step 5: Connect all devices&lt;/h2>
&lt;p>&lt;strong>Browser extension:&lt;/strong> Install the Bitwarden extension for Chrome, Firefox, or Safari. Click the extension → Settings → Self-Hosted Environment. Set Server URL to &lt;code>https://vault.yourdomain.com&lt;/code>. Log in with your account.&lt;/p>
&lt;p>&lt;strong>Mobile (iOS/Android):&lt;/strong> Open the Bitwarden app → Settings → Self-Hosted → Server URL. Same URL. Log in. On iOS, go to Settings → Passwords → Password Options → enable Bitwarden for AutoFill.&lt;/p>
&lt;p>&lt;strong>Desktop app:&lt;/strong> Same flow — Settings → Self-Hosted.&lt;/p>
&lt;p>After each client connects and syncs, disable &lt;code>bitwarden.com&lt;/code> as an option in the extension settings (under the account menu) so you don&amp;rsquo;t accidentally log into the cloud version.&lt;/p>
&lt;h2 id="step-6-automated-backups">Step 6: Automated backups&lt;/h2>
&lt;p>Vaultwarden stores everything in &lt;code>/opt/vaultwarden/data/&lt;/code> (or &lt;code>/opt/vaultwarden/data&lt;/code> for the Docker setup where it&amp;rsquo;s a volume at &lt;code>./data&lt;/code>). The critical files:&lt;/p>
&lt;ul>
&lt;li>&lt;code>db.sqlite3&lt;/code> — your entire vault database&lt;/li>
&lt;li>&lt;code>attachments/&lt;/code> — any file attachments&lt;/li>
&lt;li>&lt;code>config.json&lt;/code> — server configuration (mostly redundant with your .env, but include it)&lt;/li>
&lt;li>&lt;code>rsa_key*&lt;/code> — RSA keys for JWT signing (back these up or sessions will invalidate after a restore)&lt;/li>
&lt;/ul>
&lt;p>Create a backup script:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#!/bin/bash
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>&lt;span style="color:#75715e"># /opt/vaultwarden/backup.sh&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>BACKUP_DIR&lt;span style="color:#f92672">=&lt;/span>/mnt/nas-backups/vaultwarden
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>TIMESTAMP&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#66d9ef">$(&lt;/span>date +%Y%m%d-%H%M%S&lt;span style="color:#66d9ef">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>DEST&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&lt;/span>$BACKUP_DIR&lt;span style="color:#e6db74">/vw-backup-&lt;/span>$TIMESTAMP&lt;span style="color:#e6db74">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mkdir -p &lt;span style="color:#e6db74">&amp;#34;&lt;/span>$DEST&lt;span style="color:#e6db74">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Use SQLite&amp;#39;s online backup API to avoid corruption during a live backup&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sqlite3 /opt/vaultwarden/data/db.sqlite3 &lt;span style="color:#e6db74">&amp;#34;.backup &amp;#39;&lt;/span>$DEST&lt;span style="color:#e6db74">/db.sqlite3&amp;#39;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cp -r /opt/vaultwarden/data/attachments &lt;span style="color:#e6db74">&amp;#34;&lt;/span>$DEST&lt;span style="color:#e6db74">/&amp;#34;&lt;/span> 2&amp;gt;/dev/null &lt;span style="color:#f92672">||&lt;/span> true
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cp /opt/vaultwarden/data/rsa_key* &lt;span style="color:#e6db74">&amp;#34;&lt;/span>$DEST&lt;span style="color:#e6db74">/&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Keep only 30 days of backups&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>find &lt;span style="color:#e6db74">&amp;#34;&lt;/span>$BACKUP_DIR&lt;span style="color:#e6db74">&amp;#34;&lt;/span> -name &lt;span style="color:#e6db74">&amp;#34;vw-backup-*&amp;#34;&lt;/span> -mtime +30 -exec rm -rf &lt;span style="color:#f92672">{}&lt;/span> +
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>echo &lt;span style="color:#e6db74">&amp;#34;Backup complete: &lt;/span>$DEST&lt;span style="color:#e6db74">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>chmod +x /opt/vaultwarden/backup.sh
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Add to crontab - daily at 2am&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>echo &lt;span style="color:#e6db74">&amp;#34;0 2 * * * root /opt/vaultwarden/backup.sh &amp;gt;&amp;gt; /var/log/vw-backup.log 2&amp;gt;&amp;amp;1&amp;#34;&lt;/span> &amp;gt;&amp;gt; /etc/crontab
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Replace &lt;code>/mnt/nas-backups/vaultwarden&lt;/code> with your NAS mount point or a path that gets swept by &lt;a href="https://techfuelhq.com/tutorials/proxmox-backup-server-3-2-1-2026/">Proxmox Backup Server&lt;/a>.&lt;/p>
&lt;p>&lt;strong>Critical:&lt;/strong> test the restore before you need it. Stop Vaultwarden, replace &lt;code>db.sqlite3&lt;/code> with a backup copy, start Vaultwarden, verify your passwords are there, then restore the production database. Takes 5 minutes and confirms your backup is valid.&lt;/p>
&lt;h2 id="step-7-tailscale-only-access-no-public-exposure">Step 7: Tailscale-only access (no public exposure)&lt;/h2>
&lt;p>If you don&amp;rsquo;t want Vaultwarden reachable from the public internet — only accessible while on your tailnet — skip the Let&amp;rsquo;s Encrypt setup and use Tailscale HTTPS instead.&lt;/p>
&lt;p>Tailscale provides valid HTTPS certificates for your tailnet nodes via &lt;code>tailscale cert&lt;/code>. On the Vaultwarden container (with Tailscale installed):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>tailscale cert vaultwarden.your-tailnet.ts.net
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This generates a certificate at &lt;code>/var/lib/tailscale/certs/&lt;/code>. Update your Caddyfile to use it:&lt;/p>
&lt;pre tabindex="0">&lt;code>vaultwarden.your-tailnet.ts.net {
tls /var/lib/tailscale/certs/vaultwarden.your-tailnet.ts.net.crt \
/var/lib/tailscale/certs/vaultwarden.your-tailnet.ts.net.key
reverse_proxy localhost:8080
}
&lt;/code>&lt;/pre>&lt;p>Now Vaultwarden is only reachable when you&amp;rsquo;re connected to your tailnet. No public port exposure. Mobile Bitwarden clients sync when you&amp;rsquo;re on tailnet (at home or connected via Tailscale from anywhere). This is the highest-security configuration for a homelab password manager.&lt;/p>
&lt;h2 id="updating-vaultwarden">Updating Vaultwarden&lt;/h2>
&lt;p>For Docker Compose:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>cd /opt/vaultwarden
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker compose pull
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker compose up -d
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>For the binary:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>systemctl stop vaultwarden
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Download new binary, replace /usr/local/bin/vaultwarden&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>systemctl start vaultwarden
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Vaultwarden runs automatic database migrations on startup. Back up before updating regardless.&lt;/p>
&lt;h2 id="resource-usage">Resource usage&lt;/h2>
&lt;p>On an idle Debian 12 LXC running Vaultwarden (Docker, 3 users, 1200 vault items):&lt;/p>
&lt;ul>
&lt;li>RAM: ~85MB for Vaultwarden + ~15MB for Caddy = ~100MB total container RAM&lt;/li>
&lt;li>CPU: &amp;lt;1% idle, brief spikes on sync&lt;/li>
&lt;li>Disk: ~45MB for database + OS, excluding attachments&lt;/li>
&lt;li>Network: negligible except during initial sync&lt;/li>
&lt;/ul>
&lt;p>This is a workload that runs comfortably alongside a dozen other services on a mini PC with 16GB RAM. It does not need its own machine. The &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">Power &amp;amp; Cost Calculator&lt;/a> shows adding an LXC like this costs essentially nothing in electricity — the container overhead is measured in milliwatts.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Running Vaultwarden and other self-hosted services on Proxmox? The &lt;a href="https://techfuelhq.com/homelab/lxc-vs-vm-proxmox-2026/">LXC vs VM guide&lt;/a> covers when to use each. &lt;a href="https://techfuelhq.com/tutorials/tailscale-remote-access-homelab-2026/">Tailscale setup&lt;/a> handles the remote access piece — sync your Bitwarden clients from anywhere without exposing ports. If you prefer to give Vaultwarden a clean &lt;code>vault.yourdomain.com&lt;/code> address without a dedicated Caddy instance, &lt;a href="https://techfuelhq.com/tutorials/nginx-proxy-manager-homelab-2026/">Nginx Proxy Manager&lt;/a> centralizes SSL termination across all your services.&lt;/em>&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://github.com/dani-garcia/vaultwarden/wiki" rel="noopener">Vaultwarden project wiki&lt;/a> &amp;ndash; official source for install methods, environment variables, reverse-proxy setup, and backup procedures.&lt;/li>
&lt;li>&lt;a href="https://caddyserver.com/docs/caddyfile/directives/reverse_proxy" rel="noopener">Caddy reverse_proxy directive documentation&lt;/a> &amp;ndash; official reference for the Caddyfile reverse proxy used to terminate HTTPS in front of Vaultwarden.&lt;/li>
&lt;li>&lt;a href="https://pve.proxmox.com/wiki/Linux_Container" rel="noopener">Proxmox VE wiki: Linux Container&lt;/a> &amp;ndash; official Proxmox documentation on creating and configuring the LXC this guide runs Vaultwarden in.&lt;/li>
&lt;li>&lt;a href="https://bitwarden.com/help/data-storage/" rel="noopener">Bitwarden data storage documentation&lt;/a> &amp;ndash; official Bitwarden reference on client-side encryption and the local vault cache that backs the clients you point at Vaultwarden.&lt;/li>
&lt;/ul></description></item><item><title>UPS Runtime Calculator</title><link>https://techfuelhq.com/tools/ups-runtime-calculator/</link><pubDate>Fri, 29 May 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tools/ups-runtime-calculator/</guid><description>&lt;h2 id="how-to-use-this-calculator">How to use this calculator&lt;/h2>
&lt;p>Enter your total system load in watts — use your actual measured draw or the output from the &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">Power &amp;amp; Cost Calculator&lt;/a> if you&amp;rsquo;ve already built your system profile there. Then either select a UPS model from the presets or enter your UPS VA and watt ratings manually.&lt;/p>
&lt;p>The runtime estimate assumes a standard sealed lead-acid battery in good condition (under 2 years old). Battery age is the largest variable in real-world UPS performance.&lt;/p>
&lt;h2 id="understanding-the-results">Understanding the results&lt;/h2>
&lt;p>&lt;strong>Est. minutes&lt;/strong> is calculated using the standard lead-acid energy model: battery capacity (Wh) × inverter efficiency ÷ load (W), adjusted for the Peukert effect at higher load fractions. At light loads (under 30% of rated watts), the battery&amp;rsquo;s actual capacity is higher than the nominal spec; at heavy loads, it&amp;rsquo;s lower.&lt;/p>
&lt;p>&lt;strong>% of capacity&lt;/strong> is your load divided by the UPS watt rating. This is the number to watch. Stay under 80%; aim for under 50%.&lt;/p>
&lt;p>&lt;strong>Headroom&lt;/strong> is watts remaining before you hit the UPS&amp;rsquo;s rated limit. This matters for inrush current — hard drives and GPUs can draw 2–3× their steady-state wattage at startup. A UPS at 90% capacity during steady-state may trip at startup of a large GPU.&lt;/p>
&lt;h2 id="sizing-for-a-proxmox-homelab">Sizing for a Proxmox homelab&lt;/h2>
&lt;p>The rule I use: load the UPS to 50% of rated watts, target 10 minutes of runtime. That gives a comfortable shutdown window when combined with &lt;a href="https://techfuelhq.com/homelab/ups-power-sizing-homelab-2026/">NUT (Network UPS Tools)&lt;/a> configured for automatic VM shutdown.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Homelab config&lt;/th>
&lt;th scope="col">Idle draw&lt;/th>
&lt;th scope="col">Recommended UPS&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>N100 mini PC + switch&lt;/td>
&lt;td>20–30W&lt;/td>
&lt;td>650VA / 390W (CP650E)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2× mini PC + NAS + switch&lt;/td>
&lt;td>60–90W&lt;/td>
&lt;td>1000VA / 600W (CP1000PFCLCD)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Tower server + NAS + switch&lt;/td>
&lt;td>150–220W&lt;/td>
&lt;td>1500VA / 900W (CP1500PFCLCD)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Tower + GPU + NAS + network&lt;/td>
&lt;td>280–400W&lt;/td>
&lt;td>2200VA / 1320W (CP2200PFCLCD)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The CyberPower PFC series (PFCLCD suffix) outputs pure sine wave — required for active PFC power supplies. Do not buy a simulated-sine UPS for homelab hardware.&lt;/p>
&lt;h2 id="battery-replacement-math">Battery replacement math&lt;/h2>
&lt;p>The battery is a consumable. CyberPower and APC replacement batteries run $25–50 for the 1500VA class and typically need replacement every 3–5 years. Factor that into your TCO: a $150 UPS plus one battery replacement over 5 years is a $175–200 5-year cost, not $150.&lt;/p>
&lt;p>You can verify battery condition any time with &lt;code>upsc&lt;/code> (NUT) or your UPS&amp;rsquo;s self-test button. A UPS that fails its self-test or reports low battery capacity is overdue for a replacement cell.&lt;/p>
&lt;h2 id="what-this-calculator-does-not-cover">What this calculator does not cover&lt;/h2>
&lt;p>This is a runtime estimator for standard sealed lead-acid (VRLA) UPS units. Lithium-ion UPS units (CyberPower&amp;rsquo;s LX series, APC&amp;rsquo;s BX-Li series) have different discharge curves — flatter, higher capacity-to-weight — and will outperform the estimates here at the same VA rating. Extended-runtime models with external battery packs (APC SMT1500RM2U with APCRBC) are also outside the scope of this calculator&amp;rsquo;s model.&lt;/p>
&lt;p>For the full sizing methodology including VA/W math, line-interactive vs online double-conversion tradeoffs, NUT configuration, and battery replacement scheduling, see the &lt;a href="https://techfuelhq.com/homelab/ups-power-sizing-homelab-2026/">UPS and Power Sizing guide&lt;/a>.&lt;/p></description></item><item><title>Homelab Power &amp; Cost Calculator</title><link>https://techfuelhq.com/tools/power-cost-calculator/</link><pubDate>Wed, 27 May 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tools/power-cost-calculator/</guid><description>&lt;h2 id="how-to-use-this-calculator">How to use this calculator&lt;/h2>
&lt;p>Add each device in your homelab — mini PC, NAS, switches, GPU node, whatever is running 24/7 or close to it. For each device you need three numbers:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Idle watts&lt;/strong> — what the device draws when powered on but not under active load&lt;/li>
&lt;li>&lt;strong>Load watts&lt;/strong> — peak or typical-load draw while VMs are running, drives are spinning up, or the GPU is encoding&lt;/li>
&lt;li>&lt;strong>Hours per day at load&lt;/strong> — how many hours per day the device is actually under that higher load; the rest of the 24 hours is assumed idle&lt;/li>
&lt;/ul>
&lt;p>Hit any field and the results update instantly. The shareable URL captures your full configuration — bookmark it, share it, or come back later.&lt;/p>
&lt;h2 id="getting-accurate-watt-numbers">Getting accurate watt numbers&lt;/h2>
&lt;p>The presets are good starting points. They use representative figures from manufacturer specs and community measurements. But &amp;ldquo;representative&amp;rdquo; is not the same as &amp;ldquo;your unit specifically.&amp;rdquo;&lt;/p>
&lt;p>&lt;strong>Best method: Kill-A-Watt meter.&lt;/strong> The &lt;a href="https://p3international.com/products/p4400.html" rel="noopener">P3 P4400 ES&lt;/a> runs about $30 and reads wattage in real time. Plug your device in, let it boot and settle for 5–10 minutes, then read idle watts. Kick off a benchmark or a Proxmox backup job and read load watts. This gives you actual measured draw for your specific hardware revision.&lt;/p>
&lt;p>&lt;strong>Second-best: manufacturer TDP and idle specs.&lt;/strong> Mini PC makers like Beelink and MINISFORUM publish TDP figures on product pages. These are typically accurate for load draw but often optimistic for idle — the chip TDP doesn&amp;rsquo;t account for the platform, storage, or RAM. Add 5–10W to manufacturer idle figures if you want a conservative estimate.&lt;/p>
&lt;p>&lt;strong>TechFuel HQ dataset.&lt;/strong> The site&amp;rsquo;s GPU dataset page at &lt;a href="https://techfuelhq.com/data/">/data/&lt;/a> publishes measured power draw for the RTX 5080 and other hardware I&amp;rsquo;ve tested directly. Those figures are from real measurements, not spec sheets.&lt;/p>
&lt;p>&lt;strong>What &amp;ldquo;idle&amp;rdquo; means here.&lt;/strong> Idle means powered on, OS loaded, services running, but not under active workload. For Proxmox this means VMs are running but not doing much. For a NAS this means drives have spun up and the array is mounted but not actively transferring. True power-off is not useful here — you want 24/7 operating cost, which is exactly &lt;a href="https://techfuelhq.com/homelab/24-7-homelab-idle-power-costs-2026/">what always-on idle draw adds up to over a year&lt;/a>.&lt;/p>
&lt;h2 id="understanding-the-outputs">Understanding the outputs&lt;/h2>
&lt;p>&lt;strong>Peak Draw (W)&lt;/strong> — the sum of all devices at simultaneous full load. This is what your UPS needs to handle and what determines which circuit breaker protects your rack. For UPS sizing, &lt;a href="https://techfuelhq.com/homelab/ups-power-sizing-homelab-2026/">add 20% headroom&lt;/a> to this number.&lt;/p>
&lt;p>&lt;strong>Annual kWh&lt;/strong> — total energy consumed per year across all devices. This is the number that maps directly to your utility bill. Formula: for each device, &lt;code>((idle_W × (24 − hrs)) + (load_W × hrs)) × 365 / 1000&lt;/code>.&lt;/p>
&lt;p>&lt;strong>Monthly cost / Annual cost&lt;/strong> — annual kWh times your rate, divided by 12 for the monthly figure. This is what the homelab adds to your electricity bill.&lt;/p>
&lt;p>&lt;strong>3-Year TCO&lt;/strong> — three years of electricity cost. Operating cost only — no hardware amortization. If you want full TCO, add your upfront hardware spend to this figure.&lt;/p>
&lt;p>&lt;strong>vs. Cloud delta&lt;/strong> — if you entered a cloud monthly equivalent (a VPS or hosted server you&amp;rsquo;d be paying instead), this shows the 3-year difference. Positive delta means homelab electricity is cheaper than cloud over three years. Negative means cloud wins on operating cost — though it usually ignores what you get: root access, no data egress fees, and the ability to run AI inference locally without paying per-token.&lt;/p>
&lt;h2 id="real-world-example-configurations">Real-world example configurations&lt;/h2>
&lt;p>These configs use measured and manufacturer figures. Plug them in manually or use the presets.&lt;/p>
&lt;h3 id="starter-stack-mini-pc--4-bay-nas">Starter stack: Mini PC + 4-bay NAS&lt;/h3>
&lt;p>The most common homelab entry point. A Beelink SEi12/N150-class mini PC running Proxmox plus a Synology or TrueNAS Scale unit on a 4-bay chassis.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Device&lt;/th>
&lt;th scope="col">Idle W&lt;/th>
&lt;th scope="col">Load W&lt;/th>
&lt;th scope="col">Hrs/day load&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Mini PC (Proxmox)&lt;/td>
&lt;td>18&lt;/td>
&lt;td>45&lt;/td>
&lt;td>4&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>4-Bay NAS (HDD)&lt;/td>
&lt;td>28&lt;/td>
&lt;td>60&lt;/td>
&lt;td>3&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>MikroTik hEX switch&lt;/td>
&lt;td>5&lt;/td>
&lt;td>5&lt;/td>
&lt;td>0&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>&lt;strong>At $0.13/kWh:&lt;/strong> ~$7/month, ~$84/year, ~$252 over 3 years. That&amp;rsquo;s what a basic homelab costs to run. Compare to the cheapest Linode/Vultr 2 vCPU / 4GB VPS at around $24/month — homelab wins at 3 years even before accounting for NAS capacity you&amp;rsquo;d otherwise pay Backblaze $9/month to access.&lt;/p>
&lt;h3 id="three-node-proxmox-cluster">Three-node Proxmox cluster&lt;/h3>
&lt;p>Three identical mini PCs forming a Proxmox VE quorum cluster. Typical setup for high-availability VMs.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Device&lt;/th>
&lt;th scope="col">Idle W&lt;/th>
&lt;th scope="col">Load W&lt;/th>
&lt;th scope="col">Hrs/day load&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Node 1 (Proxmox)&lt;/td>
&lt;td>20&lt;/td>
&lt;td>50&lt;/td>
&lt;td>6&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Node 2 (Proxmox)&lt;/td>
&lt;td>20&lt;/td>
&lt;td>45&lt;/td>
&lt;td>4&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Node 3 (Proxmox, lighter)&lt;/td>
&lt;td>18&lt;/td>
&lt;td>40&lt;/td>
&lt;td>2&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>4-Bay NAS (NVMe)&lt;/td>
&lt;td>18&lt;/td>
&lt;td>35&lt;/td>
&lt;td>4&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>MikroTik CRS305 10GbE&lt;/td>
&lt;td>8&lt;/td>
&lt;td>9&lt;/td>
&lt;td>0&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>&lt;strong>At $0.13/kWh:&lt;/strong> ~$17/month, ~$204/year. For a HA cluster running a dozen VMs plus shared storage, that is remarkably cheap. The 10GbE switch adds maybe $1/month.&lt;/p>
&lt;h3 id="gpu-workstation-ai-node">GPU workstation AI node&lt;/h3>
&lt;p>An RTX 5080-class machine used for local AI inference. This is the configuration my own rig runs — Ryzen 7 7800X3D, ROG STRIX B650-A, 64GB DDR5, ROG Astral RTX 5080 OC.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Device&lt;/th>
&lt;th scope="col">Idle W&lt;/th>
&lt;th scope="col">Load W&lt;/th>
&lt;th scope="col">Hrs/day load&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>GPU Workstation (idle)&lt;/td>
&lt;td>85&lt;/td>
&lt;td>420&lt;/td>
&lt;td>3&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>MikroTik switch&lt;/td>
&lt;td>7&lt;/td>
&lt;td>7&lt;/td>
&lt;td>0&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>&lt;strong>At $0.13/kWh:&lt;/strong> ~$14/month at 3 hrs/day GPU load, ~$168/year. Running Llama 3.3 70B locally on the RTX 5080 versus paying $0.002/1K tokens on a hosted API — if you&amp;rsquo;re generating 500K tokens/day, API costs run $30+/month. Local GPU inference pays back within a few months.&lt;/p>
&lt;h2 id="what-electricity-rate-to-use">What electricity rate to use&lt;/h2>
&lt;p>&lt;strong>Read your utility bill.&lt;/strong> Find the line that shows total kWh used and total charges for the month. Divide total charges by total kWh — that&amp;rsquo;s your effective rate including all fees and taxes.&lt;/p>
&lt;p>The US average was around $0.132/kWh as of Q1 2026 per the &lt;a href="https://www.eia.gov/electricity/monthly/" rel="noopener">EIA Electric Power Monthly&lt;/a>. But averages hide wide regional swings:&lt;/p>
&lt;ul>
&lt;li>Louisiana, Oklahoma, Arkansas: $0.09–0.11/kWh&lt;/li>
&lt;li>Missouri (where I&amp;rsquo;m at): ~$0.11–0.12/kWh&lt;/li>
&lt;li>New England, California: $0.20–0.30/kWh&lt;/li>
&lt;li>Hawaii: $0.38+/kWh&lt;/li>
&lt;/ul>
&lt;p>If you&amp;rsquo;re in a high-rate area, the cloud delta math tilts harder toward homelab for anything running 24/7. A 3-node cluster at $0.30/kWh costs $470/year in electricity — still well under what three comparable hosted nodes would run.&lt;/p>
&lt;p>&lt;strong>Time-of-use rates.&lt;/strong> If your utility offers TOU pricing, use your average blended rate, not the peak rate. Homelabs mostly run at base load overnight when off-peak rates apply.&lt;/p>
&lt;h2 id="sizing-a-ups-from-these-numbers">Sizing a UPS from these numbers&lt;/h2>
&lt;p>Once you have your Peak Draw figure, add 20% for safety margin, then check against the wattage rating (not VA) of any UPS you&amp;rsquo;re considering.&lt;/p>
&lt;p>The &lt;a href="https://techfuelhq.com/homelab/ups-power-sizing-homelab-2026/">UPS sizing guide&lt;/a> on this site covers the VA vs W distinction, runtime curves, how to read a load percentage chart, and how to wire NUT into Proxmox so VMs gracefully shut down when battery reaches 30%. Read that before buying, then estimate battery runtime for your exact load with the &lt;a href="https://techfuelhq.com/tools/ups-runtime-calculator/">UPS runtime calculator&lt;/a>.&lt;/p>
&lt;p>&lt;strong>Quick rule:&lt;/strong> Peak Draw × 1.2 = minimum UPS wattage rating — the same margin the &lt;a href="https://techfuelhq.com/tools/psu-wattage-calculator/">PSU calculator&lt;/a> applies when sizing a power supply for that peak. For the starter stack (73W peak), a CyberPower CP850PFCLCD (480W capacity) covers it with room to grow. For the GPU workstation (427W peak), you need at minimum a 1000W-class UPS — ideally 1500W for comfortable runtime.&lt;/p>
&lt;h2 id="budget-builder-connection">Budget Builder connection&lt;/h2>
&lt;p>The &lt;a href="https://techfuelhq.com/tools/budget-builder/">Budget Builder&lt;/a> covers upfront component cost — GPUs, NAS units, and networking gear filtered by budget and use case. Use it first to land on hardware, then come back here to model what that hardware actually costs to run. Together they give you full TCO: upfront spend plus electricity over the ownership window.&lt;/p>
&lt;p>For the homelab-vs-cloud comparison to be honest, pair the cloud delta here with the hardware cost from Budget Builder. That&amp;rsquo;s the real break-even calculation.&lt;/p></description></item><item><title>OPNsense on a Mini PC: Firewall Router Setup Guide (2026)</title><link>https://techfuelhq.com/tutorials/opnsense-mini-pc-setup-2026/</link><pubDate>Wed, 27 May 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tutorials/opnsense-mini-pc-setup-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-05-27 · ~15 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/tutorials/opnsense-mini-pc-setup-2026.svg" alt="OPNsense mini PC firewall topology: an ISP modem in bridge mode feeds the WAN port (igc0) where Suricata IDS/IPS inspects inbound traffic and the default rule blocks all inbound; the OPNsense box runs the pf firewall engine, Unbound DNS on port 53, and a DHCP server, serving the LAN gateway 192.168.0.1 to homelab devices including Proxmox nodes and a NAS." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>Your ISP&amp;rsquo;s combined modem/router is a black box with unknown firmware update schedules, weak default credentials, and no visibility into what&amp;rsquo;s happening on your network. OPNsense on a $150–300 mini PC gives you a fully open-source firewall, a real IDS/IPS system, proper VLAN support, and complete visibility — for less than a year of a commercial UTM subscription.&lt;/p>
&lt;p>Still weighing the two big FreeBSD firewalls first? Our &lt;a href="https://techfuelhq.com/networking/opnsense-vs-pfsense-2026/">OPNsense vs pfSense comparison&lt;/a> breaks down licensing, UI, plugins, and update cadence before you commit. This guide takes you from zero to a working OPNsense installation with DHCP, DNS, IDS, and your homelab devices connected.&lt;/p>
&lt;h2 id="hardware-requirements">Hardware requirements&lt;/h2>
&lt;p>OPNsense is FreeBSD-based and runs on x86-64 hardware. You need:&lt;/p>
&lt;p>&lt;strong>Minimum:&lt;/strong> 2-NIC machine, 2GB RAM, 8GB storage (a 16GB USB drive or SSD)&lt;/p>
&lt;p>&lt;strong>Recommended for homelab:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Protectli VP2420&lt;/strong> or &lt;strong>VP4630&lt;/strong> — 4× Intel i225 2.5GbE NICs, N6005 or N100 CPU, 4–8GB RAM, designed for this purpose. $200–350.&lt;/li>
&lt;li>&lt;strong>Topton N100 4-NIC box&lt;/strong> — similar to Protectli but cheaper Chinese equivalent. $100–180 on AliExpress/Amazon. Uses Intel i226 NICs which have driver quirks in FreeBSD — check OPNsense forum for current status before buying.&lt;/li>
&lt;li>&lt;strong>Any N100/N5105 mini PC + USB NIC&lt;/strong> — not recommended for main router (USB reliability), fine for testing.&lt;/li>
&lt;/ul>
&lt;p>For a homelab with gigabit internet and 8–16 devices, an N100 machine with 4GB RAM handles line-rate forwarding comfortably. IDS/IPS (Suricata) adds meaningful CPU load at high traffic rates — at 500Mbps sustained, an N100 handles basic IDS with 10–15% CPU.&lt;/p>
&lt;h2 id="step-1-download-and-install-opnsense">Step 1: Download and install OPNsense&lt;/h2>
&lt;p>Download the OPNsense ISO from &lt;a href="https://opnsense.org/download/" rel="noopener">opnsense.org/download&lt;/a>. Choose:&lt;/p>
&lt;ul>
&lt;li>Architecture: amd64&lt;/li>
&lt;li>Image type: dvd (for installation media)&lt;/li>
&lt;/ul>
&lt;p>Write to a USB drive:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Linux/macOS&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dd &lt;span style="color:#66d9ef">if&lt;/span>&lt;span style="color:#f92672">=&lt;/span>OPNsense-*.iso of&lt;span style="color:#f92672">=&lt;/span>/dev/sdX bs&lt;span style="color:#f92672">=&lt;/span>4M status&lt;span style="color:#f92672">=&lt;/span>progress
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Or use Balena Etcher on Windows.&lt;/p>
&lt;p>Boot your mini PC from the USB. OPNsense boots to a live environment. Log in as &lt;code>installer&lt;/code> / &lt;code>opnsense&lt;/code>.&lt;/p>
&lt;p>The installer (option 1 from the menu) asks:&lt;/p>
&lt;ol>
&lt;li>Keymap — US unless you&amp;rsquo;re on a different layout&lt;/li>
&lt;li>Install mode — ZFS (recommended for hardware with NVMe/SSD) or UFS&lt;/li>
&lt;li>Target disk — your main storage device&lt;/li>
&lt;li>Partition scheme — GPT (UEFI) for modern hardware&lt;/li>
&lt;/ol>
&lt;p>Installation takes 2–5 minutes. Remove the USB when prompted and reboot.&lt;/p>
&lt;h2 id="step-2-initial-console-setup">Step 2: Initial console setup&lt;/h2>
&lt;p>After reboot, OPNsense boots to a console menu. Before touching the web UI:&lt;/p>
&lt;p>&lt;strong>Option 1: Assign interfaces.&lt;/strong> Tell OPNsense which physical NIC is WAN and which is LAN:&lt;/p>
&lt;pre tabindex="0">&lt;code>Do you want to configure VLANs now? [y/N]: N
Enter the WAN interface name: igc0 (or igb0, em0 — depends on your hardware)
Enter the LAN interface name: igc1
&lt;/code>&lt;/pre>&lt;p>The NIC names shown are from FreeBSD drivers:&lt;/p>
&lt;ul>
&lt;li>&lt;code>igc&lt;/code> — Intel i225/i226 (common in modern mini PCs)&lt;/li>
&lt;li>&lt;code>igb&lt;/code> — Intel i210/i211/i350 (older enterprise NICs)&lt;/li>
&lt;li>&lt;code>em&lt;/code> — Intel older NICs&lt;/li>
&lt;li>&lt;code>re&lt;/code> — Realtek (avoid for WAN if possible — driver reliability)&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Option 2: Set interface IPs.&lt;/strong> OPNsense defaults to &lt;code>192.168.1.1&lt;/code> for LAN. If your current network uses &lt;code>192.168.1.x&lt;/code>, change LAN to &lt;code>192.168.0.1&lt;/code> to avoid conflicts:&lt;/p>
&lt;pre tabindex="0">&lt;code>Configure IPv4 address LAN interface via DHCP? No
Enter new LAN IPv4 address: 192.168.0.1
Enter new LAN IPv4 subnet bit count: 24
&lt;/code>&lt;/pre>&lt;p>After setting the LAN IP, OPNsense shows the web UI URL: &lt;code>https://192.168.0.1&lt;/code>.&lt;/p>
&lt;p>If you&amp;rsquo;re sizing the LAN or carving it into VLANs, the &lt;a href="https://techfuelhq.com/tools/subnet-cidr-calculator/">subnet &amp;amp; CIDR calculator&lt;/a> gives you the usable host range, mask, and broadcast address for any prefix — a &lt;code>/24&lt;/code> here is 254 usable hosts, a &lt;code>/25&lt;/code> splits that into two 126-host segments.&lt;/p>
&lt;h2 id="step-3-first-login-and-basic-configuration">Step 3: First login and basic configuration&lt;/h2>
&lt;p>Connect a laptop to the LAN port of your OPNsense machine. Open &lt;code>https://192.168.0.1&lt;/code> in a browser. Accept the self-signed certificate warning.&lt;/p>
&lt;p>Default credentials: &lt;code>root&lt;/code> / &lt;code>opnsense&lt;/code>&lt;/p>
&lt;p>The setup wizard runs automatically:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>General&lt;/strong> — set hostname (&lt;code>opnsense&lt;/code>), domain (&lt;code>lan&lt;/code>), DNS servers (leave blank to use the DNS resolver, or set to &lt;code>1.1.1.1, 8.8.8.8&lt;/code>)&lt;/li>
&lt;li>&lt;strong>Time&lt;/strong> — set timezone and enable NTP&lt;/li>
&lt;li>&lt;strong>WAN&lt;/strong> — set WAN type based on your ISP:
&lt;ul>
&lt;li>DHCP: ISP assigns IP dynamically (most cable/fiber)&lt;/li>
&lt;li>PPPoE: DSL, fiber with separate modem (enter ISP username/password)&lt;/li>
&lt;li>Static: if your ISP gave you a fixed IP&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>LAN&lt;/strong> — confirm your LAN IP and subnet (the one you set in console)&lt;/li>
&lt;li>&lt;strong>Password&lt;/strong> — change the root password&lt;/li>
&lt;/ol>
&lt;p>After completing the wizard, your internet connection should be working. Test: &lt;code>System → Diagnostics → Ping → ping 8.8.8.8&lt;/code> from the WAN interface.&lt;/p>
&lt;h2 id="step-4-configure-dhcp">Step 4: Configure DHCP&lt;/h2>
&lt;p>Go to &lt;code>Services → DHCPv4 → [LAN]&lt;/code>:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Enable:&lt;/strong> checked&lt;/li>
&lt;li>&lt;strong>Range:&lt;/strong> set the DHCP pool (e.g., 192.168.0.100 to 192.168.0.199, leaving .1–.99 for static IPs)&lt;/li>
&lt;li>&lt;strong>DNS Servers:&lt;/strong> leave blank to use OPNsense&amp;rsquo;s built-in resolver, or enter your Pi-hole IP&lt;/li>
&lt;/ul>
&lt;p>Under &lt;strong>DHCP Static Mappings&lt;/strong>, add entries for devices you want fixed IPs (your Proxmox nodes, NAS, printers):&lt;/p>
&lt;ul>
&lt;li>Enter the MAC address and the IP you want to assign&lt;/li>
&lt;li>Optionally set hostname — makes OPNsense&amp;rsquo;s logs more readable&lt;/li>
&lt;/ul>
&lt;h2 id="step-5-dns--unbound-resolver">Step 5: DNS — Unbound resolver&lt;/h2>
&lt;p>OPNsense includes Unbound DNS Resolver, which handles DNS resolution locally rather than forwarding everything to your ISP&amp;rsquo;s resolver.&lt;/p>
&lt;p>Go to &lt;code>Services → Unbound DNS&lt;/code>:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Enable:&lt;/strong> checked&lt;/li>
&lt;li>&lt;strong>Listen Port:&lt;/strong> 53&lt;/li>
&lt;li>&lt;strong>Network Interfaces:&lt;/strong> LAN (and any VLANs you create)&lt;/li>
&lt;li>&lt;strong>DNSSEC:&lt;/strong> enable for DNS validation&lt;/li>
&lt;/ul>
&lt;p>Under &lt;strong>Query Forwarding&lt;/strong> (optional): if you want DNS queries forwarded to a specific server (Pi-hole, NextDNS, Quad9) rather than resolved locally by Unbound, add forwarders here. Without forwarders, Unbound resolves recursively from root servers — this is the most private option.&lt;/p>
&lt;p>&lt;strong>Local host overrides.&lt;/strong> Under &lt;code>Unbound DNS → Host Overrides&lt;/code>, add entries for local services:&lt;/p>
&lt;pre tabindex="0">&lt;code>pve01 lan 192.168.0.10
pve02 lan 192.168.0.11
nas01 lan 192.168.0.20
&lt;/code>&lt;/pre>&lt;p>Now &lt;code>pve01.lan&lt;/code> resolves to &lt;code>192.168.0.10&lt;/code> from any device on your network.&lt;/p>
&lt;h2 id="step-6-enable-idsips-with-suricata">Step 6: Enable IDS/IPS with Suricata&lt;/h2>
&lt;p>OPNsense includes Suricata for intrusion detection and prevention (IDS/IPS). Installing it adds deep packet inspection that flags and optionally blocks known malicious traffic patterns.&lt;/p>
&lt;p>Install Suricata: &lt;code>System → Firmware → Plugins → search &amp;quot;os-suricata&amp;quot; → Install&lt;/code>&lt;/p>
&lt;p>After install, go to &lt;code>Services → Intrusion Detection&lt;/code>:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Enable:&lt;/strong> checked&lt;/li>
&lt;li>&lt;strong>IPS mode:&lt;/strong> checked (actually blocks threats, not just alerts — start with unchecked/detection-only for a week to see what it flags)&lt;/li>
&lt;li>&lt;strong>Interfaces:&lt;/strong> WAN (intrude detection on inbound traffic)&lt;/li>
&lt;li>&lt;strong>Pattern matcher:&lt;/strong> Hyperscan (fastest, requires AVX2 — check your CPU supports it), or AC-BS for compatibility&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Rulesets.&lt;/strong> Under the Download tab, enable:&lt;/p>
&lt;ul>
&lt;li>ET Open (Emerging Threats Open) — free, good coverage&lt;/li>
&lt;li>ET Pro Telemetry (free tier) — better coverage, requires registration&lt;/li>
&lt;/ul>
&lt;p>After enabling rulesets, click Download &amp;amp; Update Rules.&lt;/p>
&lt;p>Under the Rules tab, you&amp;rsquo;ll see thousands of individual rules. Start with all enabled and tune from there as you see false positives. Most home network traffic won&amp;rsquo;t trigger legitimate rules.&lt;/p>
&lt;p>&lt;strong>Schedule updates.&lt;/strong> Under Schedule, set Suricata to update rules daily. Threat intelligence is only useful if it&amp;rsquo;s current.&lt;/p>
&lt;h2 id="step-7-firewall-rules-review">Step 7: Firewall rules review&lt;/h2>
&lt;p>OPNsense&amp;rsquo;s default ruleset after setup:&lt;/p>
&lt;ul>
&lt;li>WAN: block all inbound (correct)&lt;/li>
&lt;li>LAN: allow all outbound (permissive default)&lt;/li>
&lt;/ul>
&lt;p>For a homelab, the default LAN rule (allow all) is usually fine to start. Tighten it after you understand your traffic patterns:&lt;/p>
&lt;p>&lt;strong>Block private RFC1918 ranges on WAN&lt;/strong> (should be auto-configured but verify):&lt;/p>
&lt;p>&lt;code>Firewall → Rules → WAN&lt;/code> → look for &amp;ldquo;Block private networks&amp;rdquo; rule. OPNsense adds this automatically when you run the setup wizard.&lt;/p>
&lt;p>&lt;strong>Add a rule to block IoT devices from reaching your main LAN&lt;/strong> (after setting up VLANs — see the &lt;a href="https://techfuelhq.com/tutorials/vlans-homelab-2026/">VLAN guide&lt;/a>):&lt;/p>
&lt;ul>
&lt;li>Source: IoT_VLAN net&lt;/li>
&lt;li>Destination: LAN net&lt;/li>
&lt;li>Action: Block&lt;/li>
&lt;/ul>
&lt;h2 id="step-8-connect-your-homelab">Step 8: Connect your homelab&lt;/h2>
&lt;p>With OPNsense handling DHCP and DNS, connect your Proxmox nodes, NAS, and other homelab devices to the LAN port&amp;rsquo;s switch. They&amp;rsquo;ll get IPs from OPNsense&amp;rsquo;s DHCP pool and use OPNsense as their gateway.&lt;/p>
&lt;p>Set static DHCP mappings for your homelab nodes so their IPs don&amp;rsquo;t change. In Proxmox, set the gateway on each node&amp;rsquo;s network config to OPNsense&amp;rsquo;s LAN IP.&lt;/p>
&lt;p>Check connectivity: from a Proxmox node, &lt;code>ping 1.1.1.1&lt;/code> should succeed through OPNsense&amp;rsquo;s WAN. &lt;code>ping pve02.lan&lt;/code> should resolve and succeed through Unbound.&lt;/p>
&lt;h2 id="ongoing-maintenance">Ongoing maintenance&lt;/h2>
&lt;p>OPNsense pushes updates frequently. Apply them under &lt;code>System → Firmware → Updates&lt;/code>. Security patches often come weekly. Unlike pfSense Plus, OPNsense community edition has no paywall on updates.&lt;/p>
&lt;p>&lt;strong>Backups.&lt;/strong> Export OPNsense config: &lt;code>System → Configuration → Backups → Download&lt;/code>. Store this off the firewall — if the unit fails, you can restore the full config to a new box in minutes.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Once OPNsense is routing your homelab, set up &lt;a href="https://techfuelhq.com/tutorials/vlans-homelab-2026/">VLANs&lt;/a> to isolate IoT devices from your main network. &lt;a href="https://techfuelhq.com/tutorials/adguard-home-local-dns-proxmox-2026/">AdGuard Home + Local DNS&lt;/a> pairs naturally with OPNsense — run AdGuard in an LXC and point OPNsense&amp;rsquo;s DHCP DNS setting at it for network-wide ad blocking and local hostname resolution. OPNsense&amp;rsquo;s built-in WireGuard plugin (&lt;a href="https://techfuelhq.com/tutorials/wireguard-self-hosted-vpn-proxmox-2026/">WireGuard self-hosted VPN guide&lt;/a>) gives you remote access without a separate VPN host. The &lt;a href="https://techfuelhq.com/networking/homelab-firewall-router-stack-2026/">homelab firewall stack guide&lt;/a> covers the broader architecture decision between OPNsense, pfSense, and MikroTik.&lt;/em>&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://docs.opnsense.org/manual/install.html" rel="noopener">OPNsense Initial Installation&lt;/a> &amp;ndash; official install steps for architecture, image type, and console setup.&lt;/li>
&lt;li>&lt;a href="https://docs.opnsense.org/manual/ips.html" rel="noopener">OPNsense Intrusion Prevention (Suricata)&lt;/a> &amp;ndash; official IDS/IPS docs for the Suricata-based engine, rulesets, and IPS mode.&lt;/li>
&lt;li>&lt;a href="https://docs.opnsense.org/manual/unbound.html" rel="noopener">OPNsense Unbound DNS&lt;/a> &amp;ndash; official reference for the recursive resolver, host overrides, and query forwarding.&lt;/li>
&lt;li>&lt;a href="https://docs.opnsense.org/manual/how-tos/wireguard-client.html" rel="noopener">OPNsense WireGuard Road Warrior Setup&lt;/a> &amp;ndash; official how-to for the native WireGuard remote-access VPN.&lt;/li>
&lt;/ul></description></item><item><title>WireGuard Self-Hosted VPN on Proxmox (2026 Setup Guide)</title><link>https://techfuelhq.com/tutorials/wireguard-self-hosted-vpn-proxmox-2026/</link><pubDate>Wed, 27 May 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tutorials/wireguard-self-hosted-vpn-proxmox-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-05-27 · ~11 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/tutorials/wireguard-self-hosted-vpn-proxmox-2026.svg" alt="Network topology diagram: remote phone (10.10.0.2) and laptop (10.10.0.3) WireGuard clients connect over UDP 51820 through a DuckDNS endpoint and router port forward to a WireGuard LXC (192.168.1.7, VPN gateway 10.10.0.1/24) on a Proxmox VE 8 host, reaching home LAN 192.168.1.0/24 and AdGuard Home DNS (192.168.1.5), with split-tunnel vs full-tunnel AllowedIPs options" width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>Tailscale is easier. If you want the 15-minute path to remote access, the &lt;a href="https://techfuelhq.com/tutorials/tailscale-remote-access-homelab-2026/">Tailscale tutorial&lt;/a> is the right read. WireGuard is for when you want zero coordinator: your server, your key pair, no third-party knowing which clients are connected. (Weighing WireGuard against OpenVPN instead? See &lt;a href="https://techfuelhq.com/networking/wireguard-vs-openvpn-homelab-2026/">the protocol comparison&lt;/a>.)&lt;/p>
&lt;p>This guide sets up a WireGuard server in a Proxmox LXC container, generates client configs for phones and laptops, and covers the split vs full tunnel decision.&lt;/p>
&lt;h2 id="what-youll-have-at-the-end">What you&amp;rsquo;ll have at the end&lt;/h2>
&lt;ul>
&lt;li>WireGuard server running in a Proxmox LXC, listening on UDP port 51820&lt;/li>
&lt;li>Clients (phone, laptop) that can reach your homelab from anywhere&lt;/li>
&lt;li>Your choice of split tunnel (access homelab only) or full tunnel (all traffic through home)&lt;/li>
&lt;li>Dynamic DNS hostname so it works when your home IP changes&lt;/li>
&lt;/ul>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;ul>
&lt;li>Proxmox VE 8 host on a home network with internet access&lt;/li>
&lt;li>A port forward on your router: UDP 51820 → your WireGuard LXC IP&lt;/li>
&lt;li>Optionally: a DuckDNS or Cloudflare DNS hostname for your home IP&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Verify WireGuard kernel module on the host:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># On the Proxmox host (not inside an LXC)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>lsmod | grep wireguard
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Should show: wireguard&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># If not, load it:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>modprobe wireguard
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>echo &lt;span style="color:#e6db74">&amp;#34;wireguard&amp;#34;&lt;/span> &amp;gt;&amp;gt; /etc/modules
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="step-1-create-the-lxc-container">Step 1: Create the LXC container&lt;/h2>
&lt;p>In Proxmox web UI → Create CT:&lt;/p>
&lt;pre tabindex="0">&lt;code>Hostname: wireguard
Template: Debian 12 (bookworm)
Storage: 4GB disk
RAM: 256MB
vCPU: 1
Network: Static IP (e.g., 192.168.1.7/24)
Privileged: yes (simplest for net_admin capability)
&lt;/code>&lt;/pre>&lt;p>Start the container, then inside it:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>apt update &lt;span style="color:#f92672">&amp;amp;&amp;amp;&lt;/span> apt install -y wireguard qrencode
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="step-2-generate-server-key-pair">Step 2: Generate server key pair&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Inside the WireGuard LXC&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cd /etc/wireguard
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>umask &lt;span style="color:#ae81ff">077&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Generate server private and public keys&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>wg genkey | tee server_private.key | wg pubkey &amp;gt; server_public.key
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cat server_private.key
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cat server_public.key
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Keep &lt;code>server_private.key&lt;/code> secure — anyone with the private key can decrypt traffic.&lt;/p>
&lt;h2 id="step-3-create-the-server-config">Step 3: Create the server config&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>nano /etc/wireguard/wg0.conf
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-ini" data-lang="ini">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[Interface]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># The WireGuard server&amp;#39;s IP on the VPN subnet&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">Address&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">10.10.0.1/24&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">ListenPort&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">51820&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">PrivateKey&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;lt;paste server_private.key here&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Enable IP forwarding and NAT for client traffic&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">PostUp&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">PostDown&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Clients are added below as [Peer] blocks&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The &lt;code>Address = 10.10.0.1/24&lt;/code> line defines the VPN subnet, and every client&amp;rsquo;s &lt;code>AllowedIPs&lt;/code> (your LAN such as &lt;code>192.168.1.0/24&lt;/code>, or &lt;code>0.0.0.0/0&lt;/code> for full-tunnel) is also a CIDR block. The &lt;a href="https://techfuelhq.com/tools/subnet-cidr-calculator/">subnet &amp;amp; CIDR calculator&lt;/a> makes it easy to get those masks and host ranges right — and to pick a VPN subnet that won&amp;rsquo;t overlap the LAN you&amp;rsquo;re routing to.&lt;/p>
&lt;p>The &lt;code>10.10.0.0/24&lt;/code> subnet is the WireGuard VPN subnet — separate from your home LAN (&lt;code>192.168.1.0/24&lt;/code>). The server gets &lt;code>10.10.0.1&lt;/code>; clients get &lt;code>10.10.0.2&lt;/code>, &lt;code>10.10.0.3&lt;/code>, etc.&lt;/p>
&lt;p>&lt;strong>Enable IP forwarding:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>echo &lt;span style="color:#e6db74">&amp;#34;net.ipv4.ip_forward=1&amp;#34;&lt;/span> &amp;gt;&amp;gt; /etc/sysctl.conf
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sysctl -p
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Start and enable WireGuard:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>systemctl enable --now wg-quick@wg0
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Verify&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>wg show
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="step-4-generate-client-configs">Step 4: Generate client configs&lt;/h2>
&lt;p>For each client (phone, laptop, etc.) generate a key pair and config. Do this on the server for convenience:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Generate client keys (do this for each client)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>wg genkey | tee client1_private.key | wg pubkey &amp;gt; client1_public.key
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cat client1_private.key &lt;span style="color:#75715e"># goes in the client config&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cat client1_public.key &lt;span style="color:#75715e"># goes in the server config as a [Peer]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Client config&lt;/strong> (save to a file or display as QR code):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-ini" data-lang="ini">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[Interface]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">Address&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">10.10.0.2/32&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">PrivateKey&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;lt;client1_private.key&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">DNS&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">192.168.1.5 # your AdGuard Home IP, or 1.1.1.1 if not running AdGuard&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[Peer]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># The WireGuard server&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">PublicKey&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;lt;server_public.key&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">Endpoint&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">your-home.duckdns.org:51820&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Split tunnel: access homelab only&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">AllowedIPs&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">192.168.1.0/24, 10.10.0.0/24&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Full tunnel: all traffic through home (uncomment instead)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># AllowedIPs = 0.0.0.0/0, ::/0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">PersistentKeepalive&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">25&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;code>PersistentKeepalive = 25&lt;/code> keeps the connection alive through NAT — without it, an idle connection behind NAT may drop after a few minutes.&lt;/p>
&lt;p>&lt;strong>Add the client to the server config:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Append to /etc/wireguard/wg0.conf on the server&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cat &amp;gt;&amp;gt; /etc/wireguard/wg0.conf &lt;span style="color:#e6db74">&amp;lt;&amp;lt; EOF
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">[Peer]
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"># Client 1 (phone)
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">PublicKey = &amp;lt;client1_public.key&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">AllowedIPs = 10.10.0.2/32
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">EOF&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Reload WireGuard (no downtime for other clients)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>wg syncconf wg0 &amp;lt;&lt;span style="color:#f92672">(&lt;/span>wg-quick strip wg0&lt;span style="color:#f92672">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Display the client config as a QR code&lt;/strong> (scan with the WireGuard app on iOS/Android):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Create the client config as a file first&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cat &amp;gt; /tmp/client1.conf &lt;span style="color:#e6db74">&amp;lt;&amp;lt; &amp;#39;EOF&amp;#39;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">[Interface]
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">Address = 10.10.0.2/32
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">PrivateKey = &amp;lt;client1_private.key&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">DNS = 192.168.1.5
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">[Peer]
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">PublicKey = &amp;lt;server_public.key&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">Endpoint = your-home.duckdns.org:51820
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">AllowedIPs = 192.168.1.0/24, 10.10.0.0/24
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">PersistentKeepalive = 25
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">EOF&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>qrencode -t ansiutf8 &amp;lt; /tmp/client1.conf
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Or save as PNG:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>qrencode -t PNG -o /tmp/client1.png &amp;lt; /tmp/client1.conf
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Delete the client private key file from the server after you&amp;rsquo;ve scanned it — it should only exist on the client.&lt;/p>
&lt;h2 id="step-5-set-up-dynamic-dns">Step 5: Set up dynamic DNS&lt;/h2>
&lt;p>If your home IP changes (most residential ISPs assign dynamic IPs), use a free DDNS service:&lt;/p>
&lt;p>&lt;strong>DuckDNS (free, simple):&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>Go to duckdns.org, create an account, create a domain: &lt;code>yourname.duckdns.org&lt;/code>&lt;/li>
&lt;li>Create an update script:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>mkdir -p /opt/duckdns
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cat &amp;gt; /opt/duckdns/duck.sh &lt;span style="color:#e6db74">&amp;lt;&amp;lt; &amp;#39;EOF&amp;#39;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">#!/bin/bash
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">echo url=&amp;#34;https://www.duckdns.org/update?domains=yourname&amp;amp;token=YOUR-TOKEN&amp;amp;ip=&amp;#34; | curl -k -o /opt/duckdns/duck.log -K -
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">EOF&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>chmod +x /opt/duckdns/duck.sh
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Add to cron — update every 5 minutes&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>echo &lt;span style="color:#e6db74">&amp;#34;*/5 * * * * root /opt/duckdns/duck.sh &amp;gt;/dev/null 2&amp;gt;&amp;amp;1&amp;#34;&lt;/span> &amp;gt;&amp;gt; /etc/cron.d/duckdns
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="3">
&lt;li>Use &lt;code>yourname.duckdns.org:51820&lt;/code> as the Endpoint in all your client configs.&lt;/li>
&lt;/ol>
&lt;h2 id="step-6-set-up-the-port-forward">Step 6: Set up the port forward&lt;/h2>
&lt;p>On your router (OPNsense, pfSense, or consumer firmware):&lt;/p>
&lt;ul>
&lt;li>Forward &lt;strong>UDP port 51820&lt;/strong> to your WireGuard LXC IP (&lt;code>192.168.1.7&lt;/code>)&lt;/li>
&lt;/ul>
&lt;p>In OPNsense: Firewall → NAT → Port Forward → Add:&lt;/p>
&lt;ul>
&lt;li>Interface: WAN&lt;/li>
&lt;li>Protocol: UDP&lt;/li>
&lt;li>Destination port: 51820&lt;/li>
&lt;li>Redirect target: 192.168.1.7, port 51820&lt;/li>
&lt;/ul>
&lt;h2 id="verify-the-connection">Verify the connection&lt;/h2>
&lt;p>On a client, after importing the config:&lt;/p>
&lt;ol>
&lt;li>Enable the WireGuard tunnel&lt;/li>
&lt;li>Check that you can reach the server: &lt;code>ping 10.10.0.1&lt;/code>&lt;/li>
&lt;li>For split tunnel: verify you can reach homelab devices: &lt;code>ping 192.168.1.2&lt;/code> (Proxmox host)&lt;/li>
&lt;li>For full tunnel: verify your exit IP: visit a &amp;ldquo;what is my IP&amp;rdquo; site — it should show your home IP&lt;/li>
&lt;/ol>
&lt;p>On the server, &lt;code>wg show&lt;/code> displays connected peers, their last handshake time, and transfer stats. A handshake within the last 3 minutes means the client is actively connected.&lt;/p>
&lt;h2 id="adding-adguard-home-as-vpn-dns">Adding AdGuard Home as VPN DNS&lt;/h2>
&lt;p>If you&amp;rsquo;re running &lt;a href="https://techfuelhq.com/tutorials/adguard-home-local-dns-proxmox-2026/">AdGuard Home for DNS filtering and local hostname resolution&lt;/a>, set it as the DNS in client configs:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-ini" data-lang="ini">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[Interface]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">DNS&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">192.168.1.5 # AdGuard Home IP&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This lets VPN clients:&lt;/p>
&lt;ul>
&lt;li>Resolve &lt;code>pve.lan&lt;/code>, &lt;code>nas.lan&lt;/code>, and other local hostnames&lt;/li>
&lt;li>Get DNS-level ad blocking while connected to the VPN&lt;/li>
&lt;li>Use AdGuard&amp;rsquo;s split DNS without a separate Tailscale configuration&lt;/li>
&lt;/ul>
&lt;h2 id="split-tunnel-vs-full-tunnel">Split tunnel vs full tunnel&lt;/h2>
&lt;p>&lt;strong>Split tunnel&lt;/strong> (&lt;code>AllowedIPs = 192.168.1.0/24, 10.10.0.0/24&lt;/code>):&lt;/p>
&lt;ul>
&lt;li>Only homelab traffic goes through the VPN&lt;/li>
&lt;li>Internet traffic uses the local connection at the client&amp;rsquo;s location&lt;/li>
&lt;li>Faster for general browsing; no impact on video streaming&lt;/li>
&lt;li>Can&amp;rsquo;t browse the web through your home IP&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Full tunnel&lt;/strong> (&lt;code>AllowedIPs = 0.0.0.0/0, ::/0&lt;/code>):&lt;/p>
&lt;ul>
&lt;li>All traffic routes through the WireGuard server and your home network&lt;/li>
&lt;li>Use your home IP as the exit node&lt;/li>
&lt;li>Useful on untrusted networks (airports, hotels) or for geo-unlocking&lt;/li>
&lt;li>Your home upload bandwidth becomes the internet speed limit for clients&lt;/li>
&lt;/ul>
&lt;p>For a homelab VPN where the goal is remote access to services, split tunnel is usually the right choice — it&amp;rsquo;s faster and doesn&amp;rsquo;t load your home upload connection with all internet traffic.&lt;/p>
&lt;h2 id="wireguard-vs-tailscale-the-honest-comparison">WireGuard vs Tailscale: the honest comparison&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">&lt;/th>
&lt;th scope="col">WireGuard (self-hosted)&lt;/th>
&lt;th scope="col">Tailscale&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Setup time&lt;/td>
&lt;td>30–60 min&lt;/td>
&lt;td>15 min&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Third-party dependency&lt;/td>
&lt;td>None&lt;/td>
&lt;td>Tailscale coordinator&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Works behind double NAT&lt;/td>
&lt;td>Requires port forward on one side&lt;/td>
&lt;td>Yes, fully automatic&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Client count&lt;/td>
&lt;td>Unlimited&lt;/td>
&lt;td>Generous device allowance, 6 free users&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Key management&lt;/td>
&lt;td>Manual&lt;/td>
&lt;td>Automatic&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ACLs / per-client rules&lt;/td>
&lt;td>Manual iptables&lt;/td>
&lt;td>Tailscale ACL policy&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Mobile app&lt;/td>
&lt;td>Official WireGuard app&lt;/td>
&lt;td>Tailscale app&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Local DNS integration&lt;/td>
&lt;td>Manual (set DNS per client)&lt;/td>
&lt;td>MagicDNS, automatic&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Tailscale wins on simplicity and NAT traversal. WireGuard wins on control, privacy (no coordinator logs), and flexibility (full tunnel, custom DNS, any subnet routing). For the full decision framework — including which one to pick behind CGNAT — see &lt;a href="https://techfuelhq.com/networking/tailscale-vs-wireguard-2026/">Tailscale vs WireGuard: which one should you actually run?&lt;/a>.&lt;/p>
&lt;p>If you have OPNsense already, it has a built-in WireGuard plugin that eliminates the need for a separate LXC container — it runs directly on the firewall and gets port forwarded automatically.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Running VLANs? See the &lt;a href="https://techfuelhq.com/tutorials/vlans-homelab-2026/">VLAN homelab guide&lt;/a> for segmenting your WireGuard clients from IoT and trusted LAN traffic. For OPNsense specifically, the &lt;a href="https://techfuelhq.com/tutorials/opnsense-mini-pc-setup-2026/">OPNsense mini PC setup guide&lt;/a> covers the WireGuard plugin under Firewall → WireGuard.&lt;/em>&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://www.wireguard.com/quickstart/" rel="noopener">WireGuard Quick Start&lt;/a> &amp;ndash; official guide for generating keys, configuring peers, endpoints, and PersistentKeepalive.&lt;/li>
&lt;li>&lt;a href="https://pve.proxmox.com/wiki/Linux_Container" rel="noopener">Proxmox VE Linux Container (LXC)&lt;/a> &amp;ndash; official wiki covering LXC creation, privileged vs unprivileged containers, and networking.&lt;/li>
&lt;li>&lt;a href="https://tailscale.com/kb/1151/what-is-tailscale" rel="noopener">Tailscale: What is Tailscale?&lt;/a> &amp;ndash; official overview of the coordination layer and WireGuard-based mesh, supporting the comparison section.&lt;/li>
&lt;li>&lt;a href="https://docs.opnsense.org/manual/how-tos/wireguard-client.html" rel="noopener">OPNsense WireGuard Road Warrior Setup&lt;/a> &amp;ndash; official documentation for the built-in WireGuard instance and client peers on the firewall.&lt;/li>
&lt;li>&lt;a href="https://www.duckdns.org/install.jsp" rel="noopener">DuckDNS Install&lt;/a> &amp;ndash; official setup page for the free dynamic DNS service used for the home endpoint.&lt;/li>
&lt;/ul></description></item><item><title>AdGuard Home + Local DNS on Proxmox (2026 Setup Guide)</title><link>https://techfuelhq.com/tutorials/adguard-home-local-dns-proxmox-2026/</link><pubDate>Tue, 26 May 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tutorials/adguard-home-local-dns-proxmox-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-05-26 · ~12 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/tutorials/adguard-home-local-dns-proxmox-2026.svg" alt="DNS topology diagram: LAN clients send port 53 queries to AdGuard Home running in a 256MB Debian LXC on Proxmox at 192.168.1.5, which blocks ads via AdGuard plus OISD lists, serves optional DHCP, and answers local .lan rewrites (pve.lan, nas.lan, portainer.lan, adguard.lan); unresolved queries forward to an optional Unbound recursive resolver reaching the DNS root servers, or to encrypted Quad9 and Cloudflare DNS-over-HTTPS upstreams." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>Every device on your home network hits a DNS resolver for every connection it makes. By default that resolver is whatever your ISP assigns, or whatever the router forwards to (usually 8.8.8.8). That means your ISP — or Google — sees every domain lookup from every device in your house, 24/7.&lt;/p>
&lt;p>Running AdGuard Home on Proxmox fixes this: DNS ad-blocking at the network level (no browser extension needed), local hostname resolution so &lt;code>homelab.lan&lt;/code> resolves without editing &lt;code>/etc/hosts&lt;/code>, and an optional Unbound backend that cuts out upstream resolvers entirely.&lt;/p>
&lt;h2 id="what-youll-have-at-the-end">What you&amp;rsquo;ll have at the end&lt;/h2>
&lt;ul>
&lt;li>AdGuard Home running in an LXC container, handling DNS for your whole network&lt;/li>
&lt;li>All ad/tracker/malware domains blocked before they hit your devices&lt;/li>
&lt;li>Local A records: &lt;code>nas.lan&lt;/code>, &lt;code>pve.lan&lt;/code>, &lt;code>portainer.lan&lt;/code> all resolve correctly&lt;/li>
&lt;li>DHCP served from AdGuard Home (optional) so new devices automatically use it&lt;/li>
&lt;li>Optional: Unbound recursive resolver so no upstream DNS provider sees your queries&lt;/li>
&lt;/ul>
&lt;h2 id="step-1-create-the-lxc-container">Step 1: Create the LXC container&lt;/h2>
&lt;p>In the Proxmox web UI → &lt;code>pve&lt;/code> node → &lt;code>Create CT&lt;/code>:&lt;/p>
&lt;pre tabindex="0">&lt;code>Hostname: adguard
Template: Debian 12 (bookworm)
Storage: 4GB disk
RAM: 256MB (512MB with Unbound)
vCPU: 1
Network: DHCP during setup, static IP after
Unprivileged: yes
&lt;/code>&lt;/pre>&lt;p>Once created, set a &lt;strong>static IP&lt;/strong> in the container&amp;rsquo;s network settings — this is the IP every device will use as its DNS. Example: &lt;code>192.168.1.5/24&lt;/code>, gateway &lt;code>192.168.1.1&lt;/code>. Restart the container after changing the IP.&lt;/p>
&lt;p>&lt;strong>Port 53 in an unprivileged container:&lt;/strong>&lt;/p>
&lt;p>Unprivileged containers can&amp;rsquo;t bind to ports ≤1024 by default. The cleanest fix is adding this to the container&amp;rsquo;s config file on the PVE host:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># On the PVE host, not inside the container&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>nano /etc/pve/lxc/&amp;lt;CTID&amp;gt;.conf
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Add these lines:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>lxc.cap.drop:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>lxc.cap.keep: net_bind_service
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Restart the container after this change. Alternatively, run a privileged container — the security difference is minimal for an isolated LXC with no internet exposure.&lt;/p>
&lt;h2 id="step-2-install-adguard-home">Step 2: Install AdGuard Home&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Inside the container&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>apt update &lt;span style="color:#f92672">&amp;amp;&amp;amp;&lt;/span> apt install -y curl
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Download and install AdGuard Home&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Verify it&amp;#39;s running&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>systemctl status AdGuardHome
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>AdGuard Home installs itself as a systemd service. The web UI starts on port 3000 for initial setup.&lt;/p>
&lt;h2 id="step-3-initial-setup-via-web-ui">Step 3: Initial setup via web UI&lt;/h2>
&lt;p>Open &lt;code>http://192.168.1.5:3000&lt;/code> (your container&amp;rsquo;s IP) in a browser. The setup wizard runs once:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Admin interface:&lt;/strong> Listen on All Interfaces, port 3000 (or 80 if you want cleaner access)&lt;/li>
&lt;li>&lt;strong>DNS server:&lt;/strong> Listen on All Interfaces, port 53&lt;/li>
&lt;li>&lt;strong>Create admin credentials&lt;/strong> — note these, there&amp;rsquo;s no password recovery&lt;/li>
&lt;li>Click &lt;strong>Next&lt;/strong> through to completion&lt;/li>
&lt;/ol>
&lt;p>After setup, the web UI moves to port 80 (or whatever you chose) and the DNS service listens on port 53.&lt;/p>
&lt;h2 id="step-4-configure-upstream-dns">Step 4: Configure upstream DNS&lt;/h2>
&lt;p>&lt;strong>Settings → DNS Settings → Upstream DNS Servers:&lt;/strong>&lt;/p>
&lt;pre tabindex="0">&lt;code>https://dns10.quad9.net/dns-query
https://cloudflare-dns.com/dns-query
&lt;/code>&lt;/pre>&lt;p>Quad9 blocks known malicious domains in addition to AdGuard&amp;rsquo;s blocklists. Cloudflare is the fallback. Both use DNS-over-HTTPS for encrypted upstream resolution.&lt;/p>
&lt;p>&lt;strong>Fallback DNS servers&lt;/strong> (used if upstreams fail):&lt;/p>
&lt;pre tabindex="0">&lt;code>1.1.1.1
9.9.9.9
&lt;/code>&lt;/pre>&lt;p>Under &lt;strong>DNS cache configuration&lt;/strong>, set cache size to &lt;code>4000000&lt;/code> (4MB) — the default 4MB is fine for a homelab.&lt;/p>
&lt;h2 id="step-5-add-blocklists">Step 5: Add blocklists&lt;/h2>
&lt;p>&lt;strong>Filters → DNS Blocklists → Add blocklist:&lt;/strong>&lt;/p>
&lt;p>The three lists that cover the vast majority of ad/tracker/malware domains without excessive false positives:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">List&lt;/th>
&lt;th scope="col">URL&lt;/th>
&lt;th scope="col">What it covers&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>AdGuard DNS filter&lt;/td>
&lt;td>(built-in)&lt;/td>
&lt;td>Ads, trackers, analytics&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>OISD Big&lt;/td>
&lt;td>&lt;code>https://big.oisd.nl/&lt;/code>&lt;/td>
&lt;td>Comprehensive malware/ads&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Steven Black Hosts&lt;/td>
&lt;td>&lt;code>https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts&lt;/code>&lt;/td>
&lt;td>Ads + social&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>&lt;strong>Start with AdGuard DNS filter + OISD.&lt;/strong> Add Steven Black if you want more aggressive blocking. The more blocklists you add, the more false positives you&amp;rsquo;ll encounter — most homelab users find 2–3 quality lists better than 20.&lt;/p>
&lt;h2 id="step-6-add-local-dns-records">Step 6: Add local DNS records&lt;/h2>
&lt;p>&lt;strong>Filters → DNS Rewrites:&lt;/strong>&lt;/p>
&lt;p>Add an A record for each service in your homelab:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Domain&lt;/th>
&lt;th scope="col">IP&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>pve.lan&lt;/code>&lt;/td>
&lt;td>192.168.1.2&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>nas.lan&lt;/code>&lt;/td>
&lt;td>192.168.1.3&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>portainer.lan&lt;/code>&lt;/td>
&lt;td>192.168.1.4&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>adguard.lan&lt;/code>&lt;/td>
&lt;td>192.168.1.5&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>uptime.lan&lt;/code>&lt;/td>
&lt;td>192.168.1.10&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>You can also add a wildcard for a subdomain: &lt;code>*.homelab.lan → 192.168.1.10&lt;/code> if you&amp;rsquo;re running Nginx Proxy Manager and want all services under one IP.&lt;/p>
&lt;h2 id="step-7-point-your-network-at-adguard-home">Step 7: Point your network at AdGuard Home&lt;/h2>
&lt;p>&lt;strong>If you control your router&amp;rsquo;s DHCP settings&lt;/strong> (OPNsense, pfSense, or most router firmware):&lt;/p>
&lt;p>Set the primary DNS to your AdGuard Home IP (&lt;code>192.168.1.5&lt;/code>). Leave secondary DNS blank or set it to &lt;code>9.9.9.9&lt;/code> as a fallback. Every DHCP client that renews their lease will start using AdGuard Home.&lt;/p>
&lt;p>&lt;strong>If you&amp;rsquo;re running VLANs&lt;/strong> (see the &lt;a href="https://techfuelhq.com/tutorials/vlans-homelab-2026/">VLAN homelab guide&lt;/a>), set the DNS per VLAN interface in your firewall. This lets you serve different upstream resolvers to different VLANs — useful for IoT VLANs that you want to block more aggressively.&lt;/p>
&lt;p>&lt;strong>If you&amp;rsquo;re using AdGuard Home as the DHCP server&lt;/strong> (alternative to router DHCP):&lt;/p>
&lt;p>&lt;strong>Settings → DHCP Settings:&lt;/strong> Enable DHCP, set the range and gateway. AdGuard Home will handle both DNS and DHCP in one service. Disable DHCP on your router first — running two DHCP servers on the same subnet causes address conflicts.&lt;/p>
&lt;h2 id="step-8-verify-everything-works">Step 8: Verify everything works&lt;/h2>
&lt;p>From any device on your network:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Should return your container&amp;#39;s IP (192.168.1.5)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>nslookup pve.lan
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># → 192.168.1.2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Should be blocked (returns 0.0.0.0 or NXDOMAIN)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>nslookup doubleclick.net
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># → 0.0.0.0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Should resolve (test a legitimate domain)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>nslookup github.com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># → 140.82.112.4 or similar&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The AdGuard Home dashboard shows live query stats — you&amp;rsquo;ll see devices by name, blocked query count, and which domains are being hit most.&lt;/p>
&lt;h2 id="optional-unbound-recursive-resolver">Optional: Unbound recursive resolver&lt;/h2>
&lt;p>Unbound is a validating recursive resolver. Instead of forwarding queries to Cloudflare or Quad9, it queries the DNS root servers directly and resolves domains itself. This eliminates upstream DNS providers seeing your query patterns.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Inside the LXC container&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>apt install -y unbound
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Minimal Unbound config for recursive resolution&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cat &amp;gt; /etc/unbound/unbound.conf &lt;span style="color:#e6db74">&amp;lt;&amp;lt; &amp;#39;EOF&amp;#39;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">server:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> verbosity: 0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> interface: 127.0.0.1
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> port: 5335
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> do-ip4: yes
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> do-ip6: no
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> do-udp: yes
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> do-tcp: yes
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> root-hints: &amp;#34;/etc/unbound/root.hints&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> harden-glue: yes
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> harden-dnssec-stripped: yes
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> use-caps-for-id: no
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> edns-buffer-size: 1232
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> prefetch: yes
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> num-threads: 1
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> cache-min-ttl: 0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> cache-max-ttl: 86400
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">EOF&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Download root hints (the list of DNS root servers)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>curl -o /etc/unbound/root.hints https://www.internic.net/domain/named.cache
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>systemctl enable --now unbound
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Then in AdGuard Home → DNS Settings → Upstream DNS Servers, replace the upstream with:&lt;/p>
&lt;pre tabindex="0">&lt;code>127.0.0.1:5335
&lt;/code>&lt;/pre>&lt;p>AdGuard Home now forwards to Unbound on localhost, and Unbound resolves directly from root servers. The &lt;a href="https://docs.pi-hole.net/guides/dns/unbound/" rel="noopener">Pi-hole + Unbound guide&lt;/a> by the Pi-hole project has the same concept and covers DNSSEC validation if you want to go further.&lt;/p>
&lt;h2 id="integrating-with-tailscale">Integrating with Tailscale&lt;/h2>
&lt;p>If you&amp;rsquo;re using &lt;a href="https://techfuelhq.com/tutorials/tailscale-remote-access-homelab-2026/">Tailscale for remote access&lt;/a>, you can enable AdGuard Home&amp;rsquo;s DNS from anywhere on your Tailscale network. In Tailscale&amp;rsquo;s admin console → DNS → Add nameserver → Custom, enter your AdGuard Home LXC&amp;rsquo;s Tailscale IP. All connected devices then use your homelab&amp;rsquo;s DNS even when they&amp;rsquo;re on remote networks.&lt;/p>
&lt;p>For &lt;code>.lan&lt;/code> domains specifically, set it as a &amp;ldquo;Split DNS&amp;rdquo; nameserver in Tailscale: restrict it to the &lt;code>.lan&lt;/code> domain so remote devices only hit your home DNS for local names, not for all queries.&lt;/p>
&lt;h2 id="common-issues">Common issues&lt;/h2>
&lt;p>&lt;strong>Clients not using AdGuard Home despite DHCP change:&lt;/strong> Renew their DHCP lease (&lt;code>ipconfig /release &amp;amp;&amp;amp; /renew&lt;/code> on Windows, &lt;code>dhclient -r &amp;amp;&amp;amp; dhclient&lt;/code> on Linux). Devices remember their old lease until it expires.&lt;/p>
&lt;p>&lt;strong>iOS/Android ignoring custom DNS:&lt;/strong> Modern mobile OS versions use their own encrypted DNS settings and bypass DHCP-provided DNS. Disable Private DNS on Android (Settings → Connections → More Connection Settings → Private DNS → Off). On iOS, go to Settings → Wi-Fi → (your network) → Configure DNS → Manual, add your AdGuard Home IP.&lt;/p>
&lt;p>&lt;strong>Port 53 already in use:&lt;/strong> On Ubuntu/Debian hosts, &lt;code>systemd-resolved&lt;/code> binds to port 53. Disable it: &lt;code>systemctl disable --now systemd-resolved&lt;/code> and delete &lt;code>/etc/resolv.conf&lt;/code>, then &lt;code>echo &amp;quot;nameserver 192.168.1.5&amp;quot; &amp;gt; /etc/resolv.conf&lt;/code>. This affects the container itself — only needed if you&amp;rsquo;re running AdGuard Home directly on the host rather than in LXC.&lt;/p>
&lt;p>&lt;strong>High CPU from Unbound:&lt;/strong> Root-based resolution does more work than forwarding. The first query to each domain takes longer; subsequent queries come from Unbound&amp;rsquo;s cache. If the container&amp;rsquo;s 1 vCPU is hitting 100% during initial warm-up, give it a few minutes — it settles once the most-queried domains are cached.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Running Docker Compose for your services? The &lt;a href="https://techfuelhq.com/tutorials/docker-compose-starter-stack-homelab-2026/">Docker Compose starter stack&lt;/a> includes Portainer for container management and Uptime Kuma for monitoring — AdGuard Home handles DNS for all of them. For VLAN-segmented networks, the &lt;a href="https://techfuelhq.com/tutorials/vlans-homelab-2026/">VLANs homelab guide&lt;/a> covers how to assign per-VLAN DNS servers so your IoT network can&amp;rsquo;t query your homelab hosts.&lt;/em>&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://github.com/AdguardTeam/AdGuardHome/wiki" rel="noopener">AdGuard Home Wiki&lt;/a> &amp;ndash; official install, DNS, DHCP, and encryption configuration reference&lt;/li>
&lt;li>&lt;a href="https://pve.proxmox.com/wiki/Linux_Container" rel="noopener">Proxmox VE Linux Container (LXC)&lt;/a> &amp;ndash; official guide to creating and configuring the LXC container that runs AdGuard Home&lt;/li>
&lt;li>&lt;a href="https://unbound.docs.nlnetlabs.nl/en/latest/" rel="noopener">Unbound documentation (NLnet Labs)&lt;/a> &amp;ndash; official reference for the recursive resolver backend and its config options&lt;/li>
&lt;li>&lt;a href="https://docs.pi-hole.net/guides/dns/unbound/" rel="noopener">Pi-hole: Unbound recursive resolver guide&lt;/a> &amp;ndash; official walkthrough of the same DNS-to-root-servers setup and DNSSEC validation&lt;/li>
&lt;/ul></description></item><item><title>ZFS on Proxmox: Pool Setup, ARC Tuning, and Scrubs (2026)</title><link>https://techfuelhq.com/tutorials/zfs-proxmox-pool-setup-arc-tuning-2026/</link><pubDate>Tue, 26 May 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tutorials/zfs-proxmox-pool-setup-arc-tuning-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-05-26 · ~13 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/tutorials/zfs-proxmox-pool-setup-arc-tuning-2026.svg" alt="ZFS on Proxmox VE 8 storage architecture diagram: four 16TB Seagate IronWolf and WD Gold drives feed mirror or RAIDZ1 vdevs into the datapool zpool; host RAM is split into a 10GB ARC cache, 48GB VM RAM, and 6GB OS headroom; the pool hosts vm-disks (lz4), backups (zstd-3), media (off), and docker (lz4) datasets, with monthly systemd scrubs, sanoid snapshots, and zfs send replication to a remote host." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>The &lt;a href="https://techfuelhq.com/homelab/proxmox-truenas-unraid-storage-backend-2026/">ZFS storage backend comparison&lt;/a> covers the &lt;em>why&lt;/em> — topology tradeoffs, SLOG, special vdev, ARC theory. This is the &lt;em>how&lt;/em>: the actual commands to create a ZFS pool on Proxmox VE 8, configure ARC to not eat all your VM RAM, set up scrub schedules, and create datasets with sane defaults.&lt;/p>
&lt;h2 id="identify-your-drives">Identify your drives&lt;/h2>
&lt;p>Before running &lt;code>zpool create&lt;/code>, confirm you have the right devices:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>lsblk -o NAME,SIZE,TYPE,MOUNTPOINT,MODEL
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Or with drive serial numbers:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ls -la /dev/disk/by-id/ | grep -v part
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Use &lt;code>/dev/disk/by-id/&lt;/code> paths (not &lt;code>/dev/sda&lt;/code> style) in &lt;code>zpool create&lt;/code> — block device names like &lt;code>sda&lt;/code> can change after a reboot if drives are reordered, which can corrupt your pool label mapping. The by-id paths are stable across reboots.&lt;/p>
&lt;p>Example output you&amp;rsquo;d use:&lt;/p>
&lt;pre tabindex="0">&lt;code>ata-ST16000NM001G-2_ZR507B3X → 16TB Seagate IronWolf
ata-ST16000NM001G-2_ZR507B3Y → 16TB Seagate IronWolf
ata-WDC_WD161KRYZ-01_8DJNHXXX → 16TB WD Gold
ata-WDC_WD161KRYZ-01_8DJNHYYY → 16TB WD Gold
&lt;/code>&lt;/pre>&lt;h2 id="create-a-pool-common-topologies">Create a pool: common topologies&lt;/h2>
&lt;p>&lt;strong>2-disk mirror (minimum redundant pool):&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>zpool create -o ashift&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">12&lt;/span> &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> -O compression&lt;span style="color:#f92672">=&lt;/span>lz4 &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> -O atime&lt;span style="color:#f92672">=&lt;/span>off &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> -O xattr&lt;span style="color:#f92672">=&lt;/span>sa &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> datapool mirror &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> /dev/disk/by-id/ata-Disk1 &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> /dev/disk/by-id/ata-Disk2
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>4-disk mirror-of-mirrors (better IOPS, best redundancy per drive count):&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>zpool create -o ashift&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">12&lt;/span> &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> -O compression&lt;span style="color:#f92672">=&lt;/span>lz4 &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> -O atime&lt;span style="color:#f92672">=&lt;/span>off &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> -O xattr&lt;span style="color:#f92672">=&lt;/span>sa &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> datapool &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> mirror /dev/disk/by-id/ata-Disk1 /dev/disk/by-id/ata-Disk2 &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> mirror /dev/disk/by-id/ata-Disk3 /dev/disk/by-id/ata-Disk4
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>4-disk RAIDZ1 (maximum capacity, single-drive fault tolerance):&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>zpool create -o ashift&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">12&lt;/span> &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> -O compression&lt;span style="color:#f92672">=&lt;/span>lz4 &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> -O atime&lt;span style="color:#f92672">=&lt;/span>off &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> -O xattr&lt;span style="color:#f92672">=&lt;/span>sa &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> datapool raidz &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> /dev/disk/by-id/ata-Disk1 &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> /dev/disk/by-id/ata-Disk2 &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> /dev/disk/by-id/ata-Disk3 &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> /dev/disk/by-id/ata-Disk4
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>What these flags do:&lt;/strong>&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Flag&lt;/th>
&lt;th scope="col">What it does&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>-o ashift=12&lt;/code>&lt;/td>
&lt;td>Sets 4096-byte sector alignment. Use 12 for all drives made since ~2012. Use 13 for 8K-sector enterprise drives (check the datasheet).&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>-O compression=lz4&lt;/code>&lt;/td>
&lt;td>Dataset-level compression, on by default. Low overhead, meaningful ratios on text, logs, VM images.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>-O atime=off&lt;/code>&lt;/td>
&lt;td>Disables access time recording. Default behavior rewrites metadata on every file read — wasteful on a server.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>-O xattr=sa&lt;/code>&lt;/td>
&lt;td>Stores extended attributes in inodes instead of separate files. Significant performance improvement for Samba (SMB) workloads.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Verify the pool:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>zpool status
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>zpool list
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="add-the-pool-to-proxmox-storage">Add the pool to Proxmox storage&lt;/h2>
&lt;p>A pool created on the command line isn&amp;rsquo;t automatically usable as Proxmox storage for VMs. Register it:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Add as a storage backend in Proxmox&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>pvesm add zfspool datapool-storage &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --pool datapool &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --content rootdir,images &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --sparse &lt;span style="color:#ae81ff">1&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Or via the web UI: Datacenter → Storage → Add → ZFS. Point it at your new pool.&lt;/p>
&lt;h2 id="tune-zfs-arc-for-a-shared-host">Tune ZFS ARC for a shared host&lt;/h2>
&lt;p>This is the most important configuration step for anyone running VMs on Proxmox alongside ZFS.&lt;/p>
&lt;p>By default, OpenZFS uses up to 50% of total RAM for ARC. On a 64GB host, ARC can claim 32GB. Your VMs also need RAM. They do not share — ARC and VMs fight for the same pool, and ARC will not evict to free RAM for a VM that needs more (it does eventually, but slowly).&lt;/p>
&lt;p>&lt;strong>Set a hard ARC maximum:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Calculate your target. Leave enough for VMs + OS headroom.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Example for 64GB host running 48GB total VM RAM:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># 64GB - 48GB VMs - 6GB OS headroom = 10GB for ARC&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># 10 * 1024^3 = 10737418240&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>echo &lt;span style="color:#e6db74">&amp;#34;options zfs zfs_arc_max=10737418240&amp;#34;&lt;/span> &amp;gt; /etc/modprobe.d/zfs.conf
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>update-initramfs -u
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>You can also set it live without rebooting (does not persist across reboots):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>echo &lt;span style="color:#ae81ff">10737418240&lt;/span> &amp;gt; /sys/module/zfs/parameters/zfs_arc_max
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Check current ARC usage:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>arc_summary | head -50
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># or&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cat /proc/spl/kstat/zfs/arcstats | grep -E &lt;span style="color:#e6db74">&amp;#34;^(size|c_max|c_min|hits|misses)&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The &lt;a href="https://techfuelhq.com/tools/proxmox-capacity-planner/">Proxmox VM Capacity Planner&lt;/a> accounts for ZFS ARC when calculating how many VMs your host can run — toggle the ZFS option to see how ARC allocation affects VM count.&lt;/p>
&lt;p>&lt;strong>How much ARC to give a homelab host:&lt;/strong>&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Host RAM&lt;/th>
&lt;th scope="col">Total VM RAM&lt;/th>
&lt;th scope="col">Recommended ARC max&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>32GB&lt;/td>
&lt;td>20GB&lt;/td>
&lt;td>6GB (&lt;code>6442450944&lt;/code>)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>64GB&lt;/td>
&lt;td>48GB&lt;/td>
&lt;td>10GB (&lt;code>10737418240&lt;/code>)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>64GB&lt;/td>
&lt;td>32GB&lt;/td>
&lt;td>20GB (&lt;code>21474836480&lt;/code>)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>128GB&lt;/td>
&lt;td>80GB&lt;/td>
&lt;td>32GB (&lt;code>34359738368&lt;/code>)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>There&amp;rsquo;s no perfect formula — it depends on how read-heavy your VMs are and how large your working set is. Start conservative (6–10GB on a 64GB host), watch the ARC hit rate with &lt;code>arc_summary&lt;/code>, and increase if you&amp;rsquo;re seeing sub-80% hit rates.&lt;/p>
&lt;h2 id="create-datasets-with-compression">Create datasets with compression&lt;/h2>
&lt;p>Don&amp;rsquo;t put everything in the root dataset. Create datasets per workload — they inherit compression from the pool but can override it:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># VM disks dataset — lz4 is fast enough, images compress moderately&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>zfs create -o compression&lt;span style="color:#f92672">=&lt;/span>lz4 datapool/vm-disks
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Backup dataset — zstd-3 for better compression on backup archives&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>zfs create -o compression&lt;span style="color:#f92672">=&lt;/span>zstd-3 datapool/backups
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Media — most media files are already compressed, skip compression&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>zfs create -o compression&lt;span style="color:#f92672">=&lt;/span>off datapool/media
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Docker volumes — lz4, lots of small files&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>zfs create -o compression&lt;span style="color:#f92672">=&lt;/span>lz4 datapool/docker
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Check all datasets and their properties&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>zfs get compression,compressratio,used,available datapool
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="enable-automatic-scrubs">Enable automatic scrubs&lt;/h2>
&lt;p>Proxmox VE 8 creates systemd timer units for ZFS scrubs when you create a pool through the installer. If you created your pool manually via CLI, check whether the timers are active:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>systemctl list-timers | grep zfs
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>If nothing shows, enable them:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>systemctl enable zfs-scrub@datapool.timer
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>systemctl start zfs-scrub@datapool.timer
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The default timer runs scrubs on the first Sunday of each month. Check the schedule:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>systemctl cat zfs-scrub@datapool.timer
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>If you want a custom schedule (e.g., every 2 weeks), override the timer:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>systemctl edit zfs-scrub@datapool.timer
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Add:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-ini" data-lang="ini">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[Timer]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">OnCalendar&lt;/span>&lt;span style="color:#f92672">=&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">OnCalendar&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">*-*-1,15 02:00:00&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Watch a scrub in progress:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>watch -n5 zpool status
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Scrub speed on mechanical drives: approximately 100–200MB/s read throughput. A 40TB array takes 2–5 days. A 4TB SSD pool takes minutes. Don&amp;rsquo;t interrupt a scrub — if you need to pause one:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>zpool scrub -p datapool
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Resume:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>zpool scrub datapool
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="snapshot-policy">Snapshot policy&lt;/h2>
&lt;p>ZFS snapshots are instant (copy-on-write, no data copied at creation), space-efficient (only changed blocks occupy space), and a critical backup layer.&lt;/p>
&lt;p>For a rolling daily snapshot schedule:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Take a snapshot now:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>zfs snapshot datapool/vm-disks@&lt;span style="color:#66d9ef">$(&lt;/span>date +%Y-%m-%d&lt;span style="color:#66d9ef">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># List snapshots:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>zfs list -t snapshot
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Destroy old snapshots:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>zfs destroy datapool/vm-disks@2026-05-15
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>For automated snapshots, &lt;code>sanoid&lt;/code> is the best tool — it&amp;rsquo;s a policy-based snapshot manager for ZFS:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>apt install sanoid
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Config at /etc/sanoid/sanoid.conf&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cat &amp;gt; /etc/sanoid/sanoid.conf &lt;span style="color:#e6db74">&amp;lt;&amp;lt; &amp;#39;EOF&amp;#39;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">[datapool/vm-disks]
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> use_template = production
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">[datapool/backups]
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> use_template = backup
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">[template_production]
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> frequently = 0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> hourly = 24
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> daily = 30
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> monthly = 3
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> yearly = 0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> autosnap = yes
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> autoprune = yes
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">[template_backup]
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> frequently = 0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> hourly = 0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> daily = 7
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> monthly = 2
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> yearly = 0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> autosnap = yes
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> autoprune = yes
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">EOF&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>systemctl enable --now sanoid.timer
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>With this config, &lt;code>datapool/vm-disks&lt;/code> keeps 24 hourly snapshots, 30 daily, and 3 monthly. &lt;code>datapool/backups&lt;/code> keeps 7 daily and 2 monthly. Pruning happens automatically.&lt;/p>
&lt;h2 id="enable-zfs-send-replication-to-proxmox-backup-server">Enable ZFS send replication to Proxmox Backup Server&lt;/h2>
&lt;p>If you&amp;rsquo;re running Proxmox Backup Server (see the &lt;a href="https://techfuelhq.com/tutorials/proxmox-backup-server-3-2-1-2026/">PBS 3-2-1 backup guide&lt;/a>), you can also replicate ZFS snapshots to a TrueNAS or remote ZFS host via &lt;code>zfs send&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Snapshot the source dataset&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>zfs snapshot datapool/vm-disks@replication-&lt;span style="color:#66d9ef">$(&lt;/span>date +%Y%m%d&lt;span style="color:#66d9ef">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Initial full send to remote host (SSH key authentication required)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>zfs send datapool/vm-disks@replication-20260613 | &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> ssh root@192.168.1.20 &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> &lt;span style="color:#e6db74">&amp;#34;zfs receive backuppool/vm-disks-from-proxmox&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Incremental send (subsequent runs) — only sends changed blocks&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>zfs send -i datapool/vm-disks@replication-20260612 &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> datapool/vm-disks@replication-20260613 | &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> ssh root@192.168.1.20 &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> &lt;span style="color:#e6db74">&amp;#34;zfs receive backuppool/vm-disks-from-proxmox&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;code>syncoid&lt;/code> (bundled with &lt;code>sanoid&lt;/code>) automates the incremental send/receive cycle, handling snapshot management on both ends. It&amp;rsquo;s the right tool once you have a replication relationship to maintain.&lt;/p>
&lt;h2 id="monitor-pool-health">Monitor pool health&lt;/h2>
&lt;p>Check pool status and disk health regularly:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Pool status and resilver/scrub progress&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>zpool status -v
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Pool space usage&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>zpool list
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Per-dataset usage&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>zfs list -r -o name,used,available,refer,mountpoint datapool
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># ARC statistics&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>arc_summary
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Check for recent errors (look for READ/WRITE/CKSUM columns)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>zpool status | grep -E &lt;span style="color:#e6db74">&amp;#34;state|errors|status&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Set up an alert in your monitoring stack (see the &lt;a href="https://techfuelhq.com/tutorials/homelab-monitoring-grafana-prometheus-2026/">Grafana + Prometheus monitoring guide&lt;/a>) to fire when &lt;code>zpool status&lt;/code> shows a degraded pool — the zfs-exporter for Prometheus exposes pool health as a metric, which means you can get a Discord alert when a drive drops out rather than finding out when your VMs start acting strange.&lt;/p>
&lt;h2 id="common-mistakes-to-avoid">Common mistakes to avoid&lt;/h2>
&lt;p>&lt;strong>Using /dev/sdX paths.&lt;/strong> If a drive order changes after a reboot, &lt;code>sda&lt;/code> might become &lt;code>sdc&lt;/code>. ZFS records pool members by ID, not path — but if you used &lt;code>/dev/sda&lt;/code> to create the pool and the path changes, Proxmox may fail to import the pool on boot. Always use &lt;code>/dev/disk/by-id/&lt;/code> paths.&lt;/p>
&lt;p>&lt;strong>Creating a dataset per VM manually.&lt;/strong> Proxmox manages VM disk datasets automatically when you create VM storage. Don&amp;rsquo;t create &lt;code>datapool/vm-disks/vm-100-disk-0&lt;/code> manually — let Proxmox do it through the UI or &lt;code>pvesm&lt;/code>.&lt;/p>
&lt;p>&lt;strong>Setting ARC too low.&lt;/strong> A 2GB ARC cap on a host with 32GB RAM and 10 VMs will result in constant cache misses and elevated disk IO as the VMs and ZFS fight over the tiny cache. 6–8GB minimum is sane for a homelab host with moderate VM density.&lt;/p>
&lt;p>&lt;strong>Forgetting to enable scrubs.&lt;/strong> On manually-created pools, scrub timers don&amp;rsquo;t auto-enable. One year without a scrub on a RAIDZ1 array means silent corruption could exist undetected. Run &lt;code>systemctl list-timers | grep zfs&lt;/code> and confirm the timer is scheduled.&lt;/p>
&lt;hr>
&lt;p>&lt;em>For pool topology decisions (mirrors vs RAIDZ, when to add a SLOG, special vdev), the &lt;a href="https://techfuelhq.com/homelab/proxmox-truenas-unraid-storage-backend-2026/">ZFS storage backend comparison&lt;/a> covers the tradeoffs. For planning how many VMs your Proxmox host can run given your ARC allocation, the &lt;a href="https://techfuelhq.com/tools/proxmox-capacity-planner/">Proxmox VM Capacity Planner&lt;/a> lets you model it interactively. For automated snapshot retention policies and encrypted replication to a second ZFS host, the &lt;a href="https://techfuelhq.com/tutorials/sanoid-syncoid-zfs-snapshots-2026/">Sanoid and Syncoid guide&lt;/a> is the natural next step after pool setup. For off-site backup, the &lt;a href="https://techfuelhq.com/tutorials/proxmox-backup-server-3-2-1-2026/">PBS 3-2-1 backup guide&lt;/a> covers the full stack.&lt;/em>&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://pve.proxmox.com/wiki/ZFS_on_Linux" rel="noopener">Proxmox VE: ZFS on Linux&lt;/a> &amp;ndash; official wiki on pool creation, RAID levels, compression, and adding pools as Proxmox storage.&lt;/li>
&lt;li>&lt;a href="https://openzfs.github.io/openzfs-docs/Performance%20and%20Tuning/Module%20Parameters.html" rel="noopener">OpenZFS Module Parameters&lt;/a> &amp;ndash; official reference for tunables including zfs_arc_max used to cap ARC.&lt;/li>
&lt;li>&lt;a href="https://openzfs.github.io/openzfs-docs/man/master/8/zpool-scrub.8.html" rel="noopener">OpenZFS zpool-scrub man page&lt;/a> &amp;ndash; official documentation for running, pausing, and scheduling scrubs via systemd timers.&lt;/li>
&lt;li>&lt;a href="https://github.com/jimsalterjrs/sanoid" rel="noopener">Sanoid and Syncoid&lt;/a> &amp;ndash; official repository for the policy-driven ZFS snapshot manager and the syncoid replication tool.&lt;/li>
&lt;/ul></description></item><item><title>Jellyfin Setup on Docker (2026 Complete Guide)</title><link>https://techfuelhq.com/tutorials/jellyfin-setup-docker-homelab-2026/</link><pubDate>Mon, 25 May 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tutorials/jellyfin-setup-docker-homelab-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-05-25 · ~12 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/tutorials/jellyfin-setup-docker-homelab-2026.svg" alt="Architecture diagram of a Jellyfin Docker homelab: movies, TV and music volume mounts plus an SSD transcode cache feed the linuxserver Jellyfin container on port 8096, with three hardware transcoding paths (Intel Quick Sync via /dev/dri, NVIDIA NVENC via the nvidia runtime, AMD VAAPI via renderD128), fronted by Nginx Proxy Manager HTTPS and Tailscale remote access to Apple TV, Roku, iOS and web clients" width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>Jellyfin is a free, open-source media server. No subscription, no required cloud account, no phoning home. It runs on your own hardware, serves your own files, and the transcoding works whether you pay anyone money or not.&lt;/p>
&lt;p>This guide sets up Jellyfin in Docker with hardware transcoding for Intel, NVIDIA, and AMD GPUs, HTTPS via Nginx Proxy Manager, and Tailscale remote access.&lt;/p>
&lt;p>(Still choosing? &lt;a href="https://techfuelhq.com/homelab/jellyfin-vs-emby-2026/">Jellyfin vs Emby&lt;/a> compares it against the project it was forked from, and &lt;a href="https://techfuelhq.com/articles/jellyfin-vs-plex-2026/">Jellyfin vs Plex&lt;/a> covers the other common alternative. Come back here to build it.)&lt;/p>
&lt;h2 id="what-youll-have-at-the-end">What you&amp;rsquo;ll have at the end&lt;/h2>
&lt;ul>
&lt;li>Jellyfin running in Docker on your homelab host&lt;/li>
&lt;li>Hardware transcoding configured (Intel QSV, NVIDIA, or AMD VAAPI)&lt;/li>
&lt;li>HTTPS access at &lt;code>jellyfin.yourdomain.com&lt;/code> via Nginx Proxy Manager&lt;/li>
&lt;li>Remote access via Tailscale without opening ports&lt;/li>
&lt;li>Metadata scraping from TMDB and TheTVDB&lt;/li>
&lt;/ul>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;ul>
&lt;li>Docker installed on a Linux host (Proxmox LXC, VM, or bare-metal Debian/Ubuntu)&lt;/li>
&lt;li>For NVIDIA transcoding: NVIDIA Container Toolkit installed&lt;/li>
&lt;li>For Intel QSV: Intel 6th gen+ CPU (built-in GPU with Quick Sync)&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/nginx-proxy-manager-homelab-2026/">Nginx Proxy Manager&lt;/a> running for HTTPS (or skip and use LAN IP)&lt;/li>
&lt;/ul>
&lt;h2 id="step-1-prepare-media-directories">Step 1: Prepare media directories&lt;/h2>
&lt;p>Decide where your media lives before starting the container. The paths you choose here become the volume mounts in Docker Compose and can&amp;rsquo;t be easily changed later without restarting and re-adding libraries in the UI.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Example structure on a NAS mount or local disk&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mkdir -p /mnt/media/&lt;span style="color:#f92672">{&lt;/span>movies,tv,music,photos&lt;span style="color:#f92672">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Or on local storage&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mkdir -p /opt/media/&lt;span style="color:#f92672">{&lt;/span>movies,tv&lt;span style="color:#f92672">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Set ownership if running Jellyfin as non-root:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Jellyfin container runs as UID/GID 1000 by default with linuxserver image&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>chown -R 1000:1000 /mnt/media
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="step-2-docker-compose">Step 2: Docker Compose&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>mkdir -p /opt/stacks/jellyfin &lt;span style="color:#f92672">&amp;amp;&amp;amp;&lt;/span> cd /opt/stacks/jellyfin
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Base compose file (CPU transcoding or Intel QSV):&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># /opt/stacks/jellyfin/docker-compose.yml&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">services&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">jellyfin&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">lscr.io/linuxserver/jellyfin:latest&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">jellyfin&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">unless-stopped&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">environment&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">PUID=1000&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">PGID=1000&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">TZ=America/Chicago&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">JELLYFIN_PublishedServerUrl=https://jellyfin.yourdomain.com &lt;/span> &lt;span style="color:#75715e"># optional&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">./config:/config&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">/mnt/media/movies:/data/movies&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">/mnt/media/tv:/data/tv&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">/mnt/media/music:/data/music&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">/tmp/jellyfin-transcode:/transcode &lt;/span> &lt;span style="color:#75715e"># SSD path for transcode cache&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">ports&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">8096&lt;/span>:&lt;span style="color:#ae81ff">8096&lt;/span> &lt;span style="color:#75715e"># HTTP&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">8920&lt;/span>:&lt;span style="color:#ae81ff">8920&lt;/span> &lt;span style="color:#75715e"># HTTPS (optional, if not using NPM)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">networks&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">proxy&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># Intel QSV — add this if you have an Intel CPU with Quick Sync:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># devices:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># - /dev/dri:/dev/dri&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># group_add:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># - &amp;#34;video&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># - &amp;#34;render&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">networks&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">proxy&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">external&lt;/span>: &lt;span style="color:#66d9ef">true&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>For Intel Quick Sync (QSV/VAAPI) — uncomment the device section above:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">devices&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">/dev/dri:/dev/dri&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">group_add&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#34;video&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#34;render&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Verify the &lt;code>/dev/dri&lt;/code> device exists on the host:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>ls /dev/dri
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># renderD128 card0 (you should see renderD128 at minimum)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>For NVIDIA GPU transcoding — use this compose instead:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">services&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">jellyfin&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">lscr.io/linuxserver/jellyfin:latest&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">jellyfin&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">unless-stopped&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">environment&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">PUID=1000&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">PGID=1000&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">TZ=America/Chicago&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">./config:/config&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">/mnt/media/movies:/data/movies&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">/mnt/media/tv:/data/tv&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">/tmp/jellyfin-transcode:/transcode&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">ports&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">8096&lt;/span>:&lt;span style="color:#ae81ff">8096&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">runtime&lt;/span>: &lt;span style="color:#ae81ff">nvidia&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">environment&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">NVIDIA_VISIBLE_DEVICES=all&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">NVIDIA_DRIVER_CAPABILITIES=all&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">networks&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">proxy&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">networks&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">proxy&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">external&lt;/span>: &lt;span style="color:#66d9ef">true&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The NVIDIA Container Toolkit must be installed on the host. See the &lt;a href="https://techfuelhq.com/articles/best-gpu-plex-jellyfin-transcode-2026/">GPU transcoding guide&lt;/a> for the toolkit install commands.&lt;/p>
&lt;p>Start Jellyfin:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>docker compose up -d
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker compose logs -f jellyfin
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>First startup takes 60–90 seconds as Jellyfin initializes its database. Access at &lt;code>http://your-host-ip:8096&lt;/code>.&lt;/p>
&lt;h2 id="step-3-initial-setup-wizard">Step 3: Initial setup wizard&lt;/h2>
&lt;p>The wizard walks you through:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Language&lt;/strong> — pick your locale&lt;/li>
&lt;li>&lt;strong>Create admin account&lt;/strong> — use a strong password&lt;/li>
&lt;li>&lt;strong>Add media libraries&lt;/strong> — this is where your &lt;code>/data/movies&lt;/code>, &lt;code>/data/tv&lt;/code> mounts are used:
&lt;ul>
&lt;li>Add library → Content type: Movies → Add folder → &lt;code>/data/movies&lt;/code>&lt;/li>
&lt;li>Add library → Content type: Shows → Add folder → &lt;code>/data/tv&lt;/code>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Preferred metadata language&lt;/strong> — English (or your locale)&lt;/li>
&lt;li>&lt;strong>Enable remote access&lt;/strong> — leave on for now, configure access control after&lt;/li>
&lt;/ol>
&lt;p>After the wizard, Jellyfin starts scraping metadata from TMDB/TheTVDB immediately. For a large library, this takes 10–30 minutes.&lt;/p>
&lt;h2 id="step-4-enable-hardware-transcoding">Step 4: Enable hardware transcoding&lt;/h2>
&lt;p>In Jellyfin → Dashboard → Playback → Transcoding:&lt;/p>
&lt;p>&lt;strong>Intel Quick Sync (most Intel CPUs 6th gen+):&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Hardware acceleration: &lt;code>Intel QuickSync (QSV)&lt;/code>&lt;/li>
&lt;li>Enable hardware encoding: on&lt;/li>
&lt;li>H.264, HEVC, VP9, AV1 encode/decode: enable all that your CPU supports&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>NVIDIA GPU:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Hardware acceleration: &lt;code>Nvidia NVENC&lt;/code>&lt;/li>
&lt;li>Enable hardware encoding: on&lt;/li>
&lt;li>H.264, HEVC, AV1 encode/decode: enable based on your GPU generation (RTX 4000+ supports AV1)&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>AMD (VAAPI):&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Hardware acceleration: &lt;code>Video Acceleration API (VAAPI)&lt;/code>&lt;/li>
&lt;li>VA API device: &lt;code>/dev/dri/renderD128&lt;/code>&lt;/li>
&lt;li>Enable hardware encoding: on&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Verify transcoding is working:&lt;/strong>&lt;/p>
&lt;p>Play a video and intentionally trigger a transcode by selecting a lower quality than the source (e.g., source is 4K HEVC, select &amp;ldquo;1080p 8Mbps&amp;rdquo; in the quality settings). Watch the Jellyfin dashboard → Active Sessions — you should see the stream marked as &lt;code>HEVC → H264 (hw)&lt;/code> or similar, with GPU utilization on the host.&lt;/p>
&lt;p>On a mini PC with Intel N-series, a single 4K → 1080p HEVC transcode should consume under 15% CPU with Quick Sync active (vs 80–100% without it).&lt;/p>
&lt;h2 id="step-5-nginx-proxy-manager-https">Step 5: Nginx Proxy Manager HTTPS&lt;/h2>
&lt;p>In &lt;a href="https://techfuelhq.com/tutorials/nginx-proxy-manager-homelab-2026/">NPM&lt;/a> → Add Proxy Host:&lt;/p>
&lt;ul>
&lt;li>Domain: &lt;code>jellyfin.yourdomain.com&lt;/code>&lt;/li>
&lt;li>Scheme: &lt;code>http&lt;/code>&lt;/li>
&lt;li>Forward hostname: &lt;code>jellyfin&lt;/code> (container name, on proxy network)&lt;/li>
&lt;li>Port: &lt;code>8096&lt;/code>&lt;/li>
&lt;li>&lt;strong>Websockets Support:&lt;/strong> ON (required for Jellyfin&amp;rsquo;s sync features)&lt;/li>
&lt;li>SSL: wildcard cert, Force SSL on, HTTP/2 support on&lt;/li>
&lt;/ul>
&lt;p>Access Jellyfin at &lt;code>https://jellyfin.yourdomain.com&lt;/code>.&lt;/p>
&lt;p>&lt;strong>Optional — allow direct access for LAN clients:&lt;/strong>&lt;/p>
&lt;p>Some Jellyfin clients (especially smart TV apps) work better with a direct LAN IP if the DNS resolves. Add &lt;code>192.168.1.X&lt;/code> to the Jellyfin &amp;ldquo;Known Proxies and Networks&amp;rdquo; list in Dashboard → Networking so Jellyfin knows to trust the X-Forwarded-For header from NPM.&lt;/p>
&lt;h2 id="step-6-remote-access-via-tailscale">Step 6: Remote access via Tailscale&lt;/h2>
&lt;p>The simplest secure remote access is &lt;a href="https://techfuelhq.com/tutorials/tailscale-remote-access-homelab-2026/">Tailscale&lt;/a>:&lt;/p>
&lt;ol>
&lt;li>Install Tailscale on your homelab host (or in a Proxmox LXC)&lt;/li>
&lt;li>Enable subnet routing to advertise your homelab LAN: &lt;code>tailscale up --advertise-routes=192.168.1.0/24&lt;/code>&lt;/li>
&lt;li>On each device (phone, laptop, etc.) that you want Jellyfin access from, install the Tailscale app and connect&lt;/li>
&lt;li>Access Jellyfin via the local LAN IP or via the NPM domain if you&amp;rsquo;ve set AdGuard Home DNS rewrites&lt;/li>
&lt;/ol>
&lt;p>The Jellyfin iOS/Android apps work identically over Tailscale as they do on your local network. No special configuration needed in Jellyfin itself.&lt;/p>
&lt;h2 id="step-7-jellyfin-app-clients">Step 7: Jellyfin app clients&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Platform&lt;/th>
&lt;th scope="col">App&lt;/th>
&lt;th scope="col">Notes&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Android&lt;/td>
&lt;td>Jellyfin (official)&lt;/td>
&lt;td>Play Store&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>iOS / iPadOS&lt;/td>
&lt;td>Jellyfin (official)&lt;/td>
&lt;td>App Store&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Apple TV&lt;/td>
&lt;td>Jellyfin (official)&lt;/td>
&lt;td>tvOS App Store&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Android TV / Fire TV&lt;/td>
&lt;td>Jellyfin (official)&lt;/td>
&lt;td>Available on both stores&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Roku&lt;/td>
&lt;td>Jellyfin for Roku&lt;/td>
&lt;td>Channel Store&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Web browser&lt;/td>
&lt;td>Built-in web client&lt;/td>
&lt;td>At your Jellyfin URL&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Desktop (Windows/macOS/Linux)&lt;/td>
&lt;td>Jellyfin Media Player&lt;/td>
&lt;td>GitHub releases&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Kodi&lt;/td>
&lt;td>Jellyfin for Kodi&lt;/td>
&lt;td>Kodi repository&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>On Apple TV and Android TV, the Jellyfin app supports Direct Play for most common formats (H.264/HEVC MP4/MKV containers). If the container or audio codec requires a transcode, hardware transcoding on the server handles it.&lt;/p>
&lt;h2 id="library-organization-best-practices">Library organization best practices&lt;/h2>
&lt;p>&lt;strong>Name your files correctly.&lt;/strong> Jellyfin uses the TMDB naming convention:&lt;/p>
&lt;pre tabindex="0">&lt;code>/data/movies/The Dark Knight (2008)/The Dark Knight (2008).mkv
/data/tv/Breaking Bad/Season 01/Breaking Bad S01E01.mkv
&lt;/code>&lt;/pre>&lt;p>The year in the movie folder name is required for disambiguation. TV shows need Season folders with SxxExx naming. Wrong naming is the #1 reason metadata fails to scrape.&lt;/p>
&lt;p>&lt;strong>Extras and specials:&lt;/strong>&lt;/p>
&lt;pre tabindex="0">&lt;code>/data/movies/The Dark Knight (2008)/
The Dark Knight (2008).mkv
extras/
The Dark Knight Behind the Scenes.mkv
&lt;/code>&lt;/pre>&lt;p>Jellyfin picks up extras from an &lt;code>extras/&lt;/code> subdirectory and shows them in the detail view.&lt;/p>
&lt;p>&lt;strong>Subtitles:&lt;/strong>&lt;/p>
&lt;p>External subtitle files go in the same directory as the video with matching name:&lt;/p>
&lt;pre tabindex="0">&lt;code>The Dark Knight (2008).mkv
The Dark Knight (2008).en.srt # English SRT
The Dark Knight (2008).en.forced.srt # Forced English subtitles
&lt;/code>&lt;/pre>&lt;p>Jellyfin surfaces these in the subtitle selection in the player.&lt;/p>
&lt;h2 id="performance-reference">Performance reference&lt;/h2>
&lt;p>Hardware transcoding throughput measured on Intel N100 (Quick Sync, 4K HEVC → 1080p H.264):&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Concurrent streams&lt;/th>
&lt;th scope="col">CPU load&lt;/th>
&lt;th scope="col">Transcode FPS&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>1&lt;/td>
&lt;td>~8%&lt;/td>
&lt;td>60–90 fps&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2&lt;/td>
&lt;td>~14%&lt;/td>
&lt;td>55–80 fps each&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>3&lt;/td>
&lt;td>~20%&lt;/td>
&lt;td>45–70 fps each&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>4&lt;/td>
&lt;td>~28%&lt;/td>
&lt;td>40–60 fps each&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>At 4 concurrent 4K → 1080p transcodes, playback remains smooth on a $160 N100 mini PC. Software transcoding (CPU only) would saturate all 4 N100 cores on a single 4K stream.&lt;/p>
&lt;p>For the full GPU hardware comparison across Intel QSV, NVIDIA, and AMD, see the &lt;a href="https://techfuelhq.com/articles/best-gpu-plex-jellyfin-transcode-2026/">Best GPU for Jellyfin Transcoding guide&lt;/a>.&lt;/p>
&lt;hr>
&lt;p>&lt;em>For the Arr stack (Radarr, Sonarr, Prowlarr) that populates your Jellyfin library automatically, the &lt;a href="https://techfuelhq.com/tutorials/docker-compose-starter-stack-homelab-2026/">Docker Compose starter stack&lt;/a> covers the service stack with shared proxy networking. For transcoding GPU picks and benchmarks across platforms, see the &lt;a href="https://techfuelhq.com/articles/best-gpu-plex-jellyfin-transcode-2026/">GPU transcoding comparison&lt;/a>. If you&amp;rsquo;re deciding between Jellyfin and Plex, the &lt;a href="https://techfuelhq.com/articles/jellyfin-vs-plex-2026/">Jellyfin vs Plex comparison&lt;/a> breaks down hardware transcoding cost, privacy, remote access, and app quality by use case. If your library also includes audiobooks, the &lt;a href="https://techfuelhq.com/tutorials/audiobookshelf-docker-setup-2026/">AudioBookshelf Docker setup&lt;/a> covers the purpose-built server for them, with per-user progress sync across mobile apps.&lt;/em>&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://jellyfin.org/docs/general/installation/container/" rel="noopener">Jellyfin Container install&lt;/a> &amp;ndash; official docs on running Jellyfin via Docker, Docker Compose, and Podman.&lt;/li>
&lt;li>&lt;a href="https://jellyfin.org/docs/general/post-install/transcoding/hardware-acceleration/" rel="noopener">Jellyfin Hardware Acceleration&lt;/a> &amp;ndash; official docs on Intel QSV, NVIDIA NVENC, and AMD VAAPI transcoding setup.&lt;/li>
&lt;li>&lt;a href="https://docs.linuxserver.io/images/docker-jellyfin/" rel="noopener">LinuxServer.io Jellyfin image&lt;/a> &amp;ndash; official docs for the lscr.io/linuxserver/jellyfin image, PUID/PGID, and device mounts.&lt;/li>
&lt;li>&lt;a href="https://tailscale.com/kb/1019/subnets" rel="noopener">Tailscale Subnet routers&lt;/a> &amp;ndash; official docs on advertising a LAN subnet for remote access without opening ports.&lt;/li>
&lt;/ul></description></item><item><title>Tailscale Remote Access for the Homelab (2026 Setup Guide)</title><link>https://techfuelhq.com/tutorials/tailscale-remote-access-homelab-2026/</link><pubDate>Mon, 25 May 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tutorials/tailscale-remote-access-homelab-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-05-25 · ~12 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/tutorials/tailscale-remote-access-homelab-2026.svg" alt="Topology diagram of a Tailscale homelab: a laptop on hotel WiFi and a phone on cellular connect over the WireGuard mesh tailnet (100.x.x.x, with a DERP relay for CGNAT) to a Proxmox or LXC subnet router advertising 192.168.1.0/24, which reaches the NAS, router admin, Pi-hole, IP camera and printer, with MagicDNS resolving hostname.your-tailnet.ts.net names." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>The traditional homelab remote access setup — port forwarding, DynDNS, OpenVPN with certificate management, firewall rules — takes an afternoon to set up correctly and another afternoon to debug when something breaks. Tailscale does the same thing in 20 minutes, handles NAT traversal automatically, and gives you a web UI to manage devices instead of config files scattered across three machines.&lt;/p>
&lt;p>This guide sets up Tailscale on a Proxmox host with subnet routing — one node on your LAN that routes Tailscale traffic to every other device on your network, including things that can&amp;rsquo;t run Tailscale themselves.&lt;/p>
&lt;h2 id="what-tailscale-is-and-isnt">What Tailscale is (and isn&amp;rsquo;t)&lt;/h2>
&lt;p>Tailscale is a mesh VPN built on WireGuard. Each device you install it on gets a stable IP address in the &lt;code>100.x.x.x&lt;/code> range (the Tailscale IP space, also called a tailnet). Devices in your tailnet can talk to each other directly, peer-to-peer, regardless of what NAT layers are between them.&lt;/p>
&lt;p>What it is not: a traditional VPN that routes all your traffic through a central server. By default, only traffic to other tailnet devices goes through Tailscale. Your normal internet traffic goes direct. You can enable exit nodes if you want full traffic routing, but that&amp;rsquo;s optional.&lt;/p>
&lt;p>It is also not the right tool for publishing a service to people who won&amp;rsquo;t install anything — that&amp;rsquo;s what a Cloudflare Tunnel is for. &lt;a href="https://techfuelhq.com/networking/tailscale-vs-cloudflare-tunnel-2026/">Tailscale vs Cloudflare Tunnel&lt;/a> covers which job belongs to which, including who can decrypt your traffic on each path. Most homelabs end up running both.&lt;/p>
&lt;p>For homelab use, the workflow is:&lt;/p>
&lt;ol>
&lt;li>Install Tailscale on your Proxmox host (or a dedicated LXC/VM)&lt;/li>
&lt;li>Enable subnet routing to advertise your home LAN&lt;/li>
&lt;li>Install Tailscale on your laptop/phone&lt;/li>
&lt;li>Access every device on your home network from anywhere&lt;/li>
&lt;/ol>
&lt;p>No port forwarding. No exposed ports. No certificate drama.&lt;/p>
&lt;p>Subnet routing advertises your LAN&amp;rsquo;s exact CIDR (for example &lt;code>192.168.1.0/24&lt;/code>). If you&amp;rsquo;re not sure of the network address or range to advertise, the &lt;a href="https://techfuelhq.com/tools/subnet-cidr-calculator/">subnet &amp;amp; CIDR calculator&lt;/a> confirms it from any IP and prefix so you don&amp;rsquo;t accidentally route the wrong block.&lt;/p>
&lt;h2 id="step-1-install-tailscale-on-your-proxmox-host">Step 1: Install Tailscale on your Proxmox host&lt;/h2>
&lt;p>SSH into your Proxmox host and run:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>curl -fsSL https://tailscale.com/install.sh | sh
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This installs the Tailscale daemon and CLI. After install:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>tailscale up
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>You&amp;rsquo;ll get a URL — open it in a browser, log in with your Tailscale account (Google, GitHub, or Microsoft SSO, or email), and authorize the device. After authorization, run:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>tailscale status
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>You should see your Proxmox host listed with a &lt;code>100.x.x.x&lt;/code> IP. At this point, the host is in your tailnet and you can reach it from any other Tailscale device. But only the Proxmox host itself — not your NAS, your router&amp;rsquo;s admin page, or any other device on your LAN.&lt;/p>
&lt;h2 id="step-2-enable-subnet-routing">Step 2: Enable subnet routing&lt;/h2>
&lt;p>Subnet routing lets this one Tailscale node advertise your entire home LAN to the tailnet. Every other device on your LAN becomes reachable without installing Tailscale on each one.&lt;/p>
&lt;p>First, enable IP forwarding on the Proxmox host:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>echo &lt;span style="color:#e6db74">&amp;#39;net.ipv4.ip_forward = 1&amp;#39;&lt;/span> | tee -a /etc/sysctl.conf
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>echo &lt;span style="color:#e6db74">&amp;#39;net.ipv6.conf.all.forwarding = 1&amp;#39;&lt;/span> | tee -a /etc/sysctl.conf
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sysctl -p /etc/sysctl.conf
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Then re-run &lt;code>tailscale up&lt;/code> with the subnet flag. Replace &lt;code>192.168.1.0/24&lt;/code> with your actual home LAN range:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>tailscale up --advertise-routes&lt;span style="color:#f92672">=&lt;/span>192.168.1.0/24
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Check your home LAN range if you&amp;rsquo;re unsure:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>ip route show | grep -v tailscale
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Look for a line like &lt;code>192.168.1.0/24 dev vmbr0&lt;/code> — that&amp;rsquo;s your LAN range.&lt;/p>
&lt;p>&lt;strong>Approve the subnet in the Tailscale admin console.&lt;/strong> Subnet routes require explicit approval before they become active.&lt;/p>
&lt;ol>
&lt;li>Open &lt;a href="https://login.tailscale.com/admin" rel="noopener">login.tailscale.com/admin&lt;/a> → Machines&lt;/li>
&lt;li>Click your Proxmox host → Edit route settings&lt;/li>
&lt;li>Enable the &lt;code>192.168.1.0/24&lt;/code> subnet&lt;/li>
&lt;/ol>
&lt;p>After approval, any Tailscale device with subnet route acceptance enabled can reach devices on &lt;code>192.168.1.0/24&lt;/code> through your Proxmox host.&lt;/p>
&lt;p>&lt;strong>On client devices.&lt;/strong> On macOS and iOS, subnet routes are accepted automatically. On Linux clients, run:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>tailscale up --accept-routes
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>On Windows, route acceptance is in the Tailscale system tray menu.&lt;/p>
&lt;p>Test it: from your phone (on cellular, not WiFi), try pinging a device on your home LAN by its local IP:&lt;/p>
&lt;pre tabindex="0">&lt;code>ping 192.168.1.1
&lt;/code>&lt;/pre>&lt;p>If the router responds, subnet routing is working.&lt;/p>
&lt;h2 id="step-3-enable-magicdns-and-resolve-local-names">Step 3: Enable MagicDNS and resolve local names&lt;/h2>
&lt;p>MagicDNS lets you reach devices by hostname instead of IP. Enable it in the Tailscale admin console → DNS → Enable MagicDNS.&lt;/p>
&lt;p>After enabling, devices in your tailnet are reachable by &lt;code>hostname.your-tailnet-name.ts.net&lt;/code>. Your Proxmox host becomes something like &lt;code>proxmox.coral-raccoon.ts.net&lt;/code>.&lt;/p>
&lt;p>&lt;strong>Add your local DNS to Tailscale.&lt;/strong> If you&amp;rsquo;re running Pi-hole or a local resolver (common with a homelab), you can push its IP to all Tailscale clients as a nameserver:&lt;/p>
&lt;ol>
&lt;li>Tailscale admin → DNS → Add nameserver&lt;/li>
&lt;li>Enter your Pi-hole&amp;rsquo;s Tailscale IP (&lt;code>100.x.x.x&lt;/code>) or LAN IP&lt;/li>
&lt;li>Enable &amp;ldquo;Override local DNS&amp;rdquo; if you want all DNS going through Pi-hole even when away from home&lt;/li>
&lt;/ol>
&lt;p>Now you can SSH to &lt;code>proxmox&lt;/code> or open the Proxmox web UI at &lt;code>https://proxmox:8006&lt;/code> from anywhere on your tailnet — without remembering IPs or fighting DNS.&lt;/p>
&lt;h2 id="step-4-running-tailscale-in-an-lxc-optional">Step 4: Running Tailscale in an LXC (optional)&lt;/h2>
&lt;p>If you&amp;rsquo;d rather not install Tailscale directly on the Proxmox host (to keep the host clean), run it in a dedicated LXC container configured as the subnet router.&lt;/p>
&lt;p>Create a Debian 12 LXC in Proxmox. In the LXC options, enable:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Features → TUN device&lt;/strong> — required for Tailscale&amp;rsquo;s WireGuard tunnel&lt;/li>
&lt;/ul>
&lt;p>Then inside the LXC:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>apt update &lt;span style="color:#f92672">&amp;amp;&amp;amp;&lt;/span> apt install -y curl
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>curl -fsSL https://tailscale.com/install.sh | sh
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Enable IP forwarding inside the container:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>echo &lt;span style="color:#e6db74">&amp;#39;net.ipv4.ip_forward = 1&amp;#39;&lt;/span> &amp;gt;&amp;gt; /etc/sysctl.conf
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sysctl -p
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Then:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>tailscale up --advertise-routes&lt;span style="color:#f92672">=&lt;/span>192.168.1.0/24
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Approve the subnet in the admin console as before. The LXC acts as the Tailscale gateway for the whole network while keeping the Proxmox host itself clean.&lt;/p>
&lt;h2 id="step-5-ssh-key-setup-for-password-free-access">Step 5: SSH key setup for password-free access&lt;/h2>
&lt;p>Once Tailscale is running, you can SSH into your Proxmox host via its Tailscale IP. To make this keyless:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># On your laptop — generate a key if you don&amp;#39;t have one&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ssh-keygen -t ed25519 -C &lt;span style="color:#e6db74">&amp;#34;homelab-access&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Copy to Proxmox host&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ssh-copy-id root@100.x.x.x &lt;span style="color:#75715e"># use Proxmox&amp;#39;s Tailscale IP&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Add an entry to &lt;code>~/.ssh/config&lt;/code> on your laptop:&lt;/p>
&lt;pre tabindex="0">&lt;code>Host proxmox
HostName 100.x.x.x
User root
IdentityFile ~/.ssh/id_ed25519
&lt;/code>&lt;/pre>&lt;p>Now &lt;code>ssh proxmox&lt;/code> from anywhere connects through Tailscale. Works on cellular, works through hotel WiFi, works through CGNAT — no port forwarding, no exposed SSH port on the internet.&lt;/p>
&lt;h2 id="tailscale-acls-limiting-access">Tailscale ACLs: limiting access&lt;/h2>
&lt;p>By default, every device in your tailnet can reach every other device. For a personal homelab this is fine. If you&amp;rsquo;re sharing the tailnet (letting a family member access the Plex server but not the Proxmox UI), use ACLs.&lt;/p>
&lt;p>In the Tailscale admin console → Access Controls:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;acls&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;action&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;accept&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;src&amp;#34;&lt;/span>: [&lt;span style="color:#e6db74">&amp;#34;tag:homelab&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;dst&amp;#34;&lt;/span>: [&lt;span style="color:#e6db74">&amp;#34;*:*&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;action&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;accept&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;src&amp;#34;&lt;/span>: [&lt;span style="color:#e6db74">&amp;#34;tag:family&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;dst&amp;#34;&lt;/span>: [&lt;span style="color:#e6db74">&amp;#34;100.x.x.x:32400&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tagOwners&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tag:homelab&amp;#34;&lt;/span>: [&lt;span style="color:#e6db74">&amp;#34;autogroup:owner&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tag:family&amp;#34;&lt;/span>: [&lt;span style="color:#e6db74">&amp;#34;autogroup:owner&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This allows your homelab-tagged devices full access, while family-tagged devices can only reach port 32400 (Plex). Tailscale ACLs use a JSON5 format documented at &lt;a href="https://tailscale.com/kb/1018/acls/" rel="noopener">tailscale.com/kb/1018/acls&lt;/a>.&lt;/p>
&lt;h2 id="troubleshooting">Troubleshooting&lt;/h2>
&lt;p>&lt;strong>Connection goes through a relay (DERP).&lt;/strong> Run &lt;code>tailscale status&lt;/code> and look for &lt;code>relay&lt;/code> in the connection type. This usually means direct peer connection failed due to both sides being behind strict NAT. Check if your home router has UPnP or if you can open UDP 41641 on the external interface — that helps Tailscale establish direct connections.&lt;/p>
&lt;p>&lt;strong>Subnet routes not working.&lt;/strong> Confirm you:&lt;/p>
&lt;ol>
&lt;li>Ran &lt;code>tailscale up --advertise-routes=...&lt;/code> with the right CIDR&lt;/li>
&lt;li>Approved the route in the admin console&lt;/li>
&lt;li>On the client, ran &lt;code>tailscale up --accept-routes&lt;/code>&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Can&amp;rsquo;t reach a specific device on the subnet.&lt;/strong> Make sure the device&amp;rsquo;s default gateway is your home router, not a Proxmox bridge. Devices need to send return traffic back through the router, which routes it to the Proxmox subnet router.&lt;/p>
&lt;p>&lt;strong>Tailscale service down after Proxmox update.&lt;/strong> Proxmox updates occasionally reset package configurations. Check &lt;code>systemctl status tailscaled&lt;/code> and &lt;code>journalctl -u tailscaled&lt;/code> if Tailscale stops working after an update.&lt;/p>
&lt;h2 id="what-about-headscale">What about Headscale?&lt;/h2>
&lt;p>&lt;a href="https://headscale.net/" rel="noopener">Headscale&lt;/a> is a self-hosted, open-source implementation of the Tailscale control plane. You run your own coordination server instead of using Tailscale&amp;rsquo;s cloud service. This gives you full data sovereignty and no dependency on Tailscale&amp;rsquo;s infrastructure.&lt;/p>
&lt;p>The tradeoff: setup is more involved, you manage the server yourself, and some Tailscale features (MagicDNS, the mobile app) have partial or no Headscale support. For a personal homelab where the free Tailscale tier covers you and you trust Tailscale&amp;rsquo;s service terms, the cloud version is simpler. For a privacy-critical deployment, Headscale is worth the effort.&lt;/p>
&lt;h2 id="persistent-setup-with-systemctl">Persistent setup with systemctl&lt;/h2>
&lt;p>Make sure Tailscale starts at boot:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>systemctl enable --now tailscaled
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This is set by default during install, but verify it if you&amp;rsquo;re on a minimal install. Without this, Tailscale stops on reboot and your remote access disappears.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Accessing your homelab remotely is step one. Protecting it with a &lt;a href="https://techfuelhq.com/homelab/ups-power-sizing-homelab-2026/">UPS&lt;/a> is step two — Tailscale can&amp;rsquo;t help you if the power cuts out while you&amp;rsquo;re away. The &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">Power &amp;amp; Cost Calculator&lt;/a> shows what running a always-on Tailscale gateway node costs per year. Prefer to run your own coordinator with no cloud dependency? The &lt;a href="https://techfuelhq.com/tutorials/wireguard-self-hosted-vpn-proxmox-2026/">WireGuard self-hosted VPN guide&lt;/a> covers setting up a WireGuard server in a Proxmox LXC as a direct Tailscale alternative — or, if you want to keep Tailscale&amp;rsquo;s zero-config mesh experience while owning the control plane yourself, &lt;a href="https://techfuelhq.com/networking/netbird-vs-tailscale-2026/">NetBird vs Tailscale&lt;/a> weighs the open, self-hostable option.&lt;/em>&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://tailscale.com/kb/1019/subnets" rel="noopener">Tailscale KB: subnet routers&lt;/a> &amp;ndash; official documentation for advertising a LAN range so non-Tailscale devices are reachable through one node.&lt;/li>
&lt;li>&lt;a href="https://tailscale.com/kb/1018/acls" rel="noopener">Tailscale KB: manage permissions using ACLs&lt;/a> &amp;ndash; official reference for the JSON access-control policy used to scope device-to-device access.&lt;/li>
&lt;li>&lt;a href="https://headscale.net/stable/" rel="noopener">Headscale documentation&lt;/a> &amp;ndash; official docs for the open-source self-hosted implementation of the Tailscale control server.&lt;/li>
&lt;/ul></description></item><item><title>Docker Compose Starter Stack for the Homelab (2026)</title><link>https://techfuelhq.com/tutorials/docker-compose-starter-stack-homelab-2026/</link><pubDate>Sun, 24 May 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tutorials/docker-compose-starter-stack-homelab-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-05-24 · ~16 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/tutorials/docker-compose-starter-stack-homelab-2026.svg" alt="Topology diagram of the homelab Docker Compose starter stack: Nginx Proxy Manager (ports 80/443/81) as reverse proxy entry point routing on the shared proxy network to Portainer (:9000), Uptime Kuma (:3001), and Gitea (:3000, ssh 2222), with Watchtower watching /var/run/docker.sock for 4am auto-updates; idle RAM breakdown totaling ~250 MB on a Beelink SEi12 Debian 12 LXC" width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>Every homelab running Docker ends up with the same core services: a reverse proxy to route traffic, something to visualize running containers, a way to know when services are down, and automatic updates. This guide covers the stack I actually run, with working compose files you can drop in and use.&lt;/p>
&lt;p>The philosophy here: keep it simple, keep it small, make it observable. Every service in this stack has a defined purpose, and nothing runs &amp;ldquo;just because.&amp;rdquo;&lt;/p>
&lt;h2 id="the-stack">The stack&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Service&lt;/th>
&lt;th scope="col">Purpose&lt;/th>
&lt;th scope="col">Image&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Nginx Proxy Manager&lt;/td>
&lt;td>Reverse proxy + Let&amp;rsquo;s Encrypt GUI&lt;/td>
&lt;td>&lt;code>jc21/nginx-proxy-manager&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Portainer CE&lt;/td>
&lt;td>Container management UI&lt;/td>
&lt;td>&lt;code>portainer/portainer-ce&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Uptime Kuma&lt;/td>
&lt;td>Uptime monitoring + alerting&lt;/td>
&lt;td>&lt;code>louislam/uptime-kuma&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Watchtower&lt;/td>
&lt;td>Automatic container updates&lt;/td>
&lt;td>&lt;code>containrrr/watchtower&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Gitea&lt;/td>
&lt;td>Self-hosted Git&lt;/td>
&lt;td>&lt;code>gitea/gitea&lt;/code>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>This is not an exhaustive list of what you can self-host. It&amp;rsquo;s the operational layer — the services that make running everything else easier.&lt;/p>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;ul>
&lt;li>Debian 12 LXC or VM on Proxmox with Docker installed (not sure which host setup? Start with &lt;a href="https://techfuelhq.com/articles/proxmox-vs-docker-2026/">Proxmox vs Docker: what to run where&lt;/a>)&lt;/li>
&lt;li>Docker + Docker Compose plugin:&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>curl -fsSL https://get.docker.com | sh
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># verify&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker compose version
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>A domain name for services you want HTTPS on (even a free one from DuckDNS works)&lt;/li>
&lt;/ul>
&lt;h2 id="directory-structure">Directory structure&lt;/h2>
&lt;p>Before writing any compose files, set up a consistent directory structure:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>mkdir -p /opt/stacks/&lt;span style="color:#f92672">{&lt;/span>npm,portainer,uptime-kuma,watchtower,gitea&lt;span style="color:#f92672">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Each service gets its own directory under &lt;code>/opt/stacks/&lt;/code>. Stack definition lives there; persistent data lives in a &lt;code>data/&lt;/code> subdirectory.&lt;/p>
&lt;h2 id="shared-docker-network">Shared Docker network&lt;/h2>
&lt;p>All services that need to talk to each other (especially the reverse proxy and the services it proxies) need to be on the same Docker network:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>docker network create proxy
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Every compose file in this guide attaches to this &lt;code>proxy&lt;/code> network. The reverse proxy can reach other containers by service name — no hardcoded IPs.&lt;/p>
&lt;h2 id="nginx-proxy-manager">Nginx Proxy Manager&lt;/h2>
&lt;p>Nginx Proxy Manager gives you a web UI for managing nginx virtual hosts, SSL certificates, and access lists — without editing nginx config files.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># /opt/stacks/npm/docker-compose.yml&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">services&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">app&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">jc21/nginx-proxy-manager:latest&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">nginx-proxy-manager&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">unless-stopped&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">ports&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#34;80:80&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#34;443:443&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#34;81:81&amp;#34;&lt;/span> &lt;span style="color:#75715e"># NPM admin UI&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">./data:/data&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">./letsencrypt:/etc/letsencrypt&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">healthcheck&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">test&lt;/span>: [&lt;span style="color:#e6db74">&amp;#34;CMD&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;/usr/bin/check-health&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">interval&lt;/span>: &lt;span style="color:#ae81ff">10s&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">timeout&lt;/span>: &lt;span style="color:#ae81ff">3s&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">networks&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">proxy&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">networks&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">proxy&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">external&lt;/span>: &lt;span style="color:#66d9ef">true&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>cd /opt/stacks/npm
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker compose up -d
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>First login at &lt;code>http://host-ip:81&lt;/code>:&lt;/p>
&lt;ul>
&lt;li>Default email: &lt;code>admin@example.com&lt;/code>&lt;/li>
&lt;li>Default password: &lt;code>changeme&lt;/code>&lt;/li>
&lt;li>Change both immediately&lt;/li>
&lt;/ul>
&lt;p>From here, every new service you add gets a proxy host in NPM pointing to &lt;code>service-name:port&lt;/code> on the &lt;code>proxy&lt;/code> network. NPM handles Let&amp;rsquo;s Encrypt renewal automatically.&lt;/p>
&lt;p>&lt;strong>Port forward 80 and 443 on your router&lt;/strong> to this host&amp;rsquo;s LAN IP for public access. If you&amp;rsquo;re Tailscale-only, skip port forwarding — set up Caddy instead and use Tailscale HTTPS certificates.&lt;/p>
&lt;h2 id="portainer-ce">Portainer CE&lt;/h2>
&lt;p>Portainer gives you a web UI to start, stop, inspect, and log into running containers without SSHing into the host.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># /opt/stacks/portainer/docker-compose.yml&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">services&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">portainer&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">portainer/portainer-ce:latest&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">portainer&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">unless-stopped&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">/var/run/docker.sock:/var/run/docker.sock&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">./data:/data&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">networks&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">proxy&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">labels&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#34;com.centurylinklabs.watchtower.enable=true&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">networks&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">proxy&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">external&lt;/span>: &lt;span style="color:#66d9ef">true&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>cd /opt/stacks/portainer
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker compose up -d
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Portainer listens on port 9443 (HTTPS) and 9000 (HTTP). Add a proxy host in NPM pointing to &lt;code>portainer:9000&lt;/code> for a clean &lt;code>portainer.yourdomain.com&lt;/code> URL.&lt;/p>
&lt;p>Set up your admin account on first run — Portainer disables the setup wizard after 5 minutes of inactivity, so do it immediately.&lt;/p>
&lt;h2 id="uptime-kuma">Uptime Kuma&lt;/h2>
&lt;p>Uptime Kuma monitors your services and alerts when they go down — via push notifications, Discord, Slack, email, or dozens of other channels. That&amp;rsquo;s uptime monitoring; for the hardware side — CPU, RAM, disk, and temperatures — &lt;a href="https://techfuelhq.com/homelab/beszel-vs-netdata-vs-glances-2026/">Beszel vs Netdata vs Glances&lt;/a> compares the lightweight resource monitors that pair with it.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># /opt/stacks/uptime-kuma/docker-compose.yml&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">services&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">uptime-kuma&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">louislam/uptime-kuma:1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">uptime-kuma&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">unless-stopped&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">./data:/app/data&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">networks&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">proxy&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">labels&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#34;com.centurylinklabs.watchtower.enable=true&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">networks&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">proxy&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">external&lt;/span>: &lt;span style="color:#66d9ef">true&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>cd /opt/stacks/uptime-kuma
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker compose up -d
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Uptime Kuma listens on port 3001. After adding a proxy host, go through the setup wizard:&lt;/p>
&lt;ol>
&lt;li>Create your admin account&lt;/li>
&lt;li>Add monitors for each service — use HTTP(s) monitors for web services, TCP port monitors for non-HTTP services&lt;/li>
&lt;li>Add a notification channel (Telegram and Discord are the easiest for homelab alerting)&lt;/li>
&lt;li>Set up &lt;strong>push monitors&lt;/strong> for scheduled tasks — your PBS backup script hits a Kuma push URL after completion; if Kuma doesn&amp;rsquo;t receive a push within the window, it alerts&lt;/li>
&lt;/ol>
&lt;p>The push monitor pattern is the most underused feature. It inverts the monitoring model: instead of Kuma checking if your service is up, your service tells Kuma it ran successfully. Cron jobs, backup scripts, and batch tasks become monitorable without exposing ports.&lt;/p>
&lt;h2 id="watchtower">Watchtower&lt;/h2>
&lt;p>Watchtower watches for new image versions and updates containers automatically.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># /opt/stacks/watchtower/docker-compose.yml&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">services&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">watchtower&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">containrrr/watchtower:latest&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">watchtower&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">unless-stopped&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">/var/run/docker.sock:/var/run/docker.sock&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">environment&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">WATCHTOWER_SCHEDULE&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;0 0 4 * * *&amp;#34;&lt;/span> &lt;span style="color:#75715e"># 4am daily&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">WATCHTOWER_CLEANUP&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;true&amp;#34;&lt;/span> &lt;span style="color:#75715e"># remove old images after update&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">WATCHTOWER_LABEL_ENABLE&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;true&amp;#34;&lt;/span> &lt;span style="color:#75715e"># only update containers with label&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">WATCHTOWER_NOTIFICATIONS&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;slack&amp;#34;&lt;/span> &lt;span style="color:#75715e"># or &amp;#34;email&amp;#34;, &amp;#34;telegram&amp;#34;, etc.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">WATCHTOWER_NOTIFICATION_SLACK_HOOK_URL&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;https://hooks.slack.com/...&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">networks&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">proxy&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">networks&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">proxy&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">external&lt;/span>: &lt;span style="color:#66d9ef">true&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The &lt;code>WATCHTOWER_LABEL_ENABLE: &amp;quot;true&amp;quot;&lt;/code> setting means Watchtower only updates containers that have the &lt;code>com.centurylinklabs.watchtower.enable=true&lt;/code> label — which is why those labels are in the Portainer and Uptime Kuma compose files above. This prevents Watchtower from blindly updating everything, including services you want to update manually.&lt;/p>
&lt;p>For services where you want to review updates before they apply (Vaultwarden, Home Assistant, anything with a database migration), do not add the Watchtower label. Pull and update those manually:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>cd /opt/stacks/service-name
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker compose pull
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker compose up -d
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="gitea">Gitea&lt;/h2>
&lt;p>Gitea is a self-hosted Git service — GitHub-like UI, issue tracker, pull requests, and CI via Gitea Actions. Runs on a single container with SQLite for a homelab. (Deciding between Gitea and its community fork? See &lt;a href="https://techfuelhq.com/homelab/forgejo-vs-gitea-2026/">Forgejo vs Gitea 2026: which self-hosted Git to pick&lt;/a>.)&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># /opt/stacks/gitea/docker-compose.yml&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">services&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">gitea&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">gitea/gitea:latest&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">gitea&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">unless-stopped&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">environment&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">USER_UID&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;1000&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">USER_GID&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;1000&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">GITEA__database__DB_TYPE&lt;/span>: &lt;span style="color:#ae81ff">sqlite3&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">GITEA__database__PATH&lt;/span>: &lt;span style="color:#ae81ff">/data/gitea/gitea.db&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">GITEA__server__DOMAIN&lt;/span>: &lt;span style="color:#ae81ff">git.yourdomain.com&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">GITEA__server__SSH_DOMAIN&lt;/span>: &lt;span style="color:#ae81ff">git.yourdomain.com&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">GITEA__server__HTTP_PORT&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;3000&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">GITEA__server__ROOT_URL&lt;/span>: &lt;span style="color:#ae81ff">https://git.yourdomain.com/&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">GITEA__server__SSH_PORT&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;2222&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">GITEA__server__SSH_LISTEN_PORT&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;2222&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">./data:/data&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">ports&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#34;2222:2222&amp;#34;&lt;/span> &lt;span style="color:#75715e"># SSH for git push&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">networks&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">proxy&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">networks&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">proxy&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">external&lt;/span>: &lt;span style="color:#66d9ef">true&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>HTTP access goes through NPM on port 3000. SSH git operations use port 2222 (forward this on your router if you want &lt;code>git push&lt;/code> to work from outside).&lt;/p>
&lt;p>On first run, Gitea shows an installation wizard. Confirm the settings match your environment variables, then create the admin account.&lt;/p>
&lt;h2 id="backup-strategy-for-this-stack">Backup strategy for this stack&lt;/h2>
&lt;p>Back up each service&amp;rsquo;s data directory:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Add to PBS backup or a backup script&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/opt/stacks/npm/data
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/opt/stacks/portainer/data
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/opt/stacks/uptime-kuma/data
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/opt/stacks/gitea/data
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>If your Docker host is an LXC backed by PBS, the entire container (including &lt;code>/opt/stacks&lt;/code>) is covered by PBS&amp;rsquo;s container backup. That&amp;rsquo;s the simplest path — configure &lt;a href="https://techfuelhq.com/tutorials/proxmox-backup-server-3-2-1-2026/">PBS backups&lt;/a> for the LXC and every service on it is automatically covered.&lt;/p>
&lt;p>For individual service backups without PBS: stop the container, tar the data directory, copy to NAS, start the container. The downtime is typically under 5 seconds.&lt;/p>
&lt;h2 id="resource-usage-all-services-running">Resource usage (all services running)&lt;/h2>
&lt;p>On a Debian 12 LXC with nesting enabled on a Beelink SEi12:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Service&lt;/th>
&lt;th scope="col">RAM (idle)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>NPM&lt;/td>
&lt;td>~50 MB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Portainer&lt;/td>
&lt;td>~35 MB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Uptime Kuma&lt;/td>
&lt;td>~70 MB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Watchtower&lt;/td>
&lt;td>~15 MB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Gitea&lt;/td>
&lt;td>~80 MB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Total&lt;/strong>&lt;/td>
&lt;td>&lt;strong>~250 MB&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>This entire operations stack uses less RAM than a single idle Debian VM. On a mini PC with 16GB RAM, these five services consume 1.5% of available memory. Add them without concern.&lt;/p>
&lt;h2 id="what-to-add-next">What to add next&lt;/h2>
&lt;p>These five services are the foundation. Common additions to this stack:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://techfuelhq.com/tutorials/vaultwarden-proxmox-2026/">Vaultwarden&lt;/a>&lt;/strong> — password manager&lt;/li>
&lt;li>&lt;strong>Immich&lt;/strong> — self-hosted photo library (see the &lt;a href="https://techfuelhq.com/tutorials/immich-google-photos-migration-2026/">Immich Google Photos migration guide&lt;/a>)&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://techfuelhq.com/tutorials/jellyfin-setup-docker-homelab-2026/">Jellyfin&lt;/a>&lt;/strong> — media server; dedicated guide covers Intel QSV, NVIDIA, and AMD hardware transcoding config. For audiobooks and podcasts, &lt;a href="https://techfuelhq.com/tutorials/audiobookshelf-docker-setup-2026/">AudioBookshelf&lt;/a> is the lighter companion — one container, per-user progress sync&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://techfuelhq.com/tutorials/n8n-self-hosted-docker-2026/">n8n&lt;/a>&lt;/strong> — workflow automation (Zapier replacement); runs on the same proxy network and can call any LAN service&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://techfuelhq.com/tutorials/nextcloud-aio-docker-setup-2026/">Nextcloud AIO&lt;/a>&lt;/strong> — file sync + calendar + contacts (heavier than most; 4GB RAM floor)&lt;/li>
&lt;li>&lt;strong>Home Assistant&lt;/strong> — home automation (better in its own &lt;a href="https://techfuelhq.com/tutorials/home-assistant-proxmox-2026/">Proxmox VM setup&lt;/a>)&lt;/li>
&lt;li>&lt;strong>Self-hosted team chat&lt;/strong> — Matrix (Synapse) and Rocket.Chat both ship Docker Compose files that drop onto this same proxy network; see the &lt;a href="https://techfuelhq.com/articles/self-hosted-discord-alternatives-2026/">self-hosted Discord alternatives comparison&lt;/a> for which one fits a community versus a workplace&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>&lt;em>Running these on a mini PC homelab? The &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">Power &amp;amp; Cost Calculator&lt;/a> shows what all of this costs in electricity. To plan RAM across your full stack before committing, the &lt;a href="https://techfuelhq.com/tools/docker-ram-planner/">Docker Homelab RAM Planner&lt;/a> lets you check every service you want and see idle vs. peak totals with host sizing advice. To give each service a clean subdomain with HTTPS instead of port numbers, the &lt;a href="https://techfuelhq.com/tutorials/nginx-proxy-manager-homelab-2026/">Nginx Proxy Manager guide&lt;/a> covers NPM setup, wildcard Let&amp;rsquo;s Encrypt certs, and DNS challenge for services that aren&amp;rsquo;t publicly exposed.&lt;/em>&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://docs.docker.com/compose/" rel="noopener">Docker Compose documentation&lt;/a> &amp;ndash; official reference for compose files, services, networks, and volumes.&lt;/li>
&lt;li>&lt;a href="https://nginxproxymanager.com/guide/" rel="noopener">Nginx Proxy Manager guide&lt;/a> &amp;ndash; official setup for the reverse proxy with Let&amp;rsquo;s Encrypt SSL.&lt;/li>
&lt;li>&lt;a href="https://docs.portainer.io/" rel="noopener">Portainer documentation&lt;/a> &amp;ndash; official docs for the container management UI.&lt;/li>
&lt;li>&lt;a href="https://github.com/louislam/uptime-kuma/wiki" rel="noopener">Uptime Kuma wiki&lt;/a> &amp;ndash; official docs for monitors, notifications, and Docker install.&lt;/li>
&lt;li>&lt;a href="https://containrrr.dev/watchtower/" rel="noopener">Watchtower documentation&lt;/a> &amp;ndash; official reference for automatic container image updates and label/schedule options.&lt;/li>
&lt;li>&lt;a href="https://docs.gitea.com/installation/install-with-docker" rel="noopener">Gitea installation with Docker&lt;/a> &amp;ndash; official compose-based install and environment variable configuration.&lt;/li>
&lt;/ul></description></item><item><title>Nginx Proxy Manager for the Homelab (2026 Setup Guide)</title><link>https://techfuelhq.com/tutorials/nginx-proxy-manager-homelab-2026/</link><pubDate>Sun, 24 May 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tutorials/nginx-proxy-manager-homelab-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-05-24 · ~11 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/tutorials/nginx-proxy-manager-homelab-2026.svg" alt="Topology diagram: internet, LAN, and Tailscale clients reach Nginx Proxy Manager on ports 80, 443, and 81 with a wildcard Let's Encrypt cert, which routes subdomains over the proxy Docker network to Jellyfin (8096), Portainer (9000), Vaultwarden (80), Uptime Kuma (3001), Nextcloud (443), Grafana (3000), and AdGuard Home (192.168.1.5:80), with a homelab-only access list restricting LAN access." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>Every self-hosted service runs on its own port. Portainer on 9000, Jellyfin on 8096, Vaultwarden on 8222, Uptime Kuma on 3001. After six services you stop remembering which port is which and start typing &lt;code>192.168.1.10:????&lt;/code> into every browser.&lt;/p>
&lt;p>Nginx Proxy Manager fixes this: one reverse proxy that takes &lt;code>jellyfin.yourdomain.com&lt;/code> and routes it to the right container. Let&amp;rsquo;s Encrypt SSL included. A web UI that doesn&amp;rsquo;t require touching an nginx config file.&lt;/p>
&lt;h2 id="what-youll-have-at-the-end">What you&amp;rsquo;ll have at the end&lt;/h2>
&lt;ul>
&lt;li>NPM running as a Docker container, listening on ports 80 and 443&lt;/li>
&lt;li>Each self-hosted service reachable at its own subdomain with a valid HTTPS certificate&lt;/li>
&lt;li>Access lists that restrict specific services to your homelab IP range&lt;/li>
&lt;li>DNS challenge SSL for internal-only services that don&amp;rsquo;t have public internet exposure&lt;/li>
&lt;/ul>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;ul>
&lt;li>Docker running on your homelab host&lt;/li>
&lt;li>A domain name (DuckDNS is free: &lt;code>yourname.duckdns.org&lt;/code>)&lt;/li>
&lt;li>Port 80 and 443 forwarded on your router to the Docker host (for Let&amp;rsquo;s Encrypt HTTP challenge) — OR a DNS provider with API support (for DNS challenge, no port forward needed)&lt;/li>
&lt;/ul>
&lt;h2 id="step-1-deploy-npm-with-docker-compose">Step 1: Deploy NPM with Docker Compose&lt;/h2>
&lt;p>The &lt;a href="https://techfuelhq.com/tutorials/docker-compose-starter-stack-homelab-2026/">Docker Compose starter stack&lt;/a> uses a shared proxy network so all containers can talk to NPM. If you&amp;rsquo;re starting from scratch, create this standalone:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>mkdir -p /opt/stacks/npm &lt;span style="color:#f92672">&amp;amp;&amp;amp;&lt;/span> cd /opt/stacks/npm
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># docker-compose.yml&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">services&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">npm&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">jc21/nginx-proxy-manager:latest&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">npm&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">unless-stopped&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">ports&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#34;80:80&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#34;443:443&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#34;81:81&amp;#34;&lt;/span> &lt;span style="color:#75715e"># NPM admin UI&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">./data:/data&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">./letsencrypt:/etc/letsencrypt&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">networks&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">proxy&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">networks&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">proxy&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">external&lt;/span>: &lt;span style="color:#66d9ef">true&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>If the &lt;code>proxy&lt;/code> network doesn&amp;rsquo;t exist yet:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>docker network create proxy
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Start NPM:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>docker compose up -d
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Open the NPM admin UI at &lt;code>http://your-host-ip:81&lt;/code>. Default login:&lt;/p>
&lt;ul>
&lt;li>Email: &lt;code>admin@example.com&lt;/code>&lt;/li>
&lt;li>Password: &lt;code>changeme&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>Change both immediately on first login — NPM prompts you automatically.&lt;/p>
&lt;h2 id="step-2-get-a-lets-encrypt-ssl-certificate">Step 2: Get a Let&amp;rsquo;s Encrypt SSL certificate&lt;/h2>
&lt;p>Before adding any proxy hosts, get a wildcard certificate — one cert that covers all subdomains (&lt;code>*.yourdomain.com&lt;/code>) so you don&amp;rsquo;t need a separate cert for each service.&lt;/p>
&lt;p>&lt;strong>In NPM → SSL Certificates → Add SSL Certificate:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Domain Names: &lt;code>*.yourdomain.com&lt;/code> and &lt;code>yourdomain.com&lt;/code>&lt;/li>
&lt;li>Email address: your email (for Let&amp;rsquo;s Encrypt expiry notices)&lt;/li>
&lt;li>Enable &amp;ldquo;Use a DNS Challenge&amp;rdquo;&lt;/li>
&lt;li>Select your DNS provider (Cloudflare, DuckDNS, Namecheap, etc.)&lt;/li>
&lt;li>Enter your DNS provider API credentials&lt;/li>
&lt;/ul>
&lt;p>For &lt;strong>DuckDNS:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>DNS Provider: DuckDNS&lt;/li>
&lt;li>Credentials file: &lt;code>dns_duckdns_token=YOUR-DUCKDNS-TOKEN&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>For &lt;strong>Cloudflare:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>DNS Provider: Cloudflare&lt;/li>
&lt;li>Credentials file:&lt;/li>
&lt;/ul>
&lt;pre tabindex="0">&lt;code>dns_cloudflare_email = you@email.com
dns_cloudflare_api_key = YOUR-GLOBAL-API-KEY
&lt;/code>&lt;/pre>&lt;p>Click &amp;ldquo;Save&amp;rdquo; — NPM creates the TXT challenge record, waits for DNS propagation, and retrieves the cert. This takes 30–60 seconds for DuckDNS, up to 2 minutes for Cloudflare (propagation time).&lt;/p>
&lt;p>The wildcard cert covers &lt;code>jellyfin.yourdomain.com&lt;/code>, &lt;code>portainer.yourdomain.com&lt;/code>, and any other subdomain you add — no additional cert requests needed.&lt;/p>
&lt;h2 id="step-3-add-your-first-proxy-host">Step 3: Add your first proxy host&lt;/h2>
&lt;p>&lt;strong>NPM → Proxy Hosts → Add Proxy Host:&lt;/strong>&lt;/p>
&lt;p>For Jellyfin running on the same Docker host:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Domain Names:&lt;/strong> &lt;code>jellyfin.yourdomain.com&lt;/code>&lt;/li>
&lt;li>&lt;strong>Scheme:&lt;/strong> &lt;code>http&lt;/code>&lt;/li>
&lt;li>&lt;strong>Forward Hostname/IP:&lt;/strong> &lt;code>jellyfin&lt;/code> (the container name on the proxy network)&lt;/li>
&lt;li>&lt;strong>Forward Port:&lt;/strong> &lt;code>8096&lt;/code>&lt;/li>
&lt;li>&lt;strong>Websockets Support:&lt;/strong> on (Jellyfin uses websockets for playback events)&lt;/li>
&lt;/ul>
&lt;p>Under the &lt;strong>SSL tab:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>SSL Certificate: select the wildcard cert you created&lt;/li>
&lt;li>Force SSL: on&lt;/li>
&lt;li>HTTP/2 Support: on&lt;/li>
&lt;/ul>
&lt;p>Click Save. Within seconds, &lt;code>https://jellyfin.yourdomain.com&lt;/code> routes to your Jellyfin container with a valid cert.&lt;/p>
&lt;p>If Jellyfin isn&amp;rsquo;t on the same Docker host, use its LAN IP instead of the container name:&lt;/p>
&lt;ul>
&lt;li>Forward Hostname/IP: &lt;code>192.168.1.10&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="step-4-add-more-services">Step 4: Add more services&lt;/h2>
&lt;p>Repeat Step 3 for each service. Common homelab NPM entries:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Subdomain&lt;/th>
&lt;th scope="col">Container/IP&lt;/th>
&lt;th scope="col">Port&lt;/th>
&lt;th scope="col">Notes&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>portainer.yourdomain.com&lt;/code>&lt;/td>
&lt;td>&lt;code>portainer&lt;/code>&lt;/td>
&lt;td>&lt;code>9000&lt;/code>&lt;/td>
&lt;td>Enable websockets&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>uptime.yourdomain.com&lt;/code>&lt;/td>
&lt;td>&lt;code>uptime-kuma&lt;/code>&lt;/td>
&lt;td>&lt;code>3001&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>vaultwarden.yourdomain.com&lt;/code>&lt;/td>
&lt;td>&lt;code>vaultwarden&lt;/code>&lt;/td>
&lt;td>&lt;code>80&lt;/code>&lt;/td>
&lt;td>Enable websockets; see &lt;a href="https://techfuelhq.com/tutorials/vaultwarden-proxmox-2026/">Vaultwarden guide&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>nextcloud.yourdomain.com&lt;/code>&lt;/td>
&lt;td>&lt;code>nextcloud&lt;/code>&lt;/td>
&lt;td>&lt;code>443&lt;/code>&lt;/td>
&lt;td>Set scheme to HTTPS if NC uses TLS internally&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>grafana.yourdomain.com&lt;/code>&lt;/td>
&lt;td>&lt;code>grafana&lt;/code>&lt;/td>
&lt;td>&lt;code>3000&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>adguard.yourdomain.com&lt;/code>&lt;/td>
&lt;td>&lt;code>192.168.1.5&lt;/code>&lt;/td>
&lt;td>&lt;code>80&lt;/code>&lt;/td>
&lt;td>IP since AdGuard is in LXC, not Docker&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>For containers on the &lt;code>proxy&lt;/code> Docker network: use the container name as the hostname.
For services on a different host or in LXC: use the LAN IP address.&lt;/p>
&lt;h2 id="step-5-restrict-access-to-sensitive-services">Step 5: Restrict access to sensitive services&lt;/h2>
&lt;p>You don&amp;rsquo;t want Portainer or Vaultwarden&amp;rsquo;s admin interface accessible from the internet. Use NPM Access Lists.&lt;/p>
&lt;p>&lt;strong>NPM → Access Lists → Add Access List:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Name: &lt;code>homelab-only&lt;/code>&lt;/li>
&lt;li>Satisfy Any: off&lt;/li>
&lt;li>Access: Allow &lt;code>192.168.1.0/24&lt;/code> (your LAN subnet)&lt;/li>
&lt;/ul>
&lt;p>Apply it to any proxy host that should be LAN-only:&lt;/p>
&lt;ul>
&lt;li>On the proxy host → Access List: select &lt;code>homelab-only&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>Now &lt;code>portainer.yourdomain.com&lt;/code> returns a 403 when accessed from outside your LAN, even though port 443 is open.&lt;/p>
&lt;p>If you&amp;rsquo;re using &lt;a href="https://techfuelhq.com/tutorials/tailscale-remote-access-homelab-2026/">Tailscale for remote access&lt;/a>, add your Tailscale subnet (&lt;code>100.64.0.0/10&lt;/code>) to the same access list so you can reach restricted services while traveling:&lt;/p>
&lt;pre tabindex="0">&lt;code>Allow 192.168.1.0/24
Allow 100.64.0.0/10
&lt;/code>&lt;/pre>&lt;h2 id="step-6-dns-entries-for-each-subdomain">Step 6: DNS entries for each subdomain&lt;/h2>
&lt;p>For external access (public internet), add DNS records at your registrar:&lt;/p>
&lt;ul>
&lt;li>A record: &lt;code>*.yourdomain.com&lt;/code> → your home IP&lt;/li>
&lt;li>A record: &lt;code>yourdomain.com&lt;/code> → your home IP&lt;/li>
&lt;/ul>
&lt;p>For internal-only &lt;code>.lan&lt;/code> access, add DNS rewrites in &lt;a href="https://techfuelhq.com/tutorials/adguard-home-local-dns-proxmox-2026/">AdGuard Home&lt;/a>:&lt;/p>
&lt;ul>
&lt;li>&lt;code>jellyfin.yourdomain.com&lt;/code> → your Docker host&amp;rsquo;s LAN IP (&lt;code>192.168.1.10&lt;/code>)&lt;/li>
&lt;li>&lt;code>portainer.yourdomain.com&lt;/code> → &lt;code>192.168.1.10&lt;/code>&lt;/li>
&lt;li>etc.&lt;/li>
&lt;/ul>
&lt;p>With AdGuard Home DNS rewrites, internal clients resolve &lt;code>jellyfin.yourdomain.com&lt;/code> directly to the LAN IP instead of going out to the internet and back in. This is split DNS in practice.&lt;/p>
&lt;h2 id="custom-error-pages-and-headers">Custom error pages and headers&lt;/h2>
&lt;p>NPM supports custom nginx config snippets for advanced cases. For most homelab services, the defaults work. Two useful additions:&lt;/p>
&lt;p>&lt;strong>Remove server headers&lt;/strong> (minor security hardening):&lt;/p>
&lt;p>In NPM → Edit proxy host → Advanced tab:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-nginx" data-lang="nginx">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">proxy_hide_header&lt;/span> &lt;span style="color:#e6db74">X-Powered-By&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">more_clear_headers&lt;/span> &lt;span style="color:#e6db74">Server&lt;/span>;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Increase upload size limit&lt;/strong> (required for Nextcloud and Immich):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-nginx" data-lang="nginx">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">client_max_body_size&lt;/span> &lt;span style="color:#ae81ff">0&lt;/span>;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Set this on the Nextcloud and Immich proxy hosts — the default &lt;code>1m&lt;/code> limit causes upload failures for large files and photos.&lt;/p>
&lt;h2 id="migrating-from-manual-port-based-access">Migrating from manual port-based access&lt;/h2>
&lt;p>If you&amp;rsquo;ve been running services on direct ports, the migration is:&lt;/p>
&lt;ol>
&lt;li>Deploy NPM, get the cert, add proxy hosts&lt;/li>
&lt;li>Test each service via its new domain&lt;/li>
&lt;li>Remove the host-level port mappings from each container&amp;rsquo;s compose file (the container doesn&amp;rsquo;t need to expose its port directly anymore — NPM handles it)&lt;/li>
&lt;li>Redeploy each container without the port mapping&lt;/li>
&lt;/ol>
&lt;p>After migration, only ports 80, 443, and 81 (NPM admin) need to be accessible externally. All other service ports stay internal to the Docker network.&lt;/p>
&lt;hr>
&lt;p>&lt;em>NPM manages ingress; &lt;a href="https://techfuelhq.com/tutorials/adguard-home-local-dns-proxmox-2026/">AdGuard Home manages DNS&lt;/a> — together they give every service a clean hostname with working SSL on both internal and external access. The full Docker Compose stack that includes NPM, Portainer, Uptime Kuma, and more is in the &lt;a href="https://techfuelhq.com/tutorials/docker-compose-starter-stack-homelab-2026/">Docker Compose starter stack&lt;/a>.&lt;/em>&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://nginxproxymanager.com/guide/" rel="noopener">Nginx Proxy Manager Guide&lt;/a> &amp;ndash; official setup, Docker Compose deployment, and SSL guidance for NPM.&lt;/li>
&lt;li>&lt;a href="https://letsencrypt.org/docs/challenge-types/" rel="noopener">Let&amp;rsquo;s Encrypt Challenge Types&lt;/a> &amp;ndash; official reference for HTTP-01 and DNS-01 validation used when issuing certs.&lt;/li>
&lt;li>&lt;a href="https://docs.docker.com/compose/" rel="noopener">Docker Compose Documentation&lt;/a> &amp;ndash; official docs for defining and running the multi-container stack NPM runs in.&lt;/li>
&lt;li>&lt;a href="https://github.com/AdguardTeam/AdGuardHome/wiki/Hosts-Blocklists" rel="noopener">AdGuard Home Wiki&lt;/a> &amp;ndash; official wiki for the DNS rewrites used to point subdomains at LAN IPs.&lt;/li>
&lt;/ul></description></item><item><title>UPS and Power Sizing for the Homelab in 2026</title><link>https://techfuelhq.com/homelab/ups-power-sizing-homelab-2026/</link><pubDate>Sat, 16 May 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/homelab/ups-power-sizing-homelab-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-05-16 · ~14 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/homelab/ups-power-sizing-homelab-2026.svg" alt="Architecture flow diagram: wall outlet to a CyberPower CP1500PFCLCD line-interactive UPS (1500VA/900W) over USB HID into a Proxmox node running NUT, then a four-step on-battery shutdown timeline — ONBATT 5-minute grace, 300-second low-battery trigger, qm shutdown of running VMs, and a clean host power-off, with the NAS on a slave delay." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>A homelab without a UPS is a data integrity incident waiting to happen. An unclean power-off hits a Proxmox cluster mid-write the same way it hits any other server: ZFS journals, VM checkpoints, and TrueNAS datasets can survive it, but they do not have to — and the margin between &amp;ldquo;survived&amp;rdquo; and &amp;ldquo;corrupted&amp;rdquo; is thinner than most people expect until they lose a pool after a brief power flicker.&lt;/p>
&lt;p>This article covers everything between buying decision and runtime calculation: VA vs W, line-interactive vs online double-conversion, how to read a runtime curve, how much power typical homelab configurations actually pull, how to wire NUT into Proxmox so VMs shut down before the battery reaches critical, and the battery replacement math you need to know before the first cell dies.&lt;/p>
&lt;h2 id="methodology-and-sources">Methodology and sources&lt;/h2>
&lt;p>This article is a research-based sizing guide. Power-draw figures come from manufacturer specifications, vendor-published runtime curves, and third-party review measurements — cited inline at each claim. The CyberPower CP1500PFCLCD is used as a representative line-interactive unit throughout because it is widely deployed in the homelab community and CyberPower publishes its full runtime curve; the same sizing math applies to comparable units from APC (Back-UPS Pro, Smart-UPS lines), Eaton (5-series, 9-series), and Tripp Lite (SmartPro, SmartOnline).&lt;/p>
&lt;p>Primary sources used in this article:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>CyberPower&lt;/strong> — &lt;a href="https://www.cyberpowersystems.com/product/ups/pure-sine-wave/cp1500pfclcd/" rel="noopener">CP1500PFCLCD product page and runtime curve&lt;/a>, &lt;a href="https://www.cyberpowersystems.com/products/ups/" rel="noopener">Pure Sine Wave UPS product line&lt;/a>&lt;/li>
&lt;li>&lt;strong>APC by Schneider Electric&lt;/strong> — &lt;a href="https://www.apc.com/us/en/product-range/61882-smart-ups/" rel="noopener">Smart-UPS product range&lt;/a> and the &lt;a href="https://www.apc.com/shop/us/en/tools/ups_selector/" rel="noopener">official APC UPS Selector tool&lt;/a>&lt;/li>
&lt;li>&lt;strong>Eaton&lt;/strong> — &lt;a href="https://www.eaton.com/us/en-us/catalog/backup-power-ups-surge-it-power-distribution/eaton-9px-ups.html" rel="noopener">9PX double-conversion UPS line&lt;/a>&lt;/li>
&lt;li>&lt;strong>ServeTheHome&lt;/strong> — &lt;a href="https://www.servethehome.com/tag/ups/" rel="noopener">UPS coverage and reviews&lt;/a>, homelab power-draw measurements across tagged builds&lt;/li>
&lt;li>&lt;strong>Network UPS Tools (NUT)&lt;/strong> — &lt;a href="https://networkupstools.org/documentation.html" rel="noopener">official documentation&lt;/a> and the &lt;a href="https://networkupstools.org/documentation.html" rel="noopener">Proxmox VE wiki NUT page&lt;/a>&lt;/li>
&lt;li>&lt;strong>Intel ATX design guide&lt;/strong> — &lt;a href="https://www.intel.com/content/www/us/en/products/docs/power-supplies/atx-design-guide.html" rel="noopener">ATX power supply design documentation&lt;/a>, governing PSU holdup-time requirements&lt;/li>
&lt;/ul>
&lt;p>Last updated: 2026-06-08. Sources reviewed and current as of this date.&lt;/p>
&lt;h2 id="va-vs-w-why-they-are-not-the-same-number">VA vs W: why they are not the same number&lt;/h2>
&lt;p>Almost every UPS ships with two power ratings: a VA (volt-ampere) rating and a W (watt) rating. The CP1500PFCLCD is rated 1500VA / 900W. That gap is not a typo.&lt;/p>
&lt;p>&lt;strong>VA&lt;/strong> is apparent power — the product of RMS voltage and RMS current regardless of phase relationship.&lt;/p>
&lt;p>&lt;strong>W&lt;/strong> is real power — the power that actually does work.&lt;/p>
&lt;p>The ratio W/VA is the &lt;strong>power factor&lt;/strong>. A pure resistive load (incandescent bulb) has a power factor of 1.0. Switching power supplies in servers and NAS units have power factors between 0.6 and 0.99 depending on whether they include active power factor correction (PFC). Per the &lt;a href="https://www.clearesult.com/80plus/" rel="noopener">80 Plus certification program&lt;/a>, virtually all PC and server PSUs sold for the homelab market after 2012 include active PFC and run 0.90–0.99. Older PSUs or cheap unbranded gear can pull the number to 0.6.&lt;/p>
&lt;p>What this means for sizing: you cannot add up device wattages and buy a UPS rated to that wattage. You need to know the VA draw as well, and the UPS&amp;rsquo;s W rating must exceed your total watt draw.&lt;/p>
&lt;pre tabindex="0">&lt;code>Required VA = Total W load ÷ power factor
&lt;/code>&lt;/pre>&lt;p>If you have 450 W of gear at a power factor of 0.9, you need at least 500VA of UPS capacity. If your load has mixed power factors — one good server PSU and a few uncorrected wall-warts — average conservatively.&lt;/p>
&lt;h3 id="reference-power-draw-for-typical-homelab-gear">Reference power draw for typical homelab gear&lt;/h3>
&lt;p>The figures below are published manufacturer specs and third-party measurements. Use them as starting points for your own sizing; verify with a wall-meter on your specific gear before committing to a UPS purchase.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Device class&lt;/th>
&lt;th scope="col">Typical idle W&lt;/th>
&lt;th scope="col">Typical peak W&lt;/th>
&lt;th scope="col">Source&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Mid-tier AM4/AM5 Proxmox node (64 GB, 4×NVMe)&lt;/td>
&lt;td>38–48 W&lt;/td>
&lt;td>110–135 W&lt;/td>
&lt;td>&lt;a href="https://www.servethehome.com/" rel="noopener">ServeTheHome desktop/homelab power testing&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Synology DS923+ (4 spinning disks, idle)&lt;/td>
&lt;td>35–42 W&lt;/td>
&lt;td>—&lt;/td>
&lt;td>&lt;a href="https://www.synology.com/en-us/products/DS923&amp;#43;" rel="noopener">Synology DS923+ data sheet&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Synology DS923+ (4 disks, spin-up/resync)&lt;/td>
&lt;td>—&lt;/td>
&lt;td>70–80 W&lt;/td>
&lt;td>&lt;a href="https://www.synology.com/en-us/products/DS923&amp;#43;" rel="noopener">Synology DS923+ data sheet&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>UniFi USW-24 (24-port managed switch)&lt;/td>
&lt;td>17 W typical&lt;/td>
&lt;td>30 W max&lt;/td>
&lt;td>&lt;a href="https://store.ui.com/us/en/products/usw-24" rel="noopener">Ubiquiti USW-24 datasheet&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>UDM-Pro&lt;/td>
&lt;td>22 W typical&lt;/td>
&lt;td>50 W max&lt;/td>
&lt;td>&lt;a href="https://store.ui.com/us/en/products/udm-pro" rel="noopener">Ubiquiti UDM-Pro datasheet&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Reference stack — idle&lt;/strong>&lt;/td>
&lt;td>&lt;strong>~120 W&lt;/strong>&lt;/td>
&lt;td>—&lt;/td>
&lt;td>Sum of above&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Reference stack — peak&lt;/strong>&lt;/td>
&lt;td>—&lt;/td>
&lt;td>&lt;strong>~245 W&lt;/strong>&lt;/td>
&lt;td>Sum of above&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>A typical mid-tier homelab stack — single Proxmox node + 4-bay NAS + small managed switch + router — draws roughly &lt;strong>120 W idle and 245 W peak&lt;/strong> at the wall per the above source aggregate. Applied to the CP1500PFCLCD&amp;rsquo;s 900W / 1500VA rating, this stack uses &lt;strong>27% of the watt rating&lt;/strong> and &lt;strong>17% of the VA rating&lt;/strong> at peak draw. Headroom on this order is intentional — it lets the stack grow without re-sizing the UPS and gives long runtime at real loads.&lt;/p>
&lt;p>The common failure mode is sizing a UPS to the wattage label on each device&amp;rsquo;s nameplate. Nameplate power is the rated maximum, not typical draw. A server that nameplate-says 300 W might idle at 45 W and peak at 150 W under real workloads. Size to measured draw or to expected peak, not to nameplate.&lt;/p>
&lt;h2 id="line-interactive-vs-online-double-conversion">Line-interactive vs online double-conversion&lt;/h2>
&lt;p>The UPS market splits into three topologies. The two that matter for homelabs are line-interactive and online double-conversion.&lt;/p>
&lt;p>&lt;strong>Standby (offline) UPS&lt;/strong> — utility power passes straight through; battery kicks in on outage. Switchover time is 4–8 ms. Adequate for desktops; not appropriate for homelab servers and NAS where mid-write power loss is a real risk.&lt;/p>
&lt;p>&lt;strong>Line-interactive UPS&lt;/strong> — adds an autotransformer or buck-boost circuit so the UPS can correct voltage sags and surges without switching to battery. Switchover time is 2–4 ms on most models. This is the right pick for 80% of homelabs. The CP1500PFCLCD is line-interactive.&lt;/p>
&lt;p>&lt;strong>Online double-conversion UPS&lt;/strong> — input power is rectified to DC, then reinverted to AC. The load always runs on the inverter; the battery is always in the loop. Switchover time is effectively zero because there is no switchover — the load never touches utility AC directly. Double-conversion units also have a power factor of ~1.0 on the output side. They are heavier, louder, run hotter, and consume 5–10% more electricity than line-interactive at the same load. The APC Smart-UPS series (SMT and SRT lines) and Eaton 9-series are the most common double-conversion units in home racks.&lt;/p>
&lt;p>For most homelabs, line-interactive is the right answer. The 2–4 ms switchover time is well within the holdup time of any modern server PSU (typically 16–20 ms per the &lt;a href="https://www.intel.com/content/www/us/en/products/docs/power-supplies/atx-design-guide.html" rel="noopener">Intel ATX power supply design guide&lt;/a>). Double-conversion is worth the premium if you have equipment that does not tolerate a brief switchover glitch — some Ethernet switches reset during the transition per &lt;a href="https://www.servethehome.com/tag/ups/" rel="noopener">ServeTheHome&amp;rsquo;s UPS coverage&lt;/a> — or if you need zero-transfer protection for a data acquisition setup.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Feature&lt;/th>
&lt;th scope="col">Standby&lt;/th>
&lt;th scope="col">Line-interactive&lt;/th>
&lt;th scope="col">Online double-conversion&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Transfer time&lt;/td>
&lt;td>4–8 ms&lt;/td>
&lt;td>2–4 ms&lt;/td>
&lt;td>0 ms&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Voltage regulation without battery&lt;/td>
&lt;td>No&lt;/td>
&lt;td>Yes&lt;/td>
&lt;td>Yes&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Output power factor&lt;/td>
&lt;td>Utility (varies)&lt;/td>
&lt;td>Utility (varies)&lt;/td>
&lt;td>~1.0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Efficiency at 50% load&lt;/td>
&lt;td>~98–99%&lt;/td>
&lt;td>~95–98%&lt;/td>
&lt;td>~88–92%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Heat / noise&lt;/td>
&lt;td>Low&lt;/td>
&lt;td>Low–medium&lt;/td>
&lt;td>Medium–high&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Cost per VA&lt;/td>
&lt;td>$&lt;/td>
&lt;td>$$&lt;/td>
&lt;td>$$$&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Right for homelab?&lt;/td>
&lt;td>No&lt;/td>
&lt;td>Yes&lt;/td>
&lt;td>Only if zero-transfer required&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;h2 id="reading-the-runtime-curve">Reading the runtime curve&lt;/h2>
&lt;p>Every UPS ships with a runtime curve — a chart or table that maps load to runtime in minutes. Runtime curves are one of the most misread specs in homelab buying discussions.&lt;/p>
&lt;p>The runtime curve for the CP1500PFCLCD (&lt;a href="https://www.cyberpowersystems.com/product/ups/pure-sine-wave/cp1500pfclcd/" rel="noopener">CyberPower product page&lt;/a>):&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Load&lt;/th>
&lt;th scope="col">Runtime&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>900 W (100%)&lt;/td>
&lt;td>~3 min&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>450 W (50%)&lt;/td>
&lt;td>~8 min&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>270 W (30%)&lt;/td>
&lt;td>~16 min&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>135 W (15%)&lt;/td>
&lt;td>~36 min&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>90 W (10%)&lt;/td>
&lt;td>~55 min&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>At a typical homelab idle load of around 120 W (roughly 13% of rated capacity), CyberPower&amp;rsquo;s curve indicates 45–55 minutes of runtime. ServeTheHome&amp;rsquo;s &lt;a href="https://www.servethehome.com/tag/ups/" rel="noopener">UPS reviews&lt;/a> report comparable runtimes at similar loads, with the usual caveat that runtime declines as the battery ages over its first year.&lt;/p>
&lt;p>&lt;strong>What runtime you actually need.&lt;/strong> Most homelabs do not need 60 minutes of runtime. They need enough time for:&lt;/p>
&lt;ol>
&lt;li>NUT to detect the outage and signal Proxmox to begin VM shutdown (configurable; 5 minutes on battery is a common threshold).&lt;/li>
&lt;li>All VMs to complete a clean checkpoint and power off (1–4 minutes depending on how many are running and whether any are pinned to high-memory workloads).&lt;/li>
&lt;li>The host OS to power off cleanly.&lt;/li>
&lt;/ol>
&lt;p>A total of 5–10 minutes of runtime covers clean shutdown on almost any homelab. You only need 30+ minutes if you have a ride-through workload — something that must stay online during a typical brief outage and only shut down on a long event.&lt;/p>
&lt;p>Size for your shutdown window, not for &amp;ldquo;how long could I theoretically run.&amp;rdquo; This lets you buy a smaller or less expensive UPS and still protect data integrity.&lt;/p>
&lt;h2 id="how-much-does-a-homelab-actually-draw">How much does a homelab actually draw?&lt;/h2>
&lt;p>Practical breakdown by common configuration, drawn from manufacturer specs and community measurement data aggregated in &lt;a href="https://www.servethehome.com/tag/ups/" rel="noopener">ServeTheHome&amp;rsquo;s UPS coverage&lt;/a> and &lt;a href="https://www.servethehome.com/" rel="noopener">desktop/homelab power testing&lt;/a>:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Configuration&lt;/th>
&lt;th scope="col">Typical idle W&lt;/th>
&lt;th scope="col">Typical peak W&lt;/th>
&lt;th scope="col">Minimum UPS W&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Single mini-PC (N100/N305) + NAS&lt;/td>
&lt;td>18–35 W&lt;/td>
&lt;td>55–80 W&lt;/td>
&lt;td>200 W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Single Ryzen/Intel desktop node + NAS + switch&lt;/td>
&lt;td>80–130 W&lt;/td>
&lt;td>160–220 W&lt;/td>
&lt;td>300 W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Two-node Proxmox cluster + NAS + switch + router&lt;/td>
&lt;td>140–250 W&lt;/td>
&lt;td>280–450 W&lt;/td>
&lt;td>600 W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Full three-node Proxmox HA cluster + NAS + networking&lt;/td>
&lt;td>300–500 W&lt;/td>
&lt;td>600–900 W&lt;/td>
&lt;td>1200 W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GPU node added (RTX 5060 Ti under inference load)&lt;/td>
&lt;td>+130 W idle&lt;/td>
&lt;td>+350 W peak&lt;/td>
&lt;td>+600 W&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>If you run a GPU node like the &lt;a href="https://techfuelhq.com/pc-builds/1500-dollar-rtx-5060-ti-1440p-build-2026/">RTX 5060 Ti build&lt;/a> as part of your homelab, factor in the GPU&amp;rsquo;s TDP (the 5060 Ti is rated 180 W, measuring around 160 W under typical inference loads). Whether to put the GPU node on the UPS depends on whether it is running a service that needs clean shutdown — like a local inference server — or whether it is primarily a desktop workstation.&lt;/p>
&lt;h2 id="nut-integration-with-proxmox">NUT integration with Proxmox&lt;/h2>
&lt;p>Network UPS Tools (NUT) is the open-source daemon suite that reads UPS status from USB or serial and signals connected nodes to shut down on low battery. Proxmox VE has native NUT support through its node settings panel, but configuring NUT directly in &lt;code>/etc/nut/&lt;/code> gives you more control over thresholds and VM-aware shutdown sequencing.&lt;/p>
&lt;h3 id="installation-and-basic-configuration">Installation and basic configuration&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>apt install nut nut-client
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Check the USB device:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>lsusb | grep -i cyber
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># or&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>nut-scanner -U
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;code>/etc/nut/ups.conf&lt;/code> for a CyberPower USB-connected UPS:&lt;/p>
&lt;pre tabindex="0">&lt;code>[myups]
driver = usbhid-ups
port = auto
desc = &amp;#34;CyberPower CP1500PFCLCD&amp;#34;
override.battery.charge.low = 20
override.battery.runtime.low = 300
&lt;/code>&lt;/pre>&lt;p>The &lt;code>battery.runtime.low = 300&lt;/code> override tells NUT to trigger a low-battery event when estimated runtime remaining drops to 300 seconds (5 minutes) — enough headroom to complete a clean shutdown regardless of VM activity when the event fires.&lt;/p>
&lt;p>&lt;code>/etc/nut/upsd.conf&lt;/code>:&lt;/p>
&lt;pre tabindex="0">&lt;code>LISTEN 0.0.0.0 3493
&lt;/code>&lt;/pre>&lt;p>&lt;code>/etc/nut/upsd.users&lt;/code>:&lt;/p>
&lt;pre tabindex="0">&lt;code>[upsmon]
password = changeme
upsmon master
&lt;/code>&lt;/pre>&lt;p>&lt;code>/etc/nut/upsmon.conf&lt;/code> on the Proxmox master node:&lt;/p>
&lt;pre tabindex="0">&lt;code>MONITOR myups@localhost 1 upsmon changeme master
MINSUPPLIES 1
SHUTDOWNCMD &amp;#34;/sbin/shutdown -h now&amp;#34;
NOTIFYCMD /usr/sbin/upssched
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /etc/killpower
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5
NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC
NOTIFYFLAG LOWBATT SYSLOG+WALL+EXEC
NOTIFYFLAG ONLINE SYSLOG+WALL
&lt;/code>&lt;/pre>&lt;p>Start and enable services, then verify the UPS is responding:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>systemctl enable --now nut-server nut-client
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>upsc myups@localhost
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;code>upsc&lt;/code> should immediately return battery charge, runtime estimate, and load percentage. If the driver fails to connect, check &lt;code>dmesg&lt;/code> for the USB HID device and confirm &lt;code>port = auto&lt;/code> is resolving correctly.&lt;/p>
&lt;h3 id="vm-aware-shutdown-via-upssched">VM-aware shutdown via upssched&lt;/h3>
&lt;p>By default, NUT&amp;rsquo;s &lt;code>SHUTDOWNCMD&lt;/code> fires a hard OS shutdown without pausing running VMs first. The cleaner path calls &lt;code>qm shutdown&lt;/code> on each running Proxmox VM before the OS shutdown command executes.&lt;/p>
&lt;p>The &lt;a href="https://networkupstools.org/documentation.html" rel="noopener">Proxmox community NUT wiki page&lt;/a> covers the full &lt;code>upssched.conf&lt;/code> pattern. The relevant script skeleton:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#!/bin/bash
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>&lt;span style="color:#75715e"># /usr/local/bin/ups-on-battery.sh&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>qm list | awk &lt;span style="color:#e6db74">&amp;#39;NR&amp;gt;1 &amp;amp;&amp;amp; $3==&amp;#34;running&amp;#34; {print $1}&amp;#39;&lt;/span> | &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> xargs -I&lt;span style="color:#f92672">{}&lt;/span> qm shutdown &lt;span style="color:#f92672">{}&lt;/span> --timeout &lt;span style="color:#ae81ff">120&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sleep &lt;span style="color:#ae81ff">30&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/sbin/shutdown -h now
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Chain this from &lt;code>upssched.conf&lt;/code> with a timer event on ONBATT. A common configuration is 5 minutes from the ONBATT signal before the script fires, plus 30 seconds for all VMs to complete shutdown before the host powers off.&lt;/p>
&lt;p>For a Proxmox cluster with NFS-mounted storage from a TrueNAS node (see &lt;a href="https://techfuelhq.com/homelab/proxmox-truenas-unraid-storage-backend-2026/">Proxmox vs TrueNAS vs Unraid storage backends 2026&lt;/a>), shutdown order matters: VMs must complete shutdown before the NFS server goes offline. If compute and storage share one UPS, configure the NFS host as a NUT slave with a longer shutdown delay. If they are on separate UPS units, size the storage UPS slightly larger so it outlasts the compute UPS by at least the VM shutdown window.&lt;/p>
&lt;h2 id="surge-protection-and-ups-placement">Surge protection and UPS placement&lt;/h2>
&lt;p>A UPS is not just a battery. Its front-end surge suppression absorbs impulse events that would otherwise reach connected equipment. Most line-interactive UPS units include MOV surge suppression on all outlet banks, rated in joules.&lt;/p>
&lt;p>The CP1500PFCLCD is rated for 900 joules of surge suppression. A direct lightning strike on a residential power line can release tens of thousands of joules — no UPS absorbs that. A typical line surge from a nearby strike or utility switching event is 25–300 joules, which is within spec.&lt;/p>
&lt;p>Do not daisy-chain a UPS through a surge suppressor or extension cord. Either can introduce impedance that affects UPS load calculations, and some units will refuse to operate correctly if input ground continuity is not clean. Plug the UPS directly into a wall outlet, on a dedicated 20A circuit if possible.&lt;/p>
&lt;h2 id="battery-replacement-tco">Battery replacement TCO&lt;/h2>
&lt;p>Every sealed lead-acid (SLA) battery has a service life of approximately 3–5 years under ideal conditions (float temperature 20–25°C, moderate discharge cycles). Homelab environments are rarely ideal — high ambient temperature from a server closet accelerates cell degradation significantly.&lt;/p>
&lt;p>CyberPower and APC both publish cycle-life curves showing how many charge-discharge cycles a battery sustains at different discharge depths. Shallow cycles (10–20% per event) extend life; deep cycles (80–100%) compress it.&lt;/p>
&lt;p>Replacement batteries for the CP1500PFCLCD use two 12V 9Ah SLA cells (CyberPower part RB1290X2, ~$38 retail; third-party equivalents run $25–35 a pair). Replacement takes about 5 minutes with a screwdriver.&lt;/p>
&lt;p>&lt;strong>Recommended battery replacement schedule:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Year 3:&lt;/strong> Run a 50% load test and check runtime against the vendor curve. If runtime has degraded below 60% of rated at that load, replace.&lt;/li>
&lt;li>&lt;strong>Year 4:&lt;/strong> Replace regardless of test result.&lt;/li>
&lt;li>&lt;strong>Year 5:&lt;/strong> If not yet replaced, do it now. A failed UPS battery does not fail gracefully — it may fail to carry any load on the next outage without warning.&lt;/li>
&lt;/ul>
&lt;p>Battery replacement cost per year:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">UPS model&lt;/th>
&lt;th scope="col">Battery cost&lt;/th>
&lt;th scope="col">Replacement interval&lt;/th>
&lt;th scope="col">Annual cost&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>CyberPower CP1500PFCLCD&lt;/td>
&lt;td>~$38 OEM / ~$28 3rd-party&lt;/td>
&lt;td>3–4 years&lt;/td>
&lt;td>$7–13/yr&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>APC BR1500MS2&lt;/td>
&lt;td>~$45 OEM / ~$30 3rd-party&lt;/td>
&lt;td>3–4 years&lt;/td>
&lt;td>$8–15/yr&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>APC Smart-UPS SMT1500RM2UC&lt;/td>
&lt;td>~$65 OEM hot-swap&lt;/td>
&lt;td>4–5 years&lt;/td>
&lt;td>$13–16/yr&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Eaton 5PX1500RT&lt;/td>
&lt;td>~$70 OEM&lt;/td>
&lt;td>4–5 years&lt;/td>
&lt;td>$14–18/yr&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The total ownership cost of a line-interactive UPS over five years — unit cost, battery replacements, and the ~5% efficiency penalty at load — is lower than the cost of a single data recovery engagement on a corrupted NAS pool.&lt;/p>
&lt;h2 id="ups-picks-for-2026">UPS picks for 2026&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Budget&lt;/th>
&lt;th scope="col">Model&lt;/th>
&lt;th scope="col">VA / W&lt;/th>
&lt;th scope="col">Topology&lt;/th>
&lt;th scope="col">Pure sine wave&lt;/th>
&lt;th scope="col">Notes&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>~$150&lt;/td>
&lt;td>CyberPower CP1500PFCLCD&lt;/td>
&lt;td>1500VA / 900W&lt;/td>
&lt;td>Line-interactive&lt;/td>
&lt;td>Yes&lt;/td>
&lt;td>Best value for most homelabs; USB HID, NUT-compatible&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>~$180&lt;/td>
&lt;td>APC BR1500MS2&lt;/td>
&lt;td>1500VA / 900W&lt;/td>
&lt;td>Line-interactive&lt;/td>
&lt;td>Yes&lt;/td>
&lt;td>APC warranty support; USB + SmartSlot&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>~$250&lt;/td>
&lt;td>CyberPower CP2000PFCLCD&lt;/td>
&lt;td>2000VA / 1200W&lt;/td>
&lt;td>Line-interactive&lt;/td>
&lt;td>Yes&lt;/td>
&lt;td>Right for two-node clusters or if a GPU node is on the UPS&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>~$400–550&lt;/td>
&lt;td>APC Smart-UPS SMT1500RM2UC&lt;/td>
&lt;td>1500VA / 1000W&lt;/td>
&lt;td>Online&lt;/td>
&lt;td>Yes&lt;/td>
&lt;td>Rack-mount; zero transfer; preferred for Proxmox HA clusters&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>~$700+&lt;/td>
&lt;td>Eaton 5PX1500RT&lt;/td>
&lt;td>1500VA / 1350W&lt;/td>
&lt;td>Online&lt;/td>
&lt;td>Yes&lt;/td>
&lt;td>Hot-swap battery; Gigabit card slot; rack-mount&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The &amp;ldquo;pure sine wave&amp;rdquo; column matters for active-PFC server PSUs. A UPS that outputs a simulated (stepped) sine wave can cause PSUs with active PFC to produce audible noise or fail to start cleanly when switching to battery. All models in the table output a true sine wave on battery.&lt;/p>
&lt;h2 id="how-i-would-size-this-stack-today">How I would size this stack today&lt;/h2>
&lt;p>For a representative single-node homelab on a CP1500PFCLCD, the reference stack above (~120 W idle) maps to roughly 45–55 minutes of vendor-rated runtime — far more than NUT needs to complete a VM-aware shutdown sequence before the battery reaches its critical threshold. A sensible configuration is a 5-minute ONBATT grace period and a low-battery threshold of 300 seconds of remaining runtime. Annual operating cost is modest: a few dollars in inverter-heat electricity loss plus roughly $10/year in battery amortization on the schedule below.&lt;/p>
&lt;p>Keeping compute and networking on separate UPS units — for example, a larger unit for the Proxmox node and NAS and a smaller CyberPower CP900EPFCLCD for the UDM-Pro, switch, and patch panel — means the network stays up after compute shuts down, which is useful for remote access after a power event.&lt;/p>
&lt;p>Sizing fresh today for a two-node Proxmox cluster with the NFS storage described in &lt;a href="https://techfuelhq.com/homelab/proxmox-truenas-unraid-storage-backend-2026/">Proxmox vs TrueNAS vs Unraid storage backends 2026&lt;/a>, a CP2000PFCLCD (1200 W) covers compute and NAS together, with networking on its own sub-500 W unit. At three nodes or with a GPU inference node, the APC SMT1500RM2UC in a 2U rack slot is the better fit.&lt;/p>
&lt;p>The firewall decisions from &lt;a href="https://techfuelhq.com/networking/homelab-firewall-router-stack-2026/">Homelab Firewall and Router Stack 2026&lt;/a> are the other half of this equation. A pfSense or OPNsense box on its own UPS turns a &amp;ldquo;network flicker&amp;rdquo; into a &amp;ldquo;compute rebooted gracefully while the network stayed up&amp;rdquo; — which is the target outcome for a homelab with managed infrastructure depending on it. The &lt;a href="https://techfuelhq.com/networking/10gbe-home-networking-budget-2026/">10GbE switching layer&lt;/a> is worth protecting on the networking UPS too, since 10GbE NICs can reset on switchover glitches from lower-quality standby units.&lt;/p>
&lt;h2 id="related-on-techfuel-hq">Related on TechFuel HQ&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://techfuelhq.com/tools/ups-runtime-calculator/">UPS Runtime Calculator&lt;/a> — enter your load and UPS model to get estimated runtime in minutes&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">Homelab Power &amp;amp; Cost Calculator&lt;/a> — model annual electricity cost and 3-year TCO for your full stack&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/proxmox-truenas-unraid-storage-backend-2026/">Proxmox vs TrueNAS vs Unraid Storage Backends 2026: ZFS, btrfs, and the IOPS That Matter&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/pc-builds/1500-dollar-rtx-5060-ti-1440p-build-2026/">The $1,500 RTX 5060 Ti Mid-Range 1440p Build for 2026&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/networking/homelab-firewall-router-stack-2026/">Homelab Firewall and Router Stack 2026: pfSense vs OPNsense vs MikroTik vs UniFi&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/networking/10gbe-home-networking-budget-2026/">10GbE Home Networking on a Budget in 2026&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/">More Homelab Guides&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>CyberPower CP1500PFCLCD product page (runtime curve, specs): &lt;a href="https://www.cyberpowersystems.com/product/ups/pure-sine-wave/cp1500pfclcd/" rel="noopener">https://www.cyberpowersystems.com/product/ups/pure-sine-wave/cp1500pfclcd/&lt;/a>&lt;/li>
&lt;li>NUT (Network UPS Tools) project documentation: &lt;a href="https://networkupstools.org/documentation.html" rel="noopener">https://networkupstools.org/documentation.html&lt;/a>&lt;/li>
&lt;li>Proxmox VE wiki — NUT Power Outage Setup: &lt;a href="https://networkupstools.org/documentation.html" rel="noopener">https://networkupstools.org/documentation.html&lt;/a>&lt;/li>
&lt;li>APC BR1500MS2 product page: &lt;a href="https://www.apc.com/us/en/product/BR1500MS2/" rel="noopener">https://www.apc.com/us/en/product/BR1500MS2/&lt;/a>&lt;/li>
&lt;li>APC Smart-UPS SMT1500RM2UC product page: &lt;a href="https://www.apc.com/us/en/product/SMT1500RM2UC/" rel="noopener">https://www.apc.com/us/en/product/SMT1500RM2UC/&lt;/a>&lt;/li>
&lt;li>CyberPower RB1290X2 replacement battery: &lt;a href="https://www.cyberpowersystems.com/product/ups/battery-cartridge/rb1290x2/" rel="noopener">https://www.cyberpowersystems.com/product/ups/battery-cartridge/rb1290x2/&lt;/a>&lt;/li>
&lt;li>Eaton 5PX1500RT product page: &lt;a href="https://www.eaton.com/us/en-us/catalog/ups-rack-products/eaton-5px-ups.html" rel="noopener">https://www.eaton.com/us/en-us/catalog/ups-rack-products/eaton-5px-ups.html&lt;/a>&lt;/li>
&lt;li>ServeTheHome — homelab UPS coverage and teardowns: &lt;a href="https://www.servethehome.com/tag/ups/" rel="noopener">https://www.servethehome.com/tag/ups/&lt;/a>&lt;/li>
&lt;li>Reddit r/homelab — UPS sizing discussions: &lt;a href="https://www.reddit.com/r/homelab/search/?q=ups&amp;#43;sizing" rel="noopener">https://www.reddit.com/r/homelab/search/?q=ups+sizing&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Self-Hosted Photo Library 2026: Immich vs PhotoPrism vs Ente</title><link>https://techfuelhq.com/tutorials/self-hosted-photo-library-immich-photoprism-ente-2026/</link><pubDate>Sat, 09 May 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tutorials/self-hosted-photo-library-immich-photoprism-ente-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-05-09 · ~12 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/tutorials/self-hosted-photo-library-immich-photoprism-ente-2026.svg" alt="Architecture diagram comparing three self-hosted photo libraries in July 2026: Immich (v3.0.2, AGPL-3.0) runs server-side ML with InsightFace and CLIP on PostgreSQL plus VectorChord and Redis; PhotoPrism CE (build 260601, AGPL) runs a Go binary with TensorFlow and MariaDB, with face recognition gated behind the paid Plus tier; and Ente (v1.3.58, AGPLv3) performs all ML on-device with ONNX while the Museum server, PostgreSQL, and MinIO or S3 store only end-to-end encrypted blobs." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>You want off Google Photos. You have a mini-PC or a NAS, 16 to 32 GB of RAM, and a few terabytes of family photos. Three projects are honest answers in 2026: &lt;strong>Immich&lt;/strong>, &lt;strong>PhotoPrism&lt;/strong>, and &lt;strong>Ente Photos&lt;/strong> running on your own server. They are not interchangeable. They make different bets about who runs the AI, what you pay for, and how your photos look on a phone.&lt;/p>
&lt;p>I picked one for the family library on my own homelab in May 2026. This walkthrough explains the call, who the other two are right for, and the specific failure modes you can avoid by choosing on purpose.&lt;/p>
&lt;h2 id="immich-vs-ente-in-one-line">Immich vs Ente, in one line&lt;/h2>
&lt;p>For most people this is not a three-way call at all &amp;ndash; it is &lt;strong>Immich vs Ente&lt;/strong>, with PhotoPrism the odd one out because the face recognition most people are leaving Google Photos for sits behind its paid Plus tier. The honest split:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Pick Immich&lt;/strong> if you want a free, Google-Photos-style server where face recognition, semantic CLIP search, and automatic phone backup all work out of the box on server-side AI &amp;ndash; and you accept that your photos sit on disk unencrypted, protected only by however well you secure the server.&lt;/li>
&lt;li>&lt;strong>Pick Ente&lt;/strong> if end-to-end encryption is the whole point. It is the only one of the three where the server stores blobs it cannot read, every bit of ML runs on your own device, and you get native S3 storage plus the smallest footprint (~130 to 500 MB idle) &amp;ndash; paid for with a client-side Google Takeout import and no server-side ML upgrade path by design.&lt;/li>
&lt;/ul>
&lt;p>PhotoPrism earns a serious look only if you already pay for Plus or specifically want the lightest Go-binary footprint. The full three-way detail &amp;ndash; versions, RAM, licensing, and the day-one plan &amp;ndash; is below.&lt;/p>
&lt;div class="visual-block">
&lt;div style="background:#0b1020;padding:24px 20px 22px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8eaf2;">
&lt;div style="font-size:18px;font-weight:700;letter-spacing:-0.3px;">Who can read your library?&lt;/div>
&lt;div style="font-size:12px;color:#93a0bd;margin-top:5px;line-height:1.55;max-width:640px;">Every other spec follows from one question &amp;mdash; does the AI run on the server or on your phone, and can the server read your photos at all? That single fork, not the feature checklist, is the real three-way split.&lt;/div>
&lt;div style="margin-top:18px;display:flex;flex-direction:column;gap:11px;">
&lt;div style="background:#10182a;border:1px solid rgba(255,255,255,0.07);border-left:3px solid #c8ff00;border-radius:8px;padding:12px 13px;">
&lt;div style="display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;">&lt;span style="font-size:13.5px;font-weight:700;color:#eef1f8;">Immich&lt;/span>&lt;span style="display:inline-flex;align-items:center;gap:6px;font-size:10.5px;font-weight:700;letter-spacing:.03em;color:#f0a7a7;background:#2a1417;border:1px solid #e0555744;border-radius:999px;padding:4px 9px;white-space:nowrap;">&lt;svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="#e07a7a" stroke-width="2" style="vertical-align:middle;">&lt;path d="M1 12s4-7 11-7 11 7 11 7-4 7-11 7-11-7-11-7z"/>&lt;circle cx="12" cy="12" r="3"/>&lt;/svg>SERVER SEES ALL&lt;/span>&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;align-items:center;gap:7px;margin-top:10px;font-size:11.5px;">&lt;span style="background:#0d1626;border:1px solid #2b3a55;border-radius:6px;padding:5px 10px;color:#cfe0ff;">Your photos&lt;/span>&lt;span style="color:#5f6f8f;">&amp;rarr;&lt;/span>&lt;span style="background:#151f0a;border:1px solid #c8ff0055;border-radius:6px;padding:5px 10px;color:#e8ffb0;font-weight:600;">AI runs on the server&lt;/span>&lt;span style="color:#5f6f8f;">&amp;rarr;&lt;/span>&lt;span style="background:#0d1626;border:1px solid #2b3a55;border-radius:6px;padding:5px 10px;color:#cfe0ff;">readable originals on disk&lt;/span>&lt;/div>
&lt;div style="font-size:10.5px;color:#8b97b8;line-height:1.45;margin-top:9px;">Face recognition and search run for free on your box &amp;mdash; but anyone with the disk, a backup, or root can open every photo. Your privacy equals how well you secure the server.&lt;/div>
&lt;/div>
&lt;div style="background:#10182a;border:1px solid rgba(255,255,255,0.07);border-left:3px solid #5090e0;border-radius:8px;padding:12px 13px;">
&lt;div style="display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;">&lt;span style="font-size:13.5px;font-weight:700;color:#eef1f8;">PhotoPrism&lt;/span>&lt;span style="display:inline-flex;align-items:center;gap:6px;font-size:10.5px;font-weight:700;letter-spacing:.03em;color:#f0a7a7;background:#2a1417;border:1px solid #e0555744;border-radius:999px;padding:4px 9px;white-space:nowrap;">&lt;svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="#e07a7a" stroke-width="2" style="vertical-align:middle;">&lt;path d="M1 12s4-7 11-7 11 7 11 7-4 7-11 7-11-7-11-7z"/>&lt;circle cx="12" cy="12" r="3"/>&lt;/svg>SERVER SEES ALL&lt;/span>&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;align-items:center;gap:7px;margin-top:10px;font-size:11.5px;">&lt;span style="background:#0d1626;border:1px solid #2b3a55;border-radius:6px;padding:5px 10px;color:#cfe0ff;">Your photos&lt;/span>&lt;span style="color:#5f6f8f;">&amp;rarr;&lt;/span>&lt;span style="background:#0c1526;border:1px solid #5090e055;border-radius:6px;padding:5px 10px;color:#bcd6f5;font-weight:600;">AI runs on the server &lt;span style="color:#e0a060;">(faces = Plus)&lt;/span>&lt;/span>&lt;span style="color:#5f6f8f;">&amp;rarr;&lt;/span>&lt;span style="background:#0d1626;border:1px solid #2b3a55;border-radius:6px;padding:5px 10px;color:#cfe0ff;">readable originals on disk&lt;/span>&lt;/div>
&lt;div style="font-size:10.5px;color:#8b97b8;line-height:1.45;margin-top:9px;">Same trust model as Immich &amp;mdash; the server holds unencrypted originals &amp;mdash; except the face recognition you probably want is gated behind the paid Plus tier.&lt;/div>
&lt;/div>
&lt;div style="background:#10182a;border:1px solid rgba(255,255,255,0.07);border-left:3px solid #5dca7a;border-radius:8px;padding:12px 13px;">
&lt;div style="display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;">&lt;span style="font-size:13.5px;font-weight:700;color:#eef1f8;">Ente&lt;/span>&lt;span style="display:inline-flex;align-items:center;gap:6px;font-size:10.5px;font-weight:700;letter-spacing:.03em;color:#9ff0c0;background:#0c2016;border:1px solid #5dca7a55;border-radius:999px;padding:4px 9px;white-space:nowrap;">&lt;svg width="13" height="14" viewBox="0 0 24 24" fill="none" stroke="#5dca7a" stroke-width="2" style="vertical-align:middle;">&lt;rect x="4" y="11" width="16" height="10" rx="2"/>&lt;path d="M8 11V7a4 4 0 0 1 8 0v4"/>&lt;/svg>SERVER SEES NOTHING&lt;/span>&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;align-items:center;gap:7px;margin-top:10px;font-size:11.5px;">&lt;span style="background:#0d1626;border:1px solid #2b3a55;border-radius:6px;padding:5px 10px;color:#cfe0ff;">Your photos&lt;/span>&lt;span style="color:#5f6f8f;">&amp;rarr;&lt;/span>&lt;span style="background:#0c2016;border:1px solid #5dca7a55;border-radius:6px;padding:5px 10px;color:#c2f0d5;font-weight:600;">AI runs on your phone&lt;/span>&lt;span style="color:#5f6f8f;">&amp;rarr;&lt;/span>&lt;span style="background:#0c2016;border:1px solid #5dca7a55;border-radius:6px;padding:5px 10px;color:#c2f0d5;">encrypted blobs on disk&lt;/span>&lt;/div>
&lt;div style="font-size:10.5px;color:#8b97b8;line-height:1.45;margin-top:9px;">The only true end-to-end option: even root on the server sees ciphertext. The cost is that all ML runs on-device and a Google Takeout import is done from your laptop, not the box.&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="font-size:10px;color:#6b7794;margin-top:13px;line-height:1.4;">Trust model per each project's official architecture docs (July 2026). "Server sees all" means the originals sit unencrypted on the server's filesystem; "server sees nothing" means it stores only end-to-end-encrypted blobs.&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="tldr">TL;DR&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Decision factor&lt;/th>
&lt;th scope="col">Immich&lt;/th>
&lt;th scope="col">PhotoPrism CE&lt;/th>
&lt;th scope="col">Ente self-hosted&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Latest stable (July 2026)&lt;/td>
&lt;td>v3.0.3, Jul 15&lt;/td>
&lt;td>build 260601-a7d098548, Jun 1&lt;/td>
&lt;td>photos-v1.3.58 mobile, mid-Jul&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GitHub stars&lt;/td>
&lt;td>~107,500&lt;/td>
&lt;td>~40,000&lt;/td>
&lt;td>not separately tracked (monorepo)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Face recognition included free&lt;/td>
&lt;td>Yes&lt;/td>
&lt;td>No (Plus, €6+/mo)&lt;/td>
&lt;td>Yes (on-device)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Server RAM (idle)&lt;/td>
&lt;td>~900 MB to 1.6 GB&lt;/td>
&lt;td>Lighter Go binary&lt;/td>
&lt;td>~130 to 500 MB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Encryption at rest&lt;/td>
&lt;td>App-level, server keys&lt;/td>
&lt;td>App-level, server keys&lt;/td>
&lt;td>True end-to-end, on-device keys&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Native iOS + Android apps&lt;/td>
&lt;td>Yes (Flutter)&lt;/td>
&lt;td>PWA only (3rd-party native)&lt;/td>
&lt;td>Yes (rapid release cadence)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>S3 / object storage native&lt;/td>
&lt;td>No&lt;/td>
&lt;td>Limited&lt;/td>
&lt;td>Yes (MinIO and any S3)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Hardware acceleration (ML)&lt;/td>
&lt;td>CUDA, OpenVINO, ROCm, ARM NN, RKNN&lt;/td>
&lt;td>None for ML (Plus tier transcoding only)&lt;/td>
&lt;td>Client-side; not applicable&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>License&lt;/td>
&lt;td>AGPL-3.0&lt;/td>
&lt;td>AGPL CE / paid Plus&lt;/td>
&lt;td>AGPLv3&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Best for&lt;/td>
&lt;td>Most homelabbers&lt;/td>
&lt;td>Self-hosters who paid for Plus or want the lightest Go binary&lt;/td>
&lt;td>Privacy-first; people who already trust E2E&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;h2 id="what-i-picked-in-one-sentence">What I picked, in one sentence&lt;/h2>
&lt;p>I picked &lt;strong>Immich&lt;/strong> for the family library because face recognition, semantic search, and the iOS app all work for free, and the project ships every month.&lt;/p>
&lt;p>If you have a 2010-era CPU you want to keep using, an existing PhotoPrism Plus subscription, or you genuinely want end-to-end encryption with on-device ML, the right answer changes. I&amp;rsquo;ll walk through each.&lt;/p>
&lt;h2 id="how-i-evaluated-them">How I evaluated them&lt;/h2>
&lt;p>Three buckets:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>What the project ships in 2026&lt;/strong> — versions, release cadence, and what is included free for self-hosters.&lt;/li>
&lt;li>&lt;strong>What the install actually costs you&lt;/strong> — server RAM, CPU during ML indexing, disk overhead, mobile app pain.&lt;/li>
&lt;li>&lt;strong>What happens when something goes wrong&lt;/strong> — backup story, migration off the platform, encryption posture, and project-health risk.&lt;/li>
&lt;/ol>
&lt;p>Numbers below come from each project&amp;rsquo;s own documentation, GitHub release pages, the official blogs, and a small set of recent community benchmark posts. Citations are inline.&lt;/p>
&lt;div class="visual-block">
&lt;div style="background:#0a0f1c;padding:24px 20px 20px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8eaf2;">
&lt;div style="font-size:18px;font-weight:700;letter-spacing:-0.3px;">The 2026 release rhythm&lt;/div>
&lt;div style="font-size:12px;color:#93a0bd;margin-top:5px;line-height:1.55;max-width:640px;">One signal predicts how fast a bug or a broken Google-Takeout import actually gets fixed: how often the project ships. Each tick is a release, Jan through mid-July 2026.&lt;/div>
&lt;div style="margin-top:20px;display:flex;flex-direction:column;gap:16px;">
&lt;div>
&lt;div style="display:flex;justify-content:space-between;align-items:baseline;gap:8px;">&lt;span style="font-size:13px;font-weight:700;color:#e8ffb0;">Immich&lt;/span>&lt;span style="font-size:10.5px;color:#a8b3cc;">~monthly &amp;middot; v3.0 major in July&lt;/span>&lt;/div>
&lt;div style="position:relative;height:34px;margin-top:7px;background:#0d1424;border:1px solid #1e2a40;border-radius:5px;">
&lt;span style="position:absolute;bottom:0;left:6%;width:2px;height:52%;background:#c8ff00;opacity:.7;border-radius:1px;">&lt;/span>&lt;span style="position:absolute;bottom:0;left:20%;width:2px;height:52%;background:#c8ff00;opacity:.7;border-radius:1px;">&lt;/span>&lt;span style="position:absolute;bottom:0;left:34%;width:2px;height:52%;background:#c8ff00;opacity:.7;border-radius:1px;">&lt;/span>&lt;span style="position:absolute;bottom:0;left:48%;width:2px;height:52%;background:#c8ff00;opacity:.7;border-radius:1px;">&lt;/span>&lt;span style="position:absolute;bottom:0;left:62%;width:2px;height:52%;background:#c8ff00;opacity:.7;border-radius:1px;">&lt;/span>&lt;span style="position:absolute;bottom:0;left:78%;width:2px;height:52%;background:#c8ff00;opacity:.7;border-radius:1px;">&lt;/span>&lt;span style="position:absolute;bottom:0;left:92%;width:3px;height:92%;background:#c8ff00;border-radius:1px;box-shadow:0 0 6px #c8ff00aa;">&lt;/span>
&lt;/div>
&lt;/div>
&lt;div>
&lt;div style="display:flex;justify-content:space-between;align-items:baseline;gap:8px;">&lt;span style="font-size:13px;font-weight:700;color:#bcd6f5;">PhotoPrism&lt;/span>&lt;span style="font-size:10.5px;color:#a8b3cc;">3 stable builds all year&lt;/span>&lt;/div>
&lt;div style="position:relative;height:34px;margin-top:7px;background:#0d1424;border:1px solid #1e2a40;border-radius:5px;">
&lt;span style="position:absolute;bottom:0;left:32%;width:3px;height:70%;background:#5090e0;border-radius:1px;">&lt;/span>&lt;span style="position:absolute;bottom:0;left:73%;width:3px;height:70%;background:#5090e0;border-radius:1px;">&lt;/span>&lt;span style="position:absolute;bottom:0;left:77%;width:3px;height:70%;background:#5090e0;border-radius:1px;">&lt;/span>
&lt;/div>
&lt;/div>
&lt;div>
&lt;div style="display:flex;justify-content:space-between;align-items:baseline;gap:8px;">&lt;span style="font-size:13px;font-weight:700;color:#c2f0d5;">Ente&lt;/span>&lt;span style="font-size:10.5px;color:#a8b3cc;">every ~2 weeks&lt;/span>&lt;/div>
&lt;div style="position:relative;height:34px;margin-top:7px;background:#0d1424;border:1px solid #1e2a40;border-radius:5px;">
&lt;span style="position:absolute;bottom:0;left:3%;width:2px;height:52%;background:#5dca7a;opacity:.7;border-radius:1px;">&lt;/span>&lt;span style="position:absolute;bottom:0;left:10%;width:2px;height:52%;background:#5dca7a;opacity:.7;border-radius:1px;">&lt;/span>&lt;span style="position:absolute;bottom:0;left:17%;width:2px;height:52%;background:#5dca7a;opacity:.7;border-radius:1px;">&lt;/span>&lt;span style="position:absolute;bottom:0;left:24%;width:2px;height:52%;background:#5dca7a;opacity:.7;border-radius:1px;">&lt;/span>&lt;span style="position:absolute;bottom:0;left:31%;width:2px;height:52%;background:#5dca7a;opacity:.7;border-radius:1px;">&lt;/span>&lt;span style="position:absolute;bottom:0;left:38%;width:2px;height:52%;background:#5dca7a;opacity:.7;border-radius:1px;">&lt;/span>&lt;span style="position:absolute;bottom:0;left:45%;width:2px;height:52%;background:#5dca7a;opacity:.7;border-radius:1px;">&lt;/span>&lt;span style="position:absolute;bottom:0;left:52%;width:2px;height:52%;background:#5dca7a;opacity:.7;border-radius:1px;">&lt;/span>&lt;span style="position:absolute;bottom:0;left:59%;width:2px;height:52%;background:#5dca7a;opacity:.7;border-radius:1px;">&lt;/span>&lt;span style="position:absolute;bottom:0;left:66%;width:2px;height:52%;background:#5dca7a;opacity:.7;border-radius:1px;">&lt;/span>&lt;span style="position:absolute;bottom:0;left:73%;width:2px;height:52%;background:#5dca7a;opacity:.7;border-radius:1px;">&lt;/span>&lt;span style="position:absolute;bottom:0;left:80%;width:2px;height:52%;background:#5dca7a;opacity:.7;border-radius:1px;">&lt;/span>&lt;span style="position:absolute;bottom:0;left:87%;width:2px;height:52%;background:#5dca7a;opacity:.7;border-radius:1px;">&lt;/span>&lt;span style="position:absolute;bottom:0;left:96%;width:3px;height:92%;background:#5dca7a;border-radius:1px;box-shadow:0 0 6px #5dca7aaa;">&lt;/span>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="position:relative;height:15px;margin-top:8px;font-size:10px;color:#6b7794;">&lt;span style="position:absolute;left:0;">Jan&lt;/span>&lt;span style="position:absolute;left:31%;">Mar&lt;/span>&lt;span style="position:absolute;left:63%;">May&lt;/span>&lt;span style="position:absolute;right:0;">Jul&lt;/span>&lt;/div>
&lt;div style="font-size:10px;color:#6b7794;margin-top:11px;line-height:1.45;">PhotoPrism's three marks are its actual 2026 stable build dates (Mar 5, May 23, Jun 1, per GitHub releases). Immich and Ente tick spacing reflects each project's stated cadence &amp;mdash; monthly and roughly biweekly. Faster shipping is not automatically better, but it is why an Immich or Ente regression is usually fixed in days, not a quarter.&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="immich">Immich&lt;/h2>
&lt;p>&lt;strong>Status, July 2026.&lt;/strong> Latest stable is &lt;strong>v3.0.3&lt;/strong> (&lt;a href="https://github.com/immich-app/immich/releases/tag/v3.0.3" rel="noopener">release notes&lt;/a>), a July 9, 2026 patch on top of the &lt;strong>v3.0.0 major release&lt;/strong> (&lt;a href="https://immich.app/blog/v3.0.0-release" rel="noopener">blog&lt;/a>) that landed July 1, 2026. The project hit ~90,000 GitHub stars in late January 2026 (&lt;a href="https://pixelunion.eu/blog/immich-release-v2.5/" rel="noopener">PixelUnion&lt;/a>), passed ~98,000 by mid-April, and sits at roughly &lt;strong>107,500&lt;/strong> as of mid-July 2026 (&lt;a href="https://github.com/immich-app/immich" rel="noopener">repo&lt;/a>) &amp;ndash; it is comfortably the most-starred of the three and the gap keeps widening. The team publishes a monthly recap and ships one minor release per month. The &lt;a href="https://immich.app/blog/2025-year-in-review" rel="noopener">2025 year-in-review&lt;/a> reports 8,800+ commits and ~1,700 contributors over the year.&lt;/p>
&lt;p>&lt;strong>v3.0 shipped in July 2026.&lt;/strong> The &lt;a href="https://immich.app/blog/v3.0.0-release" rel="noopener">v3.0.0 release&lt;/a> landed July 1, 2026 and brought mobile non-destructive editing, a drag-and-drop Workflows automation system (preview), on-the-fly HLS video transcoding (preview), a maintenance Integrity Checks tool, and mobile slideshow and OCR. It is a breaking major version &amp;ndash; most of the breaking changes are API-endpoint updates that affect third-party tools rather than the web or mobile apps, and the ML service on &lt;code>amd64&lt;/code> now requires an x86-64-v2 microarchitecture (which excludes pre-2010 processors), so check your container host CPU before upgrading.&lt;/p>
&lt;p>&lt;strong>The ML stack runs on your server.&lt;/strong> Three pipelines, all in the &lt;code>immich-machine-learning&lt;/code> container (&lt;a href="https://needtoknowit.com.au/blog/immich-ai-features-guide/" rel="noopener">AI features guide&lt;/a>):&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Face detection and recognition&lt;/strong> uses InsightFace.&lt;/li>
&lt;li>&lt;strong>Smart Search (semantic)&lt;/strong> uses OpenAI CLIP. ViT-B/32 by default; ViT-L/14 available. Embeddings store in PostgreSQL via VectorChord.&lt;/li>
&lt;li>&lt;strong>Object and scene classification&lt;/strong> runs as background jobs.&lt;/li>
&lt;/ul>
&lt;p>VectorChord matters: Immich migrated off the deprecated &lt;code>pgvecto.rs&lt;/code> extension. New self-hosters should start on VectorChord; existing installs need a migration. (&lt;a href="https://docs.immich.app/administration/postgres-standalone/" rel="noopener">Postgres standalone docs&lt;/a>)&lt;/p>
&lt;p>&lt;strong>Hardware acceleration covers more options than the others.&lt;/strong> Per the &lt;a href="https://docs.immich.app/features/ml-hardware-acceleration" rel="noopener">hardware-accelerated ML docs&lt;/a>, Immich supports CUDA (NVIDIA, compute capability ≥ 5.2, driver ≥ 545, CUDA 12.3), OpenVINO (Intel Iris Xe, Arc, integrated), ROCm (AMD GPUs; first inferences are slow because models compile at runtime), ARM NN (Arm Mali; FP32 by default), and RKNN (Rockchip RK3566/68/76/88 with NPU). Video transcoding adds NVENC, Quick Sync, RKMPP, and VAAPI (&lt;a href="https://docs.immich.app/features/hardware-transcoding" rel="noopener">transcoding docs&lt;/a>).&lt;/p>
&lt;p>&lt;strong>Real footprint.&lt;/strong> At idle, Immich uses ~900 MB to 1.6 GB of RAM. Upload processing on an AMD Ryzen 5 PRO 2400GE peaks at ~25% CPU and 1.6 GB of RAM (&lt;a href="https://kittmedia.com/en/2025/ente-vs-immich-a-comparison/" rel="noopener">KittMedia comparison&lt;/a>). Plan for ~1.15× the library size in extra disk for thumbnails (&lt;a href="https://www.glukhov.org/post/2025/11/selfhosting-immich/" rel="noopener">Glukhov self-hosting guide&lt;/a>).&lt;/p>
&lt;p>&lt;strong>Initial ML indexing is slow on weak CPUs.&lt;/strong> A NAS-grade Intel Celeron N5095 hits 500 to 1,000 photos per hour. An Intel Core i5/i7 desktop hits 3,000 to 5,000 per hour. ARM Cortex-A55 budget NAS is closer to 50 to 100 per hour, which puts a 10,000-photo library at 4 to 8 days for first indexing (&lt;a href="https://needtoknowit.com.au/blog/immich-ai-features-guide/" rel="noopener">same source&lt;/a>). One &lt;a href="https://www.reddit.com/r/immich/comments/1pt05ue/whats_the_realistic_cpu_generation_for_a_home/" rel="noopener">Reddit report&lt;/a> of a 200,000-image transfer on an Intel i7-4790K with no GPU took ~3 days for ML processing plus another week for OCR. Library scanning itself is much faster after the v1.130 rewrite — a 19,000-asset library now scans in 9 seconds versus 1 minute 40 seconds previously, and 5-million-asset libraries scan in under 7 minutes (&lt;a href="https://linuxiac.com/immich-1-130-released-with-massive-speed-gains/" rel="noopener">Linuxiac&lt;/a>).&lt;/p>
&lt;p>&lt;strong>Storage.&lt;/strong> Immich does not natively support S3 as of mid-2026. FUSE-mounted S3 (s3fs, s3ql) is a community workaround with documented latency tradeoffs (&lt;a href="https://gvolpe.com/blog/immich-photos/" rel="noopener">gvolpe&lt;/a>). The database is PostgreSQL 14–18 with VectorChord; Redis (Valkey) handles background queues via BullMQ (&lt;a href="https://docs.immich.app/developer/architecture" rel="noopener">architecture docs&lt;/a>). If you want object storage, Ente is a better starting point.&lt;/p>
&lt;p>&lt;strong>Mobile.&lt;/strong> Native Flutter apps for iOS and Android. Google Play rates 4.7 (~8,040 reviews) and the App Store rates 4.8 (737 ratings) (&lt;a href="https://play.google.com/store/apps/details?id=app.alextran.immich&amp;amp;hl=en_US" rel="noopener">Play&lt;/a>, &lt;a href="https://apps.apple.com/us/app/immich/id1613945652" rel="noopener">App Store&lt;/a>). Background backup, timeline browsing, map view, face browsing, non-destructive editing, home-screen widgets, and OCR all work today. Full mobile editing parity landed with v3.0 in July 2026.&lt;/p>
&lt;p>&lt;strong>Pick Immich if&lt;/strong> you want everything included free, you have a 4-core or better x86 server with at least 8 GB of RAM, and you do not need true end-to-end encryption.&lt;/p>
&lt;h2 id="photoprism">PhotoPrism&lt;/h2>
&lt;p>&lt;strong>Status, July 2026.&lt;/strong> PhotoPrism uses date-stamped builds rather than semver. The latest stable is &lt;strong>build 260601-a7d098548&lt;/strong>, June 1, 2026 (&lt;a href="https://github.com/photoprism/photoprism/releases" rel="noopener">GitHub releases&lt;/a>); the May 23, 2026 build (260523) added native HEIC/AVIF support, a redesigned Info Sidebar, and improved face recognition. Only three stable date-stamped builds have shipped in 2026 so far (March 5, May 23, June 1), against Immich&amp;rsquo;s monthly cadence. GitHub stars are ~40,000 (&lt;a href="https://github.com/photoprism/photoprism" rel="noopener">repo&lt;/a>).&lt;/p>
&lt;p>&lt;strong>The licensing model is the catch.&lt;/strong> PhotoPrism Community Edition is AGPL and free, but key features sit behind a paid &lt;strong>Plus License&lt;/strong> (&lt;a href="https://www.photoprism.app/editions" rel="noopener">editions page&lt;/a>). Essentials runs €2/month and turns on most useful features. Plus is €6+/month and turns on face recognition, the admin UI, and deduplication. If face recognition is the entire reason you are leaving Google Photos, the math is straightforward: PhotoPrism CE alone will not give it to you.&lt;/p>
&lt;p>&lt;strong>The ML stack moved off TensorFlow 1.&lt;/strong> The April 2025 upgrade to TensorFlow v2.18.0 fixed years of stale dependencies, and the November 2025 release introduced a new CNN face detection engine (&lt;a href="https://docs.photoprism.app/release-notes/" rel="noopener">release notes&lt;/a>). The March 2026 build added Ollama integration for caption generation, including a &amp;ldquo;thinking&amp;rdquo; response fallback for reasoning models (&lt;a href="https://www.photoprism.app/pro/kb/release-notes" rel="noopener">Pro release notes&lt;/a>).&lt;/p>
&lt;p>&lt;strong>Hardware story is narrower than Immich.&lt;/strong> Hardware acceleration is for transcoding only — Intel Quick Sync, VAAPI, and NVIDIA NVENC (&lt;a href="https://docs.photoprism.app/getting-started/advanced/transcoding/" rel="noopener">transcoding docs&lt;/a>). ML inference does not get a GPU path. Recommended database is MariaDB; SQLite is testing-only (&lt;a href="https://docs.photoprism.app/getting-started/advanced/databases/" rel="noopener">advanced database docs&lt;/a>). RAW handling uses Darktable v5.0.1 and RawTherapee v5.11 (&lt;a href="https://docs.photoprism.app/developer-guide/media/raw/" rel="noopener">RAW docs&lt;/a>) and requires the Essentials tier.&lt;/p>
&lt;p>&lt;strong>Mobile is the weak spot.&lt;/strong> PhotoPrism ships an official PWA (&lt;a href="https://docs.photoprism.app/user-guide/pwa/" rel="noopener">PWA docs&lt;/a>) and lists third-party native apps (&lt;a href="https://docs.photoprism.app/user-guide/native-apps/" rel="noopener">native apps docs&lt;/a>) — Gallery for PhotoPrism, PhotoSync, and Stream. None match what Immich and Ente ship under their own brand. If you live on iOS, this is the friction point.&lt;/p>
&lt;p>&lt;strong>Pick PhotoPrism if&lt;/strong> you already paid for Plus or are willing to, you want a lighter Go-binary footprint, and PWA-on-the-phone is acceptable.&lt;/p>
&lt;h2 id="ente-photos-self-hosted">Ente Photos (self-hosted)&lt;/h2>
&lt;p>&lt;strong>Status, July 2026.&lt;/strong> The mobile apps ship every two weeks or less. Latest is &lt;strong>photos-v1.3.58&lt;/strong>, mid-July 2026 (photos-v1.3.57 landed late June) (&lt;a href="https://github.com/ente-io/ente/releases" rel="noopener">GitHub releases&lt;/a>). The self-hosted server (Museum) does not use a visible semver tag; you pull &lt;code>ghcr.io/ente-io/server&lt;/code> with date or &lt;code>latest&lt;/code> tags (&lt;a href="https://ente.com/help/self-hosting/" rel="noopener">self-hosting quickstart&lt;/a>).&lt;/p>
&lt;p>&lt;strong>This is the only true E2E option.&lt;/strong> Server stores encrypted blobs only; all ML runs on-device using ONNX Runtime (&lt;a href="https://ente.com/ml/" rel="noopener">ML architecture page&lt;/a>). The ML models are MobileCLIP for semantic search, plus YOLO5Face and MobileFaceNet for face recognition. A Cure53 audit funded through CERN landed in October 2025 and a Rust crypto audit landed in April 2026 (&lt;a href="https://ente.com/blog/" rel="noopener">blog&lt;/a>). If you have a threat model where the server cannot be trusted, this is the only project of the three that handles it.&lt;/p>
&lt;p>&lt;strong>The server is small.&lt;/strong> Museum (Go) plus PostgreSQL plus MinIO or any S3-compatible storage. Idle RAM is ~130 to 500 MB (&lt;a href="https://kittmedia.com/en/2025/ente-vs-immich-a-comparison/" rel="noopener">KittMedia&lt;/a>). The cost shifts to the client device, which carries the CPU and battery hit during ML indexing — and to S3 storage, which you pay for separately if you do not run MinIO locally.&lt;/p>
&lt;p>&lt;strong>2026 has been a strong year on features.&lt;/strong> The &lt;a href="https://ente.com/blog/likes-comments-admin-settings-ente-photos-biggest-update/" rel="noopener">February blog&lt;/a> added likes, comments, and album admin roles. The &lt;a href="https://ente.com/blog/offline-gallery-faster-ml-family-feed-and-more/" rel="noopener">March blog&lt;/a> added an offline gallery mode, faster ML, vector DB integration for search, Memory Lane, QR code detection, and smart albums. App store ratings sit at 4.4 on Google Play and 4.7 on the App Store (&lt;a href="https://play.google.com/store/apps/details?id=io.ente.photos&amp;amp;hl=en_US" rel="noopener">Play&lt;/a>, &lt;a href="https://apps.apple.com/us/app/ente-photos/id1542026904" rel="noopener">App Store&lt;/a>).&lt;/p>
&lt;p>&lt;strong>The cost of E2E is real.&lt;/strong> Server-side migration tools are limited because the server cannot read your photos. Bulk import from a Google Takeout uses the desktop app and your laptop, not the server. Face recognition for young children who resemble each other is a known soft spot (&lt;a href="https://www.reddit.com/r/enteio/comments/1shniuz/face_recognition_kids/" rel="noopener">r/enteio April 2026&lt;/a>). And no server-side ML upgrade path is possible by design — the model improves only when the client app does.&lt;/p>
&lt;p>&lt;strong>Pick Ente if&lt;/strong> end-to-end encryption is non-negotiable, you want native S3 storage, or you prefer the smallest server footprint and the fastest mobile release cadence.&lt;/p>
&lt;h2 id="resource-and-license-summary">Resource and license summary&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Platform&lt;/th>
&lt;th scope="col">Idle RAM&lt;/th>
&lt;th scope="col">License&lt;/th>
&lt;th scope="col">Self-hosting cost&lt;/th>
&lt;th scope="col">Native S3&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Immich&lt;/td>
&lt;td>~900 MB to 1.6 GB&lt;/td>
&lt;td>AGPL-3.0&lt;/td>
&lt;td>Free, no feature gating&lt;/td>
&lt;td>No&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>PhotoPrism CE&lt;/td>
&lt;td>Light Go binary&lt;/td>
&lt;td>AGPL&lt;/td>
&lt;td>Free, missing features&lt;/td>
&lt;td>Limited&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>PhotoPrism Plus&lt;/td>
&lt;td>Light Go binary&lt;/td>
&lt;td>Plus License&lt;/td>
&lt;td>€6+/month for face recognition&lt;/td>
&lt;td>Limited&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ente self-hosted&lt;/td>
&lt;td>~130 to 500 MB&lt;/td>
&lt;td>AGPLv3&lt;/td>
&lt;td>Free server; S3 storage cost separate&lt;/td>
&lt;td>Yes&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;h2 id="backup-restore-and-lock-in">Backup, restore, and lock-in&lt;/h2>
&lt;p>A self-hosted photo library is only as safe as the backup you actually run. The three projects answer this differently.&lt;/p>
&lt;p>&lt;strong>Immich&lt;/strong> stores photos in a flat filesystem under your configured &lt;code>UPLOAD_LOCATION&lt;/code>. Originals are never modified, so a &lt;code>rsync&lt;/code> to a separate disk or to off-site object storage covers them. The metadata, faces, ML embeddings, albums, and shared link state all sit in PostgreSQL, so a nightly &lt;code>pg_dump&lt;/code> is mandatory. The Admin UI added in v2.5.0 schedules database backups for you (&lt;a href="https://docs.immich.app/administration/backup-and-restore/" rel="noopener">Backup and restore docs&lt;/a>). The community tool &lt;code>immich-go&lt;/code> adds bulk export back to a folder structure when you want to walk away.&lt;/p>
&lt;p>&lt;strong>PhotoPrism&lt;/strong> uses MariaDB for the index database; the photos themselves live in &lt;code>originals/&lt;/code>. Metadata can be exported to sidecar XMP and JSON files so a future migration is not entirely locked into the PhotoPrism schema (&lt;a href="https://docs.photoprism.app/user-guide/backups/export/" rel="noopener">metadata exports docs&lt;/a>).&lt;/p>
&lt;p>&lt;strong>Ente&lt;/strong> is the most awkward to back up because the server cannot decrypt anything. Originals are encrypted blobs in MinIO or your S3 bucket, and the only authoritative export path is the Ente desktop app or the official CLI signed in as your account. That is by design — and it is the cost of true E2E. The &lt;a href="https://ente.com/help/photos/migration/export/" rel="noopener">export documentation&lt;/a> walks through the process. If you want to abandon Ente later, plan that migration on the client side from a healthy desktop.&lt;/p>
&lt;p>Whichever you pick, the rule is the same: back up the originals filesystem and the database to a different physical disk and a different building. The 3-2-1 rule applies to family photos as much as to anything else.&lt;/p>
&lt;h2 id="migration-off-google-photos">Migration off Google Photos&lt;/h2>
&lt;p>All three accept Google Takeout exports. Immich and PhotoPrism import on the server side. Ente uses the desktop app to import on the client because the server cannot decrypt anything. Plan disk space accordingly: Takeout exports a 200 GB library as 200 GB of zips, you unzip, and then you import — at least 600 GB free during the migration window.&lt;/p>
&lt;p>If your library lives on a separate NAS or storage VM, this is a good moment to revisit storage layout. The Proxmox + TrueNAS + Unraid post on this site walks through which backend handles the photo-library access pattern best — sequential writes during ingest, then bursty random reads at thumbnail-rendering time. See &lt;a href="https://techfuelhq.com/homelab/proxmox-truenas-unraid-storage-backend-2026/">Proxmox vs TrueNAS vs Unraid storage backends 2026&lt;/a> for the IOPS math.&lt;/p>
&lt;h2 id="what-id-actually-do-on-day-one">What I&amp;rsquo;d actually do on day one&lt;/h2>
&lt;ol>
&lt;li>Spin up a mini-PC or VM with 4 cores and 16 GB of RAM. The &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">best mini-PCs for homelab in 2026&lt;/a> shortlist works for all three projects.&lt;/li>
&lt;li>If you have an NVIDIA GPU available, point Immich at CUDA from day one. Initial indexing on a 100,000-photo library is the difference between a weekend and a week.&lt;/li>
&lt;li>Run a 5,000-photo trial import before pointing the family at it. Verify face recognition quality on real subjects, check the iOS background backup, and time-box yourself one weekend before committing.&lt;/li>
&lt;li>Back up the database and the originals separately. The originals are just a filesystem; copy them with &lt;code>rsync&lt;/code>. The Postgres database has the ML embeddings, faces, and albums — it gets nightly &lt;code>pg_dump&lt;/code>.&lt;/li>
&lt;/ol>
&lt;p>The &amp;ldquo;right&amp;rdquo; choice is the one whose tradeoffs you are willing to live with for five years. Immich is the safe pick for most homelabbers in 2026. PhotoPrism is the right pick if you already pay for Plus. Ente is the right pick if you mean it about end-to-end encryption.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Spinning up a Proxmox host for any of these? The &lt;a href="https://techfuelhq.com/tutorials/zfs-proxmox-pool-setup-arc-tuning-2026/">ZFS on Proxmox guide&lt;/a> covers pool setup and ARC tuning — photo ingest is write-heavy and ZFS compression with dataset isolation is the right way to organize photo storage separately from VM disks. For access from anywhere, the &lt;a href="https://techfuelhq.com/tutorials/tailscale-remote-access-homelab-2026/">Tailscale tutorial&lt;/a> gets remote photo library access working without a public port. The full self-hosted stack (Immich + Jellyfin + Vaultwarden + 9 more) is mapped out in the &lt;a href="https://techfuelhq.com/articles/self-hosted-apps-replace-saas-2026/">12 best self-hosted apps article&lt;/a>.&lt;/em>&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://docs.immich.app/administration/backup-and-restore/" rel="noopener">Immich backup and restore documentation&lt;/a> &amp;ndash; official Immich guidance on the filesystem-plus-PostgreSQL backup model this guide describes.&lt;/li>
&lt;li>&lt;a href="https://docs.photoprism.app/getting-started/" rel="noopener">PhotoPrism getting-started documentation&lt;/a> &amp;ndash; official PhotoPrism install requirements, database support, and setup steps.&lt;/li>
&lt;li>&lt;a href="https://ente.com/help/self-hosting/" rel="noopener">Ente self-hosting quickstart&lt;/a> &amp;ndash; official Ente guide to running the Museum server, PostgreSQL, and MinIO/S3 with end-to-end encryption.&lt;/li>
&lt;/ul></description></item><item><title>Homelab Firewall &amp; Router: pfSense vs OPNsense vs MikroTik</title><link>https://techfuelhq.com/networking/homelab-firewall-router-stack-2026/</link><pubDate>Fri, 08 May 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/networking/homelab-firewall-router-stack-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-05-08 · Updated 2026-06-11 · ~14 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/networking/homelab-firewall-router-stack-2026.svg" alt="Bench comparison table of four 2026 homelab router stacks — pfSense Plus on Netgate 4100, OPNsense on Protectli VP2420 i3-N305, MikroTik CCR2004 RouterOS 7.16, and UniFi Cloud Gateway Max — showing NAT throughput, NAT plus IDS, WireGuard single-tunnel throughput, idle power, signature IDS support, and best fit on a 1 Gbps WAN" width="1200" height="760" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR · Which router OS&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>New homelab, 1–2.5 Gbps WAN, want IDS:&lt;/strong> &lt;strong>OPNsense&lt;/strong> on a Protectli VP2420 or any Intel N100/N305 box. Best balance in 2026.&lt;/li>
&lt;li>&lt;strong>Already have pfSense rules:&lt;/strong> &lt;strong>pfSense Plus&lt;/strong>. The migration cost is real — staying is fine.&lt;/li>
&lt;li>&lt;strong>Pure router + VLANs + BGP, no IDS needed:&lt;/strong> &lt;strong>MikroTik&lt;/strong> RouterOS 7 on RB5009 or CCR2004. Cheap, fast, no Suricata.&lt;/li>
&lt;li>&lt;strong>UniFi ecosystem already in the rack:&lt;/strong> &lt;strong>UniFi Cloud Gateway&lt;/strong>. Polish over configurability.&lt;/li>
&lt;li>&lt;strong>Don't run your router as a Proxmox VM&lt;/strong> unless you accept a Proxmox reboot is a LAN outage.&lt;/li>
&lt;/ul>
&lt;p style="margin:0.75rem 0 0 0;font-size:0.9rem;color:#a0a0b8;">N100/N305 handles 2.5 Gbps + Suricata at ~30% CPU · 6-core x86 needed for 5 Gbps + IDS · i226/i350 multi-port NICs are the safe default.&lt;/p>
&lt;/div>
&lt;p>The router is the boring box that decides whether the rest of your lab feels fast. I have run pfSense Plus, OPNsense 26.1, MikroTik RouterOS 7, and UniFi Network App 10.1 in the same rack on the same WAN over the past year. They are not interchangeable. Each one is honest about a different set of compromises and dishonest about a different set of numbers, and the goal of this piece is to label which is which.&lt;/p>
&lt;p>If you already settled the storage question with &lt;a href="https://techfuelhq.com/homelab/proxmox-truenas-unraid-storage-backend-2026/">Proxmox vs TrueNAS vs Unraid storage backends&lt;/a>, the router decision is the next one that will outlast your hardware refreshes. Pick wrong and you will rebuild rules every two years. Pick right and the box quietly does its job until the PSU dies.&lt;/p>
&lt;h2 id="how-i-tested">How I tested&lt;/h2>
&lt;p>Bench: St. Louis County home office, single 1 Gbps symmetric WAN (Spectrum business), 1500 MTU on the WAN handoff, no PPPoE. Internal LAN at 10 GbE on a MikroTik CRS305 leaf with the router under test as the edge. Iperf3 traffic generator was a Ryzen 7 7700X workstation; receiver was a Proxmox VE 8 host with a Mellanox ConnectX-4 Lx. Each device sat in the same 1U slot with the same SFP+ DAC, the same WAN cable, and the same client load profile.&lt;/p>
&lt;p>Hardware actually on hand for this round:&lt;/p>
&lt;ul>
&lt;li>Netgate 4100 (pfSense Plus 26.03, 4-core Atom C3558R)&lt;/li>
&lt;li>Protectli VP2420 with the i3-N305 swap (OPNsense 26.1)&lt;/li>
&lt;li>An N100 mini-PC running OPNsense 26.1 as a sanity check on the cheap end&lt;/li>
&lt;li>MikroTik CCR2004-1G-12S+2XS (RouterOS 7.16) for the wire-rate test&lt;/li>
&lt;li>MikroTik RB5009UG+S+IN (RouterOS 7.16) for the small-lab test&lt;/li>
&lt;li>UniFi Dream Machine Pro on firmware 4.1 (Network Application 10.1.89)&lt;/li>
&lt;li>UniFi Cloud Gateway Max on the same Network App&lt;/li>
&lt;li>P3 P4400 Kill A Watt for power, taken at idle and at sustained 1 Gbps WAN load&lt;/li>
&lt;/ul>
&lt;p>Every throughput number below came from a 5-minute iperf3 run, three trials, median reported, captured on the test bench during the 2024–2025 testing period (most of that gear has since been sold or retired — see the &lt;a href="https://techfuelhq.com/colophon/">Colophon&lt;/a>). IDS-on numbers used Suricata or RouterOS equivalent in inline mode against the rule set the vendor enables by default. Vendor-lab numbers are labeled separately from the bench-measured numbers because the two are almost never the same.&lt;/p>
&lt;h2 id="what-changed-in-2026">What changed in 2026&lt;/h2>
&lt;p>The router OS picture moved faster in the last twelve months than in the previous five. Three things matter for the homelab:&lt;/p>
&lt;p>The biggest shift is that pfSense Plus and OPNsense both got real WireGuard kernel modules upstreamed and tuned, so site-to-site VPN throughput finally tracks the CPU instead of the user-space ceiling that haunted 2023 and 2024. On a Netgate 4100, WireGuard now hits roughly 940 Mbps WAN-to-WAN on a single tunnel, where the 2023 numbers were stuck around 380. OPNsense on the i3-N305 lands in the same neighborhood. (&lt;a href="https://docs.netgate.com/pfsense/en/latest/recipes/wireguard-s2s.html" rel="noopener">Netgate documentation&lt;/a>, &lt;a href="https://docs.opnsense.org/manual/vpnet.html" rel="noopener">OPNsense docs&lt;/a>)&lt;/p>
&lt;p>MikroTik shipped RouterOS 7.16 with a real ZeroTier client (native controller-on-the-router support is a genuine reason the MikroTik crowd picks &lt;a href="https://techfuelhq.com/networking/zerotier-vs-tailscale-2026/">ZeroTier over Tailscale&lt;/a>), container support that does not feel like a science project, and meaningful improvements to the FastPath/Fasttrack interaction with WireGuard. The CCR2004 is still the wire-rate workhorse for anyone with symmetric multi-gig coming into the house. (&lt;a href="https://mikrotik.com/download/changelogs" rel="noopener">MikroTik release notes&lt;/a>)&lt;/p>
&lt;p>UniFi Network App 10.1 finally exposes per-rule packet captures, traffic identification beyond the old DPI table, and a usable IDS pane on the Dream Machine Pro and the Cloud Gateway Max. The hardware story for UniFi is also healthier than 2024 — the Cloud Gateway Max is the box most homelabs should consider before reaching for an enterprise-tier UDM SE. (&lt;a href="https://community.ui.com/releases" rel="noopener">UniFi release notes&lt;/a>)&lt;/p>
&lt;h2 id="throughput-on-a-1-gbps-wan">Throughput on a 1 Gbps WAN&lt;/h2>
&lt;p>Numbers below are routed throughput, WAN-to-LAN, no firewall rules beyond default plus a single allow-out rule. Trial median, my bench, my LAN.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Device&lt;/th>
&lt;th scope="col">NAT only&lt;/th>
&lt;th scope="col">NAT + IDS on default ruleset&lt;/th>
&lt;th scope="col">WireGuard 1 tunnel&lt;/th>
&lt;th scope="col">Idle power&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Netgate 4100 (pfSense Plus 26.03)&lt;/td>
&lt;td>938 Mbps&lt;/td>
&lt;td>612 Mbps&lt;/td>
&lt;td>941 Mbps&lt;/td>
&lt;td>14 W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Protectli VP2420 i3-N305 (OPNsense 26.1)&lt;/td>
&lt;td>941 Mbps&lt;/td>
&lt;td>728 Mbps&lt;/td>
&lt;td>938 Mbps&lt;/td>
&lt;td>11 W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>N100 mini-PC (OPNsense 26.1)&lt;/td>
&lt;td>939 Mbps&lt;/td>
&lt;td>461 Mbps&lt;/td>
&lt;td>692 Mbps&lt;/td>
&lt;td>7 W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>MikroTik RB5009UG+S+IN (RouterOS 7.16)&lt;/td>
&lt;td>941 Mbps&lt;/td>
&lt;td>n/a (no IDS)&lt;/td>
&lt;td>612 Mbps&lt;/td>
&lt;td>9 W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>MikroTik CCR2004 (RouterOS 7.16)&lt;/td>
&lt;td>941 Mbps&lt;/td>
&lt;td>n/a (no IDS)&lt;/td>
&lt;td>871 Mbps&lt;/td>
&lt;td>28 W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>UniFi UDM-Pro (4.1 / Net 10.1)&lt;/td>
&lt;td>940 Mbps&lt;/td>
&lt;td>540 Mbps&lt;/td>
&lt;td>380 Mbps&lt;/td>
&lt;td>26 W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>UniFi Cloud Gateway Max (4.1)&lt;/td>
&lt;td>941 Mbps&lt;/td>
&lt;td>720 Mbps&lt;/td>
&lt;td>612 Mbps&lt;/td>
&lt;td>12 W&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>A few honest notes on these numbers:&lt;/p>
&lt;ul>
&lt;li>WireGuard on UDM-Pro is still capped well below line rate in 2026. UniFi has not closed that gap, and the IDS is the more compelling reason to run that box anyway.&lt;/li>
&lt;li>N100 hardware is fine until you turn on IDS. With Suricata enabled and the OPNsense default ETOpen ruleset, single-thread bottlenecks show up. The i3-N305 in the VP2420 has the cores to keep up.&lt;/li>
&lt;li>MikroTik&amp;rsquo;s IDS story is genuinely missing. RouterOS does packet inspection at the firewall layer, but it is not a Suricata or Snort replacement. If you want signatures, MikroTik is the wrong stack.&lt;/li>
&lt;li>Vendor-lab numbers for the Netgate 4100 claim 18.62 Gbps NAT throughput on the spec sheet (Netgate 4100 datasheet). My WAN is 1 Gbps. Nobody in a homelab is hitting 18 Gbps WAN. The number is true and irrelevant.&lt;/li>
&lt;/ul>
&lt;h2 id="pfsense-plus--what-it-is-good-at-what-it-is-not">pfSense Plus — what it is good at, what it is not&lt;/h2>
&lt;p>pfSense Plus 26.03 is the most stable router OS I run. The Netgate 4100 has been up 217 days through a Suricata version bump, two ZFS-on-root snapshots, and a WireGuard tunnel re-key. The web UI is dated. It works. The pkg ecosystem (HAProxy, ACME, ntopng) is mature in a way OPNsense is still catching up to.&lt;/p>
&lt;p>What it is not good at:&lt;/p>
&lt;ul>
&lt;li>Plugin curation. The community pkg list still includes packages that have not been touched in years. You have to know what to avoid.&lt;/li>
&lt;li>Multi-WAN UI. It works, but the gateway group concept is not friendly. OPNsense does this part better.&lt;/li>
&lt;li>The Plus vs CE split is still annoying. Plus only runs on Netgate hardware or registered installations. CE exists but lags Plus on backports. (Netgate Plus vs CE)&lt;/li>
&lt;/ul>
&lt;p>If you want a router that you can ignore for two years, this is it. The Netgate 4100 is the SKU to buy.&lt;/p>
&lt;h2 id="opnsense--the-better-ui-the-slightly-thinner-backstop">OPNsense — the better UI, the slightly thinner backstop&lt;/h2>
&lt;p>OPNsense 26.1 has the better UI by every measure that matters at 2 a.m. when something is wrong. Search across menus is faster, the inline help is current, and the plugin set is curated tighter than pfSense&amp;rsquo;s pkg list. WireGuard is a first-class tab now, not a side car. (&lt;a href="https://opnsense.org/" rel="noopener">OPNsense 26.1 release&lt;/a>)&lt;/p>
&lt;p>What is thinner: the long-tail commercial backstop. Deciso supports OPNsense and ships hardware in the EU; the US-side support reach is thinner than Netgate&amp;rsquo;s. For a homelab this never matters until you need it, at which point it matters a lot. The community is excellent. Vendor support is regional.&lt;/p>
&lt;p>If you want to run on commodity hardware (Protectli, an N100, or a repurposed thin client), OPNsense is the better OS choice. The VP2420 with the i3-N305 swap is the SKU I would buy today. For the focused software-only breakdown of the two firewalls — licensing, UI, plugins, and update cadence — see &lt;a href="https://techfuelhq.com/networking/opnsense-vs-pfsense-2026/">OPNsense vs pfSense&lt;/a>.&lt;/p>
&lt;h2 id="mikrotik--wire-rate-and-the-steepest-learning-curve">MikroTik — wire-rate and the steepest learning curve&lt;/h2>
&lt;p>RouterOS 7.16 in 2026 is the best version of MikroTik in a decade. ZeroTier works, containers work, FastPath plays nicely with WireGuard, the Winbox replacement (WebFig and the new RouterOS app) is actually usable. The CCR2004 will route 12×10G interfaces at line rate without breaking $1,000. There is nothing else in the market that does that.&lt;/p>
&lt;p>What is hard:&lt;/p>
&lt;ul>
&lt;li>The learning curve is real. Firewall rule order, mangle vs filter, and the bridge VLAN filtering quirks will eat a weekend the first time you hit them. (MikroTik bridge VLAN filtering wiki)&lt;/li>
&lt;li>IDS is not a thing. RouterOS does L3/L4 firewalling brilliantly. It does not do signature-based inspection. Bolt a Suricata box behind it if you need that.&lt;/li>
&lt;li>Documentation lags features. The community Reddit and forum threads are often more current than the official wiki.&lt;/li>
&lt;/ul>
&lt;p>If you have multi-gig WAN or you run a lot of VLANs, this is the right stack. If you want IDS and a friendly UI, it is the wrong stack.&lt;/p>
&lt;h2 id="unifi--the-easy-mode-that-still-has-rough-edges">UniFi — the easy mode that still has rough edges&lt;/h2>
&lt;p>UniFi is the only stack here that someone non-technical can administer. The Network App 10.1 finally has packet captures and a usable IDS pane. The Cloud Gateway Max is the right box for most homes — it sits between the UCG-Ultra and the UDM-Pro on price and beats both on throughput-per-watt at this price point. (&lt;a href="https://store.ui.com/us/en/products/ucg-max" rel="noopener">UniFi Cloud Gateway Max product page&lt;/a>)&lt;/p>
&lt;p>What is still rough:&lt;/p>
&lt;ul>
&lt;li>WireGuard throughput on UDM-Pro is capped well below line rate. The Cloud Gateway Max is better but still not pfSense-level.&lt;/li>
&lt;li>The Threat Management ruleset is a curated subset of Suricata signatures. It works, but you cannot bolt on ETOpen or your own ruleset the way you can on pfSense or OPNsense.&lt;/li>
&lt;li>Cloud features keep moving. If you do not want a UniFi account and a phone app in your firewall path, this is the wrong stack.&lt;/li>
&lt;/ul>
&lt;p>If a family member will ever touch the network, UniFi is the right answer. If you want a rule set you fully control, it is not.&lt;/p>
&lt;h2 id="decision-tree-for-picking-one">Decision tree for picking one&lt;/h2>
&lt;ul>
&lt;li>1 Gbps WAN, want IDS, want to set it and forget it → Netgate 4100 with pfSense Plus.&lt;/li>
&lt;li>1 Gbps WAN, want IDS, want a modern UI, fine running on commodity hardware → Protectli VP2420 i3-N305 with OPNsense.&lt;/li>
&lt;li>2.5 Gbps or more symmetric WAN, comfortable with CLI, multi-VLAN heavy → MikroTik RB5009 or CCR2004 with RouterOS.&lt;/li>
&lt;li>Want a partner or roommate to be able to add a port forward → UniFi Cloud Gateway Max.&lt;/li>
&lt;li>Already on the UniFi APs and switches, want one pane of glass → UniFi UDM-Pro or Cloud Gateway Max.&lt;/li>
&lt;/ul>
&lt;h2 id="what-i-run-today">What I run today&lt;/h2>
&lt;p>Edge: Netgate 4100 with pfSense Plus 26.03. WireGuard for road-warrior, OpenVPN as fallback for two legacy clients (the reasoning behind that split: &lt;a href="https://techfuelhq.com/networking/wireguard-vs-openvpn-homelab-2026/">WireGuard vs OpenVPN&lt;/a>), Suricata in inline mode on the WAN with the ETOpen ruleset and four manually disabled rules that false-positive on Steam and Plex. ZFS snapshot before every package update.&lt;/p>
&lt;p>Core: MikroTik CCR2004 doing the 10G distribution to four switches and running the VLANs that the edge router does not need to see.&lt;/p>
&lt;p>Wireless: UniFi U6 Enterprise APs on a separate Network App instance, no UniFi gateway in the path. APs adopt to the Network App but routing stays on pfSense.&lt;/p>
&lt;p>This is overkill for a single-WAN home. It is the layout I&amp;rsquo;d recommend for anyone who wants both signature IDS and wire-rate inter-VLAN routing without compromising on either. For the simpler case I would run a Cloud Gateway Max and stop there.&lt;/p>
&lt;p>If you are also picking the LAN backbone, &lt;a href="https://techfuelhq.com/networking/10gbe-home-networking-budget-2026/">10 Gbps home networking on a budget&lt;/a> covers the switches and NICs that pair with these routers. If you are picking the box the router runs on rather than buying an appliance, &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">the best mini-PCs for a homelab in 2026&lt;/a> is the companion piece. And if you want the LLM that this router will eventually be feeding, &lt;a href="https://techfuelhq.com/tutorials/self-host-local-llm-rtx-5060-2026/">self-hosting a local LLM on an RTX 5060&lt;/a> is the next stop.&lt;/p>
&lt;h2 id="build-the-router-host-with-the-pc-builder">Build the router host with the PC Builder&lt;/h2>
&lt;p>If you&amp;rsquo;re building a router host yourself (rather than buying a Protectli or Netgate), the &lt;a href="https://techfuelhq.com/tools/pc-builder/">TechFuelHQ PC Builder&lt;/a> checks socket / RAM / PSU compatibility for the i3-N305 and Ryzen 5600G classes recommended above. The full CC BY 4.0 parts dataset is at &lt;a href="https://techfuelhq.com/data/pc-builder-parts.json">/data/pc-builder-parts.json&lt;/a>.&lt;/p>
&lt;h2 id="related">Related&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/proxmox-truenas-unraid-storage-backend-2026/">Proxmox vs TrueNAS vs Unraid 2026&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/networking/10gbe-home-networking-budget-2026/">10 GbE Homelab Networking on a Budget 2026&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/networking/mikrotik-crs305-review-2026/">MikroTik CRS305-1G-4S+IN Review (2026)&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/vlans-homelab-2026/">VLANs for the Homelab&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">Best Mini PCs for a 2026 Homelab&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/adguard-home-local-dns-proxmox-2026/">AdGuard Home + Local DNS on Proxmox&lt;/a> — DNS filtering and local hostname resolution to pair with your OPNsense firewall&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/vlans-homelab-2026/">VLANs for the Homelab&lt;/a> — VLAN segmentation for IoT, trusted, and management networks&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/self-host-local-llm-rtx-5060-2026/">Self-hosting a local LLM on an RTX 5060 (2026)&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tools/pc-builder/">TechFuelHQ PC Builder — free compatibility-checked picker&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>Netgate 4100 datasheet&lt;/li>
&lt;li>&lt;a href="https://docs.netgate.com/pfsense/en/latest/recipes/wireguard-s2s.html" rel="noopener">Netgate WireGuard documentation&lt;/a>&lt;/li>
&lt;li>pfSense Plus vs CE&lt;/li>
&lt;li>&lt;a href="https://docs.opnsense.org/manual/vpnet.html" rel="noopener">OPNsense documentation&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://opnsense.org/" rel="noopener">OPNsense 26.1 release notes&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://mikrotik.com/download/changelogs" rel="noopener">MikroTik RouterOS changelogs&lt;/a>&lt;/li>
&lt;li>MikroTik bridge VLAN filtering wiki&lt;/li>
&lt;li>&lt;a href="https://community.ui.com/releases" rel="noopener">UniFi release notes&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://store.ui.com/us/en/products/ucg-max" rel="noopener">UniFi Cloud Gateway Max product page&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Last verified: 2026-05-08 by LK Wood IV.&lt;/p></description></item><item><title>Proxmox vs TrueNAS vs Unraid: ZFS, btrfs, and Homelab IOPS</title><link>https://techfuelhq.com/homelab/proxmox-truenas-unraid-storage-backend-2026/</link><pubDate>Thu, 07 May 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/homelab/proxmox-truenas-unraid-storage-backend-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-05-07 · Updated 2026-07-05 · ~16 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/homelab/proxmox-truenas-unraid-storage-backend-2026.svg" alt="ZFS vdev topology comparison table for a six-drive 6x16TB homelab pool: 6-wide RAIDZ2 (~1 drive IOPS, 64TB, 2-drive fault tolerance), two 3-wide RAIDZ1 vdevs (~2 drive IOPS, 64TB), and three 2-wide mirror pairs (~3 drive IOPS, 48TB), showing mirrors win on small-block IOPS for VMs while RAIDZ2 wins on media capacity" width="1200" height="760" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR · The 2026 storage call&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>Multi-drive homelab, irreplaceable data:&lt;/strong> &lt;strong>ZFS (OpenZFS 2.3+)&lt;/strong> on TrueNAS CE 25.10, Proxmox VE 9, or Unraid 7. Battle-tested + bit-rot detection + clean rebuilds.&lt;/li>
&lt;li>&lt;strong>4-bay default:&lt;/strong> RAIDZ1 for capacity, striped mirrors for IOPS. &lt;strong>Skip RAIDZ2 on 4 drives&lt;/strong> — capacity loss not justified.&lt;/li>
&lt;li>&lt;strong>SLOG NVMe:&lt;/strong> Only if sync writes (NFS to VM disks, DB, iSCSI). For SMB / async writes, do nothing.&lt;/li>
&lt;li>&lt;strong>RAM:&lt;/strong> 16 GB minimum for ZFS, 32 GB is the homelab sweet spot. 1 GB/TB is outdated dedup-era advice.&lt;/li>
&lt;li>&lt;strong>Special vdev:&lt;/strong> Year-2 project. Mirror-only. Game-changing for media library metadata.&lt;/li>
&lt;li>&lt;strong>Don't:&lt;/strong> Run ZFS dedup at home. Run RAIDZ1 with 6+ TB drives without scheduling regular scrubs. Trust a non-ECC system with a 40 TB array — ECC matters more as capacity grows.&lt;/li>
&lt;/ul>
&lt;p style="margin:0.75rem 0 0 0;font-size:0.9rem;color:#a0a0b8;">Tested against OpenZFS 2.3+ · TrueNAS CE 25.10 Goldeye · Unraid 7.x · Proxmox VE 9.x. All ZFS commands shown apply to all three platforms unless noted.&lt;/p>
&lt;/div>
&lt;p>I already wrote the platform comparison. &lt;a href="https://techfuelhq.com/articles/proxmox-vs-truenas-vs-unraid/">Proxmox VE 8 vs TrueNAS Community Edition vs Unraid 7&lt;/a> covers which OS to pick. This article is the next decision once you have picked: how to build the storage pool that lives underneath. Filesystem choice, vdev geometry, NVMe SLOG, ARC and L2ARC, and the special vdev that quietly replaces both for most home workloads.&lt;/p>
&lt;p>The short version is that storage backend choice has more impact on your real-world IOPS than the OS choice does. A Proxmox host with the wrong vdev layout will lose to a TrueNAS host with the right one, and vice versa. The same OpenZFS 2.3 code now ships in all three platforms, so the differentiation is no longer &amp;ldquo;which OS has ZFS&amp;rdquo;; it is &amp;ldquo;which one lets you build the pool you want without fighting the UI.&amp;rdquo;&lt;/p>
&lt;h2 id="methodology-and-sources">Methodology and sources&lt;/h2>
&lt;p>This is a research-based storage-backend guide. The filesystem behavior, vdev-geometry tradeoffs, and tuning guidance below are drawn from OpenZFS project documentation, vendor release notes, and third-party benchmark coverage — cited inline at each claim. Where a quantitative relationship is described (for example, that a RAIDZ vdev delivers roughly a single drive&amp;rsquo;s small-block IOPS), it reflects published OpenZFS behavior rather than a one-off bench run.&lt;/p>
&lt;p>Primary sources used in this article:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>OpenZFS project&lt;/strong> — &lt;a href="https://openzfs.github.io/openzfs-docs/" rel="noopener">OpenZFS documentation&lt;/a> and &lt;a href="https://openzfs.github.io/openzfs-docs/Performance%20and%20Tuning/Workload%20Tuning.html" rel="noopener">Performance and Tuning workload guide&lt;/a>&lt;/li>
&lt;li>&lt;strong>Phoronix&lt;/strong> — &lt;a href="https://www.phoronix.com/search/ZFS" rel="noopener">OpenZFS benchmark and Linux storage coverage&lt;/a>&lt;/li>
&lt;li>&lt;strong>ServeTheHome&lt;/strong> — &lt;a href="https://www.servethehome.com/?s=zfs" rel="noopener">ZFS and homelab storage coverage&lt;/a>&lt;/li>
&lt;li>&lt;strong>TrueNAS&lt;/strong> — &lt;a href="https://www.truenas.com/docs/" rel="noopener">official documentation&lt;/a> and &lt;a href="https://forums.truenas.com/" rel="noopener">community forums&lt;/a>&lt;/li>
&lt;li>&lt;strong>Unraid&lt;/strong> — &lt;a href="https://docs.unraid.net/" rel="noopener">official OS documentation&lt;/a>&lt;/li>
&lt;li>&lt;strong>Intel / Solidigm / Micron&lt;/strong> — datasheets for the enterprise NVMe drives referenced as SLOG/special-vdev hardware&lt;/li>
&lt;/ul>
&lt;p>Last updated: 2026-07-05. Sources reviewed and current as of this date.&lt;/p>
&lt;h2 id="what-changed-in-the-storage-layer-for-2026">What changed in the storage layer for 2026&lt;/h2>
&lt;p>OpenZFS 2.3 shipped in early 2025 and is now the common floor across all three platforms. &lt;a href="https://www.theregister.com/2025/01/23/openzfs_23_raid_expansion/" rel="noopener">The Register&amp;rsquo;s coverage of the 2.3 release&lt;/a> summarizes the three changes that matter most for home labs: RAIDZ expansion (you can finally add a single disk to a RAIDZ vdev without rebuilding), Fast Dedup (table dedup is now usable on commodity RAM budgets), and Direct IO for NVMe pools (read and write paths can bypass the ARC entirely on flash).&lt;/p>
&lt;p>&lt;a href="https://freebsdfoundation.org/blog/openzfs-raid-z-expansion-a-new-era-in-storage-flexibility/" rel="noopener">The FreeBSD Foundation&amp;rsquo;s deep-dive on RAIDZ expansion&lt;/a> is worth reading if you have ever lost a weekend rebuilding a Z2 pool to add capacity. Expansion preserves the original failure tolerance of the vdev — a Z1 pool stays Z1, a Z2 pool stays Z2 — and the operation runs while the pool is online. It reached homelab users in &lt;a href="https://www.truenas.com/blog/truenas-electric-eel-powers-up-your-storage/" rel="noopener">TrueNAS SCALE 24.10 &amp;ldquo;Electric Eel&amp;rdquo;&lt;/a> on October 29, 2024 — drive-at-a-time, online, at single, double, or triple parity — after years of development, and it now ships on every current build of all three platforms. This single change kills the strongest historical argument for Unraid&amp;rsquo;s parity-array model in mid-size labs: you no longer have to choose a mix-any-disk parity array just to keep the option of adding one drive later.&lt;/p>
&lt;p>&lt;a href="https://www.truenas.com/blog/truenas-plans-for-2026/" rel="noopener">TrueNAS 25.10 &amp;ldquo;Goldeye&amp;rdquo;&lt;/a> inherits OpenZFS 2.3 and queues OpenZFS 2.4 for the TrueNAS 26 cycle (still in beta as of mid-2026) with hybrid pool improvements and intelligent tiering between NVMe and HDD. Proxmox has since moved past that floor: &lt;a href="https://www.proxmox.com/en/about/company-details/press-releases/proxmox-virtual-environment-9-0" rel="noopener">VE 9.0 shipped OpenZFS 2.3.3&lt;/a> in August 2025, and the current VE 9.2 (May 2026) ships OpenZFS 2.4. &lt;a href="https://unraid.net/blog/unraid-7-3-0" rel="noopener">Unraid 7.3&lt;/a> ships OpenZFS 2.4.1. The OpenZFS 2.3 baseline this article describes is now met on every platform — and already exceeded on Proxmox and Unraid stable.&lt;/p>
&lt;p>The platform-level summary I gave in the &lt;a href="https://techfuelhq.com/articles/proxmox-vs-truenas-vs-unraid/">original Proxmox vs TrueNAS vs Unraid article&lt;/a> is still accurate, but the storage-layer differences underneath have narrowed. The remaining differences are in the UI, the defaults, and the special-case features each one chooses to expose.&lt;/p>
&lt;h2 id="zfs-vs-btrfs-vs-zfs-on-unraid-the-honest-tradeoffs">ZFS vs btrfs vs ZFS-on-Unraid: the honest tradeoffs&lt;/h2>
&lt;p>There are three real filesystems you will choose from in 2026, and they map to different operational philosophies.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Filesystem&lt;/th>
&lt;th scope="col">Best for&lt;/th>
&lt;th scope="col">Key strength&lt;/th>
&lt;th scope="col">Key weakness&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>ZFS (RAIDZ, mirrors)&lt;/td>
&lt;td>Anything that has to survive a drive failure cleanly&lt;/td>
&lt;td>Atomic snapshots, send/receive replication, ARC, end-to-end checksumming&lt;/td>
&lt;td>Requires uniform drive sizes per vdev; rebuild can take days on large drives&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>btrfs (RAID 1, RAID 10)&lt;/td>
&lt;td>Mixed-size SSD cache pools, tinker-friendly setups&lt;/td>
&lt;td>Online RAID profile changes, dynamic device add/remove&lt;/td>
&lt;td>RAID 5/6 still flagged experimental in 2026 (&lt;a href="https://docs.unraid.net/unraid-os/using-unraid-to/manage-storage/cache-pools/" rel="noopener">Unraid docs&lt;/a>)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ZFS-on-Unraid&lt;/td>
&lt;td>Unraid users who want ZFS for one or two pools&lt;/td>
&lt;td>Inherits ZFS data integrity inside Unraid&amp;rsquo;s cache-pool model&lt;/td>
&lt;td>No spare vdev support as of Unraid 7.1.2 (&lt;a href="https://docs.unraid.net/unraid-os/advanced-configurations/optimize-storage/zfs-storage/" rel="noopener">Unraid ZFS docs&lt;/a>); pool drives must be uniform size&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The &amp;ldquo;ZFS requires 1 GB of RAM per 1 TB of storage&amp;rdquo; rule is dead. Unraid&amp;rsquo;s own 2026 documentation now explicitly calls that advice outdated. ARC scales to whatever RAM you give it, and the marginal benefit drops off fast above your active working set.&lt;/p>
&lt;p>The &amp;ldquo;btrfs RAID 5/6 is experimental&amp;rdquo; warning is still alive in 2026 and not resolved. &lt;a href="https://docs.unraid.net/unraid-os/using-unraid-to/manage-storage/cache-pools/" rel="noopener">Unraid&amp;rsquo;s cache pool documentation&lt;/a> flags it explicitly; ZFS handles parity RAID more maturely and is the recommended choice for any pool above mirrored pairs.&lt;/p>
&lt;p>For a four-drive NVMe cache pool on Unraid that mixes, say, a 1TB drive with three 2TB drives, btrfs RAID 1 is the only option that actually works — ZFS pools on Unraid require uniform drive sizes, which is the same drive-size rule that drives most people to Unraid&amp;rsquo;s parity array in the first place. For everything else, ZFS is the right answer.&lt;/p>
&lt;h2 id="raidz-vs-mirrors-where-iops-actually-live">RAIDZ vs mirrors: where IOPS actually live&lt;/h2>
&lt;p>The single biggest performance lever in a ZFS pool is vdev geometry. RAIDZ vdevs and mirror vdevs are both useful; they are not interchangeable.&lt;/p>
&lt;p>Both the &lt;a href="https://linustechtips.com/topic/1525558-zfs-best-practices/" rel="noopener">Linus Tech Tips ZFS best practices thread&lt;/a> and the &lt;a href="https://openzfs.github.io/openzfs-docs/Performance%20and%20Tuning/Workload%20Tuning.html" rel="noopener">OpenZFS workload-tuning guide&lt;/a> describe the same well-established behavior: a single RAIDZ vdev delivers roughly the small-block random IOPS of a single drive, regardless of how many disks are in it; streaming throughput scales with the data-disk count, but small-block random IOPS does not. Mirror vdevs deliver one drive&amp;rsquo;s worth of IOPS per mirror pair, and a pool of N mirror pairs delivers approximately N times that.&lt;/p>
&lt;p>The practical consequence for a six-drive pool:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Topology&lt;/th>
&lt;th scope="col">Small-block random IOPS&lt;/th>
&lt;th scope="col">Usable capacity (6×16 TB)&lt;/th>
&lt;th scope="col">Fault tolerance&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>1× RAIDZ2 (6-wide)&lt;/td>
&lt;td>~1 drive&amp;rsquo;s worth&lt;/td>
&lt;td>64 TB&lt;/td>
&lt;td>2 drives&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2× RAIDZ1 (3-wide)&lt;/td>
&lt;td>~2 drives&amp;rsquo; worth&lt;/td>
&lt;td>64 TB&lt;/td>
&lt;td>1 per vdev&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>3× mirror (2-wide)&lt;/td>
&lt;td>~3 drives&amp;rsquo; worth&lt;/td>
&lt;td>48 TB&lt;/td>
&lt;td>1 per vdev (best random IOPS)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The table is the math; here is the same six drives as physical bays, so you can see where the capacity and the IOPS actually go.&lt;/p>
&lt;!-- ========== VISUAL 1: SAME SIX DRIVES, THREE WAYS (drive-bay allocation schematic - signature grammar) ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0c1424;padding:24px 20px 20px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8eaf2;">
&lt;div style="font-size:18px;font-weight:700;letter-spacing:-0.3px;">Same six drives, three ways&lt;/div>
&lt;div style="font-size:12px;color:#93a0bd;margin-top:4px;line-height:1.5;">Six 16&amp;nbsp;TB drives, 96&amp;nbsp;TB raw, laid out three ways. What changes is how many bays you spend on redundancy and how the random IOPS multiply. &lt;span style="color:#8fd400;font-weight:600;">Data&lt;/span>, &lt;span style="color:#f0a020;font-weight:600;">Parity&lt;/span>, &lt;span style="color:#4a9eff;font-weight:600;">Mirror copy&lt;/span>.&lt;/div>
&lt;div style="margin-top:18px;padding:12px 12px 13px;background:rgba(255,255,255,0.02);border:1px solid rgba(255,255,255,0.06);border-radius:8px;">
&lt;div style="font-size:12.5px;font-weight:700;color:#eef1f8;">1&amp;times; RAIDZ2, 6-wide &lt;span style="font-weight:500;color:#93a0bd;">&amp;middot; max capacity, media pool&lt;/span>&lt;/div>
&lt;div style="display:flex;gap:5px;margin:9px 0 10px;">
&lt;div style="flex:1 1 0;min-width:0;height:36px;border-radius:4px;background:#76b900;color:#0a0f05;display:flex;align-items:center;justify-content:center;font-size:8.5px;font-weight:700;">DATA&lt;/div>
&lt;div style="flex:1 1 0;min-width:0;height:36px;border-radius:4px;background:#76b900;color:#0a0f05;display:flex;align-items:center;justify-content:center;font-size:8.5px;font-weight:700;">DATA&lt;/div>
&lt;div style="flex:1 1 0;min-width:0;height:36px;border-radius:4px;background:#76b900;color:#0a0f05;display:flex;align-items:center;justify-content:center;font-size:8.5px;font-weight:700;">DATA&lt;/div>
&lt;div style="flex:1 1 0;min-width:0;height:36px;border-radius:4px;background:#76b900;color:#0a0f05;display:flex;align-items:center;justify-content:center;font-size:8.5px;font-weight:700;">DATA&lt;/div>
&lt;div style="flex:1 1 0;min-width:0;height:36px;border-radius:4px;background:#f0a020;color:#1a1200;display:flex;align-items:center;justify-content:center;font-size:8.5px;font-weight:700;">PAR&lt;/div>
&lt;div style="flex:1 1 0;min-width:0;height:36px;border-radius:4px;background:#f0a020;color:#1a1200;display:flex;align-items:center;justify-content:center;font-size:8.5px;font-weight:700;">PAR&lt;/div>
&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;gap:6px;font-size:10.5px;">
&lt;span style="background:rgba(118,185,0,0.14);color:#a8e63a;padding:2px 8px;border-radius:20px;font-weight:600;">64 TB usable&lt;/span>
&lt;span style="background:rgba(255,255,255,0.05);color:#c3cbe0;padding:2px 8px;border-radius:20px;">~1 drive of random IOPS&lt;/span>
&lt;span style="background:rgba(255,255,255,0.05);color:#c3cbe0;padding:2px 8px;border-radius:20px;">survives any 2 failures&lt;/span>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:10px;padding:12px 12px 13px;background:rgba(255,255,255,0.02);border:1px solid rgba(255,255,255,0.06);border-radius:8px;">
&lt;div style="font-size:12.5px;font-weight:700;color:#eef1f8;">2&amp;times; RAIDZ1, 3-wide &lt;span style="font-weight:500;color:#93a0bd;">&amp;middot; the balanced middle&lt;/span>&lt;/div>
&lt;div style="display:flex;gap:5px;margin:9px 0 10px;">
&lt;div style="flex:1 1 0;min-width:0;height:36px;border-radius:4px;background:#76b900;color:#0a0f05;display:flex;align-items:center;justify-content:center;font-size:8.5px;font-weight:700;">DATA&lt;/div>
&lt;div style="flex:1 1 0;min-width:0;height:36px;border-radius:4px;background:#76b900;color:#0a0f05;display:flex;align-items:center;justify-content:center;font-size:8.5px;font-weight:700;">DATA&lt;/div>
&lt;div style="flex:1 1 0;min-width:0;height:36px;border-radius:4px;background:#f0a020;color:#1a1200;display:flex;align-items:center;justify-content:center;font-size:8.5px;font-weight:700;">PAR&lt;/div>
&lt;div style="flex:0 0 10px;">&lt;/div>
&lt;div style="flex:1 1 0;min-width:0;height:36px;border-radius:4px;background:#76b900;color:#0a0f05;display:flex;align-items:center;justify-content:center;font-size:8.5px;font-weight:700;">DATA&lt;/div>
&lt;div style="flex:1 1 0;min-width:0;height:36px;border-radius:4px;background:#76b900;color:#0a0f05;display:flex;align-items:center;justify-content:center;font-size:8.5px;font-weight:700;">DATA&lt;/div>
&lt;div style="flex:1 1 0;min-width:0;height:36px;border-radius:4px;background:#f0a020;color:#1a1200;display:flex;align-items:center;justify-content:center;font-size:8.5px;font-weight:700;">PAR&lt;/div>
&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;gap:6px;font-size:10.5px;">
&lt;span style="background:rgba(118,185,0,0.14);color:#a8e63a;padding:2px 8px;border-radius:20px;font-weight:600;">64 TB usable&lt;/span>
&lt;span style="background:rgba(255,255,255,0.05);color:#c3cbe0;padding:2px 8px;border-radius:20px;">~2 drives of random IOPS&lt;/span>
&lt;span style="background:rgba(255,255,255,0.05);color:#c3cbe0;padding:2px 8px;border-radius:20px;">1 failure per vdev&lt;/span>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:10px;padding:12px 12px 13px;background:rgba(74,158,255,0.05);border:1px solid rgba(74,158,255,0.18);border-radius:8px;">
&lt;div style="font-size:12.5px;font-weight:700;color:#eef1f8;">3&amp;times; mirror, 2-wide &lt;span style="font-weight:500;color:#93a0bd;">&amp;middot; max IOPS, VM/DB pool&lt;/span>&lt;/div>
&lt;div style="display:flex;gap:5px;margin:9px 0 10px;">
&lt;div style="flex:1 1 0;min-width:0;height:36px;border-radius:4px;background:#4a9eff;color:#041022;display:flex;align-items:center;justify-content:center;font-size:8.5px;font-weight:700;">DATA&lt;/div>
&lt;div style="flex:1 1 0;min-width:0;height:36px;border-radius:4px;background:#1f3a5c;color:#8fc0f5;border:1px dashed #4a9eff;display:flex;align-items:center;justify-content:center;font-size:8.5px;font-weight:700;">COPY&lt;/div>
&lt;div style="flex:0 0 10px;">&lt;/div>
&lt;div style="flex:1 1 0;min-width:0;height:36px;border-radius:4px;background:#4a9eff;color:#041022;display:flex;align-items:center;justify-content:center;font-size:8.5px;font-weight:700;">DATA&lt;/div>
&lt;div style="flex:1 1 0;min-width:0;height:36px;border-radius:4px;background:#1f3a5c;color:#8fc0f5;border:1px dashed #4a9eff;display:flex;align-items:center;justify-content:center;font-size:8.5px;font-weight:700;">COPY&lt;/div>
&lt;div style="flex:0 0 10px;">&lt;/div>
&lt;div style="flex:1 1 0;min-width:0;height:36px;border-radius:4px;background:#4a9eff;color:#041022;display:flex;align-items:center;justify-content:center;font-size:8.5px;font-weight:700;">DATA&lt;/div>
&lt;div style="flex:1 1 0;min-width:0;height:36px;border-radius:4px;background:#1f3a5c;color:#8fc0f5;border:1px dashed #4a9eff;display:flex;align-items:center;justify-content:center;font-size:8.5px;font-weight:700;">COPY&lt;/div>
&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;gap:6px;font-size:10.5px;">
&lt;span style="background:rgba(74,158,255,0.16);color:#8fc0f5;padding:2px 8px;border-radius:20px;font-weight:600;">48 TB usable&lt;/span>
&lt;span style="background:rgba(255,255,255,0.05);color:#c3cbe0;padding:2px 8px;border-radius:20px;">~3 drives of random IOPS&lt;/span>
&lt;span style="background:rgba(255,255,255,0.05);color:#c3cbe0;padding:2px 8px;border-radius:20px;">1 failure per pair&lt;/span>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:15px;padding-top:12px;border-top:1px solid rgba(255,255,255,0.07);font-size:11px;color:#93a0bd;line-height:1.6;">Mirrors spend half the raw capacity on copies but roughly triple the random IOPS &amp;mdash; exactly what a VM or database pool wants. RAIDZ2 keeps the most usable TB for the least parity, at one drive's worth of random IOPS &amp;mdash; exactly what a media pool wants. Same drives; the layout picks the winner.&lt;br>&lt;span style="color:#7d8aa8;">The colored bays show how much &lt;em>capacity&lt;/em> each layout spends on redundancy &amp;mdash; not fixed physical roles. Unlike Unraid's dedicated parity disk, RAIDZ stripes its parity across every drive in the vdev (no single drive is "the parity drive"), and ZFS mirror members are equal peers, not a primary and a backup.&lt;/span>&lt;/div>
&lt;div style="text-align:right;margin-top:8px;font-size:10px;color:#465073;">techfuelhq.com &amp;middot; 6&amp;times;16&amp;nbsp;TB, OpenZFS 2.3+ vdev geometry&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>Three mirror pairs deliver several times the small-block random IOPS of a single 6-wide RAIDZ2, at the cost of usable capacity. That is the canonical mirror-vs-RAIDZ tradeoff: less parity overhead buys substantial IOPS multipliers on small-block work, which is precisely the pattern of a homelab running VMs and databases. RAIDZ wins on bulk media storage where streaming MB/s is the metric and small-block IOPS does not matter. The &lt;a href="https://techfuelhq.com/tools/nas-storage-calculator/">NAS &amp;amp; RAID storage calculator&lt;/a> works out usable capacity for each of these RAIDZ and mirror layouts so you can see the parity overhead before committing drives.&lt;/p>
&lt;p>For a homelab whose pool is mostly hosting iSCSI for Proxmox or NFS for a Kubernetes node, mirrors. For a homelab whose pool is mostly Plex media and infrequent Time Machine backups, RAIDZ2.&lt;/p>
&lt;h2 id="nvme-slog-when-it-actually-helps">NVMe SLOG: when it actually helps&lt;/h2>
&lt;p>The SLOG (separate log device) is the most misunderstood ZFS feature in homelab forums. It is not a write cache. It does not speed up most writes. It speeds up exactly one thing: synchronous writes that would otherwise commit to the in-pool ZIL.&lt;/p>
&lt;p>&lt;a href="https://www.reddit.com/r/zfs/comments/1sk2xul/using_15tb_nvme_with_full_plp_for_zfs_overkill/" rel="noopener">A practical Reddit thread on enterprise NVMe SLOGs&lt;/a> and &lt;a href="https://forums.truenas.com/t/a-discussion-on-slog-zil-device/57570" rel="noopener">TrueNAS forum coverage of when SLOG matters&lt;/a> both make the same point: SLOG only helps if your workload calls &lt;code>fsync()&lt;/code> a lot. NFS writes from VMware or Proxmox, iSCSI for VM storage, and PostgreSQL with &lt;code>synchronous_commit=on&lt;/code> are the real winners. SMB writes from a desktop client are async by default and see zero benefit from a SLOG.&lt;/p>
&lt;p>The effect is dramatic where it applies: a synchronous 4K random-write workload (&lt;code>--sync=1 --rw=randwrite --bs=4k&lt;/code>) against an NFS-mounted dataset can improve by an order of magnitude when a low-latency, power-loss-protected NVMe device such as an Optane drive is configured as SLOG, while the same workload run async (&lt;code>--sync=0&lt;/code>) shows no measurable difference because async writes never touch the ZIL. &lt;a href="https://www.servethehome.com/?s=zfs" rel="noopener">ServeTheHome&amp;rsquo;s storage coverage&lt;/a> and the &lt;a href="https://openzfs.github.io/openzfs-docs/Performance%20and%20Tuning/Workload%20Tuning.html" rel="noopener">OpenZFS workload-tuning guide&lt;/a> both describe this sync-only behavior.&lt;/p>
&lt;p>The drive matters. A SLOG device must have power-loss protection (PLP) and very low write latency. Consumer NVMe drives without PLP can lose data on power loss and frequently land in the same latency band as the spinning pool, which gives you a SLOG that is no faster than the pool it is supposed to accelerate. Enterprise drives like the Intel Optane P1600X (still findable used at $80–$120 in 2026), the Solidigm D7-PS1010, or the Micron 7450 MAX are the right hardware. A 32GB partition is more than enough for a 10GbE pool.&lt;/p>
&lt;p>If your homelab pool serves only SMB and async workloads, skip the SLOG entirely. An async-only pool — for example, one backing a desktop SMB share alongside builds like the &lt;a href="https://techfuelhq.com/pc-builds/1500-dollar-rtx-5060-ti-1440p-build-2026/">$1,500 RTX 5060 Ti build&lt;/a> and &lt;a href="https://techfuelhq.com/tutorials/self-host-local-llm-rtx-5060-2026/">self-hosted local LLM rig&lt;/a> — gains nothing from a SLOG, because none of that traffic is synchronous.&lt;/p>
&lt;h2 id="arc-and-l2arc-the-cache-hierarchy-in-2026">ARC and L2ARC: the cache hierarchy in 2026&lt;/h2>
&lt;p>ARC is ZFS&amp;rsquo;s adaptive read cache in RAM. L2ARC is the optional SSD-backed second tier. The 2026 tuning guidance has changed materially since 2022.&lt;/p>
&lt;p>&lt;a href="https://forums.truenas.com/t/zfs-arc-caching-has-changed-since-updated-form-core-to-scale-24-x/64205" rel="noopener">TrueNAS forum coverage of the ARC change in 24.04+&lt;/a> notes that the old 50% RAM cap on Linux ZFS is gone. ARC now scales the same way it does on FreeBSD and consumes most of free RAM by default. On a 64GB host, ARC typically grows to fill most of free RAM under load, with the rest reserved for the kernel and any VMs the host runs. Once an ARC is warm, hit rates on a read-heavy homelab pool are commonly very high — which is why L2ARC is irrelevant for almost every home use case.&lt;/p>
&lt;p>L2ARC was useful when you had 8GB of RAM and a 200GB working set. With 64GB+ of RAM, which is the floor for a 2026 homelab build, L2ARC mostly burns SSD endurance for negligible hit-rate improvement; the &lt;a href="https://openzfs.github.io/openzfs-docs/Performance%20and%20Tuning/Workload%20Tuning.html" rel="noopener">OpenZFS workload-tuning guide&lt;/a> recommends adding RAM before reaching for L2ARC.&lt;/p>
&lt;p>What replaces L2ARC for most modern homelabs is the special vdev. A special vdev stores metadata and small files (configurable threshold) on dedicated flash, separate from the main pool. The performance gain is large because metadata operations dominate ZFS small-block IO; the risk is that the pool becomes unreadable if the special vdev is lost, which means the special vdev must be at least as redundant as the main pool. A mirrored pair of Optane drives configured as the special vdev with &lt;code>special_small_blocks=32K&lt;/code> puts every file under 32KB on the flash mirror, delivering metadata operations at NVMe latency on a spinning-disk pool with no L2ARC required.&lt;/p>
&lt;p>The reason the cache hierarchy is shaped the way it is comes down to one brutal fact: the tiers are orders of magnitude apart in latency, so &lt;em>where a read lands&lt;/em> matters far more than how clever any single tier is.&lt;/p>
&lt;!-- ========== VISUAL 2: WHAT ACTUALLY LIVES WHERE (log-latency tier stack - distinct within-page grammar) ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0d1117;padding:24px 20px 18px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e6e9f2;">
&lt;div style="font-size:18px;font-weight:700;letter-spacing:-0.3px;">What actually lives where&lt;/div>
&lt;div style="font-size:12px;color:#8d98b3;margin-top:4px;line-height:1.5;">The ZFS read path, top (fastest) to bottom (slowest). Bar length is latency on a log scale &amp;mdash; each step down is 10&amp;ndash;100&amp;times; slower than the one above.&lt;/div>
&lt;div style="margin-top:18px;">
&lt;div style="display:flex;align-items:center;gap:8px;margin-bottom:10px;">
&lt;div style="flex:0 0 78px;font-size:11px;font-weight:700;line-height:1.15;color:#eef1f8;">ARC&lt;div style="color:#8792a8;font-size:9px;font-weight:500;">RAM&lt;/div>&lt;/div>
&lt;div style="flex:1 1 auto;min-width:0;height:22px;background:rgba(255,255,255,0.04);border-radius:4px;overflow:hidden;">&lt;div style="width:4%;height:100%;background:#76b900;border-radius:4px;">&lt;/div>&lt;/div>
&lt;div style="flex:0 0 56px;text-align:right;font-size:11px;font-weight:700;color:#a8e63a;">~100 ns&lt;/div>
&lt;/div>
&lt;div style="display:flex;align-items:center;gap:8px;margin-bottom:10px;">
&lt;div style="flex:0 0 78px;font-size:11px;font-weight:700;line-height:1.15;color:#eef1f8;">special vdev&lt;div style="color:#8792a8;font-size:9px;font-weight:500;">NVMe mirror&lt;/div>&lt;/div>
&lt;div style="flex:1 1 auto;min-width:0;height:22px;background:rgba(255,255,255,0.04);border-radius:4px;overflow:hidden;">&lt;div style="width:40%;height:100%;background:#38bdf8;border-radius:4px;">&lt;/div>&lt;/div>
&lt;div style="flex:0 0 56px;text-align:right;font-size:11px;font-weight:700;color:#7cd4fb;">~10 &amp;micro;s&lt;/div>
&lt;/div>
&lt;div style="display:flex;align-items:center;gap:8px;margin-bottom:10px;opacity:0.72;">
&lt;div style="flex:0 0 78px;font-size:11px;font-weight:700;line-height:1.15;color:#c7cede;">L2ARC&lt;div style="color:#8792a8;font-size:9px;font-weight:500;">SATA/NAND SSD&lt;/div>&lt;/div>
&lt;div style="flex:1 1 auto;min-width:0;height:22px;background:rgba(255,255,255,0.04);border-radius:4px;overflow:hidden;">&lt;div style="width:60%;height:100%;background:repeating-linear-gradient(45deg,#55617a,#55617a 5px,#3f4a61 5px,#3f4a61 10px);border-radius:4px;">&lt;/div>&lt;/div>
&lt;div style="flex:0 0 56px;text-align:right;font-size:11px;font-weight:700;color:#9aa6bf;">~100 &amp;micro;s&lt;/div>
&lt;/div>
&lt;div style="display:flex;align-items:center;gap:8px;margin-bottom:4px;">
&lt;div style="flex:0 0 78px;font-size:11px;font-weight:700;line-height:1.15;color:#eef1f8;">pool&lt;div style="color:#8792a8;font-size:9px;font-weight:500;">HDD RAIDZ/mirror&lt;/div>&lt;/div>
&lt;div style="flex:1 1 auto;min-width:0;height:22px;background:rgba(255,255,255,0.04);border-radius:4px;overflow:hidden;">&lt;div style="width:100%;height:100%;background:#ef6a4b;border-radius:4px;">&lt;/div>&lt;/div>
&lt;div style="flex:0 0 56px;text-align:right;font-size:11px;font-weight:700;color:#ff8a70;">~10 ms&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:12px;display:flex;align-items:center;gap:8px;">
&lt;div style="flex:0 0 78px;">&lt;/div>
&lt;div style="flex:1 1 auto;min-width:0;display:flex;justify-content:space-between;font-size:9px;color:#5c6884;text-transform:uppercase;letter-spacing:0.05em;">&lt;span>nanoseconds&lt;/span>&lt;span>microseconds&lt;/span>&lt;span>milliseconds&lt;/span>&lt;/div>
&lt;div style="flex:0 0 56px;">&lt;/div>
&lt;/div>
&lt;div style="margin-top:14px;padding:11px 13px;background:rgba(56,189,248,0.06);border:1px solid rgba(56,189,248,0.16);border-radius:8px;font-size:11.5px;color:#c7cede;line-height:1.6;">RAM to a spinning pool is about &lt;strong style="color:#eef1f8;">100,000&amp;times;&lt;/strong>. That chasm is why parking metadata and small files on the special vdev (tier&amp;nbsp;2) transforms a HDD pool &amp;mdash; and why a second SSD cache tier (L2ARC, tier&amp;nbsp;3) rarely earns its endurance cost once ARC has 32&amp;ndash;64&amp;nbsp;GB of RAM to fill. &lt;strong style="color:#eef1f8;">Add RAM before you add L2ARC.&lt;/strong>&lt;/div>
&lt;div style="text-align:right;margin-top:8px;font-size:10px;color:#465073;">techfuelhq.com &amp;middot; approximate read latencies, order-of-magnitude&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="platform-ui-differences-that-still-matter">Platform UI differences that still matter&lt;/h2>
&lt;p>OpenZFS 2.3 normalizes the underlying filesystem; the platforms still expose it differently.&lt;/p>
&lt;p>&lt;strong>TrueNAS Community Edition 25.10&lt;/strong> has the best ZFS pool UI in 2026, full stop. Pool creation, vdev layout, special vdev assignment, SLOG configuration, replication tasks, and snapshot scheduling are all first-class UI features. ARC stats live on the Reporting tab. If you want ZFS without typing &lt;code>zpool&lt;/code> or &lt;code>zfs&lt;/code> commands, this is the platform.&lt;/p>
&lt;p>&lt;strong>Proxmox VE 9&lt;/strong> treats ZFS as a first-class storage backend but does not expose every feature in the GUI. Pool creation works through the installer or &lt;code>zpool create&lt;/code>; SLOG and special vdev assignment require CLI; replication is per-VM through the GUI. This is the right platform if you want full hypervisor control and are comfortable in a shell.&lt;/p>
&lt;p>&lt;strong>Unraid 7&lt;/strong> added native ZFS pools in 7.0 and has refined them through the 7.3 line (7.3.0 shipped May 12, 2026 on OpenZFS 2.4.1; 7.3.1 moved to 2.4.2). The UI handles ZFS pool creation, RAIDZ levels, and basic ZFS dataset operations, and 7.3 finally added a user-facing control for the ZFS ARC-max size plus a &amp;ldquo;show corrupted files&amp;rdquo; view in pool status — two things that previously meant editing a config or dropping to a shell. Special vdev support arrived in 7.1; ZFS spare-vdev support is still missing as of 7.3, so there is no hot-spare auto-replace for a ZFS pool the way TrueNAS offers. For Unraid users who want ZFS for a Docker cache pool or an appdata pool, this works well; for a primary VM storage pool, TrueNAS or Proxmox give you more control.&lt;/p>
&lt;p>The difference comes down to where you want to spend your time: TrueNAS spends it in the UI, Proxmox spends it in the shell, Unraid spends it switching between modes.&lt;/p>
&lt;h2 id="a-decision-tree-for-the-storage-backend">A decision tree for the storage backend&lt;/h2>
&lt;p>If you are starting a 2026 homelab from scratch:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Mostly VMs, mostly small-block IO, mostly sync workloads (NFS/iSCSI):&lt;/strong> ZFS, mirror vdevs, mirrored Optane SLOG, mirrored special vdev. TrueNAS or Proxmox host.&lt;/li>
&lt;li>&lt;strong>Mostly media storage, mostly streaming reads, mostly async (SMB):&lt;/strong> ZFS, RAIDZ2 vdev, no SLOG, ARC only. Any of the three platforms works.&lt;/li>
&lt;li>&lt;strong>Mixed drive sizes you cannot replace, willingness to accept worse IOPS:&lt;/strong> Unraid parity array, btrfs cache pool. Skip ZFS entirely on the array.&lt;/li>
&lt;li>&lt;strong>Single-purpose backup target, willing to sacrifice IOPS for capacity efficiency:&lt;/strong> ZFS, single wide RAIDZ2 or RAIDZ3 vdev, no SLOG, no special vdev. Snapshot replication target only.&lt;/li>
&lt;/ol>
&lt;p>The fourth case is the one most homelabbers underweight. A backup target does not need IOPS — it needs capacity efficiency, snapshot semantics, and &lt;code>zfs send&lt;/code> compatibility with the production pool. A single 8-wide RAIDZ2 with no cache layer is correct here, and it is the same topology that would be wrong for a primary storage pool.&lt;/p>
&lt;h2 id="a-reference-build-that-gets-the-tradeoffs-right">A reference build that gets the tradeoffs right&lt;/h2>
&lt;p>A strong general-purpose 2026 homelab pool looks like this: three mirror pairs of 16TB drives, a mirrored pair of Optane P5800X for SLOG, and a mirrored pair of Optane P1600X for the special vdev with &lt;code>special_small_blocks=32K&lt;/code>. Compression set to &lt;code>zstd-3&lt;/code> on every dataset; deduplication off; ARC left at its default (which fills most of free RAM on a 64GB box). That pool serves iSCSI to a Proxmox cluster, NFS for replication, and SMB to desktops, with a separate wide-RAIDZ2 pool as the nightly &lt;code>zfs send&lt;/code> backup target that otherwise stays idle.&lt;/p>
&lt;p>The reason this layout works is priority order: getting the vdev geometry right is the largest performance lever, the special vdev is the next, and ARC tuning is mostly a matter of leaving the modern defaults alone (especially on TrueNAS 25.10). None of the platform UI differences matter as much as the topology choice underneath.&lt;/p>
&lt;p>If you take one thing from this article: the OS choice matters less than the vdev layout. A wrong layout on the right OS will lose to a right layout on the wrong OS, every time, in a homelab.&lt;/p>
&lt;h2 id="related-on-techfuel-hq">Related on TechFuel HQ&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://techfuelhq.com/articles/proxmox-vs-truenas-vs-unraid/">Proxmox vs TrueNAS vs Unraid 2026: Which to Run&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/zfs-proxmox-pool-setup-arc-tuning-2026/">ZFS on Proxmox: Pool Setup, ARC Tuning, and Scrub Scheduling&lt;/a> — the practical commands for creating pools, capping ARC for VM hosts, and automating scrubs&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tools/proxmox-capacity-planner/">Proxmox VM Capacity Planner&lt;/a> — calculate how many VMs your host can run given ARC allocation, RAM, and vCPU overcommit&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/self-host-local-llm-rtx-5060-2026/">Self-Host a Local LLM on a Single RTX 5060 in 2026&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/self-hosted-photo-library-immich-photoprism-ente-2026/">Self-Hosted Photo Library Showdown 2026: Immich vs PhotoPrism vs Ente&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/pc-builds/1500-dollar-rtx-5060-ti-1440p-build-2026/">The $1,500 RTX 5060 Ti Mid-Range 1440p Build for 2026&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/">More Homelab Guides&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/ups-power-sizing-homelab-2026/">UPS and Power Sizing for the Homelab in 2026&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>The Register — OpenZFS 2.3 release coverage: &lt;a href="https://www.theregister.com/2025/01/23/openzfs_23_raid_expansion/" rel="noopener">https://www.theregister.com/2025/01/23/openzfs_23_raid_expansion/&lt;/a>&lt;/li>
&lt;li>FreeBSD Foundation — RAID-Z expansion deep-dive: &lt;a href="https://freebsdfoundation.org/blog/openzfs-raid-z-expansion-a-new-era-in-storage-flexibility/" rel="noopener">https://freebsdfoundation.org/blog/openzfs-raid-z-expansion-a-new-era-in-storage-flexibility/&lt;/a>&lt;/li>
&lt;li>TrueNAS Plans for 2026 (TrueNAS 26 + OpenZFS 2.4 roadmap): &lt;a href="https://www.truenas.com/blog/truenas-plans-for-2026/" rel="noopener">https://www.truenas.com/blog/truenas-plans-for-2026/&lt;/a>&lt;/li>
&lt;li>Tech Providence — OpenZFS 2.3 features summary: &lt;a href="https://www.techprovidence.com/openzfs-2-3-release-new-features-performance-upgrades/" rel="noopener">https://www.techprovidence.com/openzfs-2-3-release-new-features-performance-upgrades/&lt;/a>&lt;/li>
&lt;li>Unraid Cache pools documentation: &lt;a href="https://docs.unraid.net/unraid-os/using-unraid-to/manage-storage/cache-pools/" rel="noopener">https://docs.unraid.net/unraid-os/using-unraid-to/manage-storage/cache-pools/&lt;/a>&lt;/li>
&lt;li>Unraid ZFS storage documentation: &lt;a href="https://docs.unraid.net/unraid-os/advanced-configurations/optimize-storage/zfs-storage/" rel="noopener">https://docs.unraid.net/unraid-os/advanced-configurations/optimize-storage/zfs-storage/&lt;/a>&lt;/li>
&lt;li>TrueNAS forum — ARC behavior change in 24.04+: &lt;a href="https://forums.truenas.com/t/zfs-arc-caching-has-changed-since-updated-form-core-to-scale-24-x/64205" rel="noopener">https://forums.truenas.com/t/zfs-arc-caching-has-changed-since-updated-form-core-to-scale-24-x/64205&lt;/a>&lt;/li>
&lt;li>TrueNAS forum — SLOG/ZIL discussion: &lt;a href="https://forums.truenas.com/t/a-discussion-on-slog-zil-device/57570" rel="noopener">https://forums.truenas.com/t/a-discussion-on-slog-zil-device/57570&lt;/a>&lt;/li>
&lt;li>Reddit r/zfs — Enterprise NVMe SLOG considerations: &lt;a href="https://www.reddit.com/r/zfs/comments/1sk2xul/using_15tb_nvme_with_full_plp_for_zfs_overkill/" rel="noopener">https://www.reddit.com/r/zfs/comments/1sk2xul/using_15tb_nvme_with_full_plp_for_zfs_overkill/&lt;/a>&lt;/li>
&lt;li>Linus Tech Tips — ZFS best practices (RAIDZ vs mirror IOPS math): &lt;a href="https://linustechtips.com/topic/1525558-zfs-best-practices/" rel="noopener">https://linustechtips.com/topic/1525558-zfs-best-practices/&lt;/a>&lt;/li>
&lt;li>Proxmox forum — ZFS 2.3.0 in Proxmox VE: &lt;a href="https://forum.proxmox.com/threads/zfs-2-3-0.160624/" rel="noopener">https://forum.proxmox.com/threads/zfs-2-3-0.160624/&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="build-the-system-around-it">Build the system around it&lt;/h2>
&lt;p>The &lt;a href="https://techfuelhq.com/tools/pc-builder/">TechFuelHQ PC Builder&lt;/a> is a free, open-source picker with real socket / RAM / PSU / GPU clearance checks and a CC BY 4.0 parts dataset. Use it to size a host that actually fits the gear in this article.&lt;/p></description></item><item><title>10GbE Homelab Networking on a Budget: A 2026 Guide</title><link>https://techfuelhq.com/networking/10gbe-home-networking-budget-2026/</link><pubDate>Wed, 06 May 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/networking/10gbe-home-networking-budget-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-05-06 · Updated 2026-06-10 · ~12 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/networking/10gbe-home-networking-budget-2026.svg" alt="Three 10GbE homelab build tiers for 2026: point-to-point at about $65 with two used Mellanox ConnectX-3 cards and a DAC, a four-port MikroTik CRS305 switched fabric at about $280, and a six-to-eight node CRS309 cluster at about $520, plus the rule of thumb that spinning-disk NAS users should stay on 2.5GbE while NVMe NAS or Proxmox clusters benefit from 10G" width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR · The 10GbE call&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>Two machines, point-to-point (~$50):&lt;/strong> Two used &lt;strong>Mellanox ConnectX-3&lt;/strong> cards + a 1m DAC. No switch needed.&lt;/li>
&lt;li>&lt;strong>Switched fabric, four nodes (~$200):&lt;/strong> Add a &lt;strong>MikroTik CRS305&lt;/strong> ($157) for four SFP+ ports.&lt;/li>
&lt;li>&lt;strong>Spinning-disk NAS:&lt;/strong> Skip 10G. &lt;strong>2.5GbE&lt;/strong> is faster than your disks. Save the money.&lt;/li>
&lt;li>&lt;strong>NVMe/SSD NAS or two-node Proxmox cluster:&lt;/strong> 10G pays off the first day.&lt;/li>
&lt;li>&lt;strong>Cable choice:&lt;/strong> Passive &lt;strong>DAC&lt;/strong> under 5m. Fiber for longer runs or through walls.&lt;/li>
&lt;/ul>
&lt;p style="margin:0.75rem 0 0 0;font-size:0.9rem;color:#a0a0b8;">Used ConnectX-3 cards: $20–30 · 1m DAC: $12–20 · MikroTik CRS305: ~$140 · Plan around 6–9W idle draw per 10G NIC.&lt;/p>
&lt;/div>
&lt;p>The first time most homelabbers move a 60GB VM image between a Proxmox node and a NAS over a fresh 10G link, the transfer finishes before they can type the next command. Gigabit took minutes for the same file. That is what every homelabber chasing 10GbE is buying — the death of the wait. The interesting part in 2026 is how cheaply you can buy it.&lt;/p>
&lt;p>Used enterprise SFP+ NICs that cost $40 in 2023 now drift between $20 and $30 on eBay as data centers dump ConnectX-3 and ConnectX-4 stock. The unmanaged 10G switch market finally has options under $200 that aren&amp;rsquo;t toys.&lt;/p>
&lt;p>This guide walks the build from NIC to cable to switch, with real 2026 street prices, three honest tiers, the driver and thermal pitfalls nobody warns you about, and a verdict on who should bother.&lt;/p>
&lt;h2 id="methodology-and-sources">Methodology and sources&lt;/h2>
&lt;p>This guide is a research-based buying guide. Prices, power figures, driver behavior, and throughput numbers come from manufacturer specifications, used-market listings, and third-party review measurements — cited inline at each claim. Where a card, switch, or cable is recommended, the recommendation reflects the well-documented homelab consensus and published specs rather than a single bench run.&lt;/p>
&lt;p>Primary sources used in this article:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>ServeTheHome&lt;/strong> — &lt;a href="https://www.servethehome.com/tag/10gbe/" rel="noopener">10GbE networking coverage&lt;/a> and &lt;a href="https://www.servethehome.com/category/networking/" rel="noopener">used-enterprise-gear buying guides&lt;/a>, the standard reference for budget homelab networking&lt;/li>
&lt;li>&lt;strong>NVIDIA / Mellanox&lt;/strong> — &lt;a href="https://www.nvidia.com/en-us/networking/ethernet-adapters/" rel="noopener">ConnectX adapter product pages and spec sheets&lt;/a>&lt;/li>
&lt;li>&lt;strong>Intel&lt;/strong> — &lt;a href="https://www.intel.com/content/www/us/en/products/details/ethernet.html" rel="noopener">Ethernet network adapter product briefs&lt;/a> for the X520/X540/X550/X710 families&lt;/li>
&lt;li>&lt;strong>MikroTik / QNAP / TP-Link&lt;/strong> — official switch product pages, linked at each model below&lt;/li>
&lt;li>&lt;strong>LINK-PP&lt;/strong> — &lt;a href="https://www.l-p.com/blog/sfp-vs-rj45-speed-distance-power-cost-deployment.htm" rel="noopener">SFP vs RJ45 power, distance, and cost analysis&lt;/a>&lt;/li>
&lt;li>&lt;strong>r/homelab&lt;/strong> — &lt;a href="https://www.reddit.com/r/homelab/comments/15evqqz/10gbaset_vs_sfp_in_power_consumption_in_a_reality/" rel="noopener">community power-consumption measurements for SFP+ vs 10GBASE-T&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Last updated: 2026-06-10. Sources reviewed and current as of this date.&lt;/p>
&lt;h2 id="why-10gbe-in-2026">Why 10GbE in 2026&lt;/h2>
&lt;p>The &amp;ldquo;future-proofing&amp;rdquo; argument is dead. The case in 2026 is simpler: NVMe NAS pools and consumer ZFS arrays exceed 1 GB/s sequential trivially, and a gigabit link caps you at 125 MB/s — about an eighth of what the storage can deliver. Your network is the bottleneck before anything else.&lt;/p>
&lt;p>Three workloads collapse the gigabit ceiling:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>VM storage on shared NAS.&lt;/strong> A live-migrating VM image saturates gigabit and stalls the cluster.&lt;/li>
&lt;li>&lt;strong>Bulk archival pulls.&lt;/strong> Twenty terabytes across gigabit is a 48-hour job. Across 10G it&amp;rsquo;s six hours.&lt;/li>
&lt;li>&lt;strong>Editing video off the NAS.&lt;/strong> 4K ProRes scrubs are a slideshow on gigabit, real-time on 10G.&lt;/li>
&lt;/ul>
&lt;p>If none of those describe your setup, 2.5GbE is the better answer. It&amp;rsquo;s baked into most motherboards since 2022, costs almost nothing, and gets you 312 MB/s — enough for any single-spinner array and most consumer NVMe shares.&lt;/p>
&lt;h2 id="the-budget-bill-of-materials">The budget bill of materials&lt;/h2>
&lt;p>A working 10GbE link needs five components. Get one wrong and the whole thing wastes money.&lt;/p>
&lt;h3 id="nics">NICs&lt;/h3>
&lt;p>The choice is between &lt;strong>SFP+ cards&lt;/strong> (modular: plug in a transceiver or DAC) and &lt;strong>RJ45 10GBASE-T cards&lt;/strong> (a fat copper jack). The homelab community landed on the same answer a decade ago: SFP+ wins on every axis except convenience.&lt;/p>
&lt;p>Power draw is the headline. RJ45 10GBASE-T PHYs run hot — typically &lt;a href="https://www.l-p.com/blog/sfp-vs-rj45-speed-distance-power-cost-deployment.htm" rel="noopener">2 to 5 watts per port, more on older Intel X540 and X550 silicon that can pull close to 20W under load&lt;/a>. SFP+ NICs on passive DACs draw &lt;a href="https://www.reddit.com/r/homelab/comments/15evqqz/10gbaset_vs_sfp_in_power_consumption_in_a_reality/" rel="noopener">under 1W for the cage and 6–7W for the Mellanox ConnectX-3 controller, under 5W on an Intel X710&lt;/a>. Over a year of 24/7 operation that delta hits the power bill, and a bigger number in heat the chassis must dissipate.&lt;/p>
&lt;p>The other reason to buy SFP+ is the used market. Cards I&amp;rsquo;d buy in 2026:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Mellanox ConnectX-3 (MCX311A / MCX312A)&lt;/strong> — single or dual SFP+, $20–$30 on eBay. In-tree on every modern Linux kernel via &lt;code>mlx4_en&lt;/code>, works on Proxmox, TrueNAS Scale, and FreeBSD without intervention. End-of-life from NVIDIA, but the hardware is bulletproof.&lt;/li>
&lt;li>&lt;strong>Intel X520-DA1 / X520-DA2&lt;/strong> — the workhorse, $35–$50 used. Driver support is pristine on every OS including Windows. Intel firmware locks the cage to Intel optics; either buy Intel modules or &lt;a href="https://forums.servethehome.com/index.php?threads/patching-intel-x520-eeprom-to-unlock-all-sfp-transceivers.24634/" rel="noopener">run a one-time EEPROM patch that flips the bit at offset 0x58&lt;/a>. Five-minute fix with &lt;code>ethtool&lt;/code>.&lt;/li>
&lt;li>&lt;strong>Intel X710-DA2&lt;/strong> — newer, lower power (~5W), $80–$120 used. Worth the premium if power matters.&lt;/li>
&lt;/ul>
&lt;p>Skip ConnectX-2 (out of kernel) and Realtek 10G RJ45 cards (driver support is rough on anything that isn&amp;rsquo;t Windows).&lt;/p>
&lt;h3 id="switches">Switches&lt;/h3>
&lt;p>For a single point-to-point link between two machines, you don&amp;rsquo;t need a switch — two NICs, one DAC, static IPs, done. For three or more devices, see the comparison table below.&lt;/p>
&lt;h3 id="transceivers-dacs-and-cabling">Transceivers, DACs, and cabling&lt;/h3>
&lt;p>A 10GBASE-T transceiver in an SFP+ cage exists but is the worst of both worlds in 2026: costs more than a DAC, runs hot, and pulls &lt;a href="https://www.l-p.com/blog/sfp-vs-rj45-speed-distance-power-cost-deployment.htm" rel="noopener">around 2.5W per module, sometimes exceeding the SFP+ MSA spec&lt;/a>. Use one only if forced to bridge existing Cat6A.&lt;/p>
&lt;p>A passive DAC — two SFP+ ends molded onto a stiff copper cable — is the right answer for runs under 5 meters every single time. &lt;a href="https://shop.netgate.com/products/10g-sfp-direct-attached-copper-twinax-passive-cable-3-meters" rel="noopener">3m passive 10G DACs sit around $15–$20 generic, $25–$35 name brand&lt;/a>, draw no power, no compatibility debugging.&lt;/p>
&lt;p>Fiber comes in when the run exceeds DAC reach (5m passive, 10m active) or has to go through a wall. Generic 10GBASE-SR transceivers plus a 10m OM3 LC-LC cable run about $30 total. Single-brand both ends to avoid DDM warnings.&lt;/p>
&lt;p>If you must use copper RJ45, Cat6A is the floor. &lt;a href="https://datawiresolutions.com/blog/cat6-vs-cat6a-when-it-matters" rel="noopener">Cat6 supports 10G only to about 55m under ideal conditions; Cat6A is rated for the full 100m&lt;/a>. Cat7 and Cat8 are mostly marketing for home use.&lt;/p>
&lt;h2 id="three-realistic-budget-tiers">Three realistic budget tiers&lt;/h2>
&lt;p>Pricing is May 2026, from active eBay listings and Newegg/Amazon/B&amp;amp;H. Pick the tier matching your blast radius, not what looks impressive on paper.&lt;/p>
&lt;h3 id="the-300-tier--point-to-point-no-switch">The $300 tier — point-to-point, no switch&lt;/h3>
&lt;p>Minimum viable 10G. Two machines, no third device.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Item&lt;/th>
&lt;th scope="col">Qty&lt;/th>
&lt;th scope="col">Price&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Mellanox ConnectX-3 MCX311A (single port)&lt;/td>
&lt;td>2&lt;/td>
&lt;td>$50&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Generic 3m passive SFP+ DAC&lt;/td>
&lt;td>1&lt;/td>
&lt;td>$15&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Total&lt;/strong>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;strong>~$65&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Static IPs both ends, point a &lt;code>samba&lt;/code> mount or NFS export at it, done. Combined draw under 15W. This is the build to reach for with a single Proxmox host plus one TrueNAS box. The remaining $235 of the &amp;ldquo;tier&amp;rdquo; is whatever low-power switch already handles everything that isn&amp;rsquo;t this one fast link. Static IPs both ends and a single Cat6A run is the entire build.&lt;/p>
&lt;h3 id="the-600-tier--three-to-four-10g-devices">The $600 tier — three to four 10G devices&lt;/h3>
&lt;p>Now you need a switch. The MikroTik CRS305-1G-4S+IN is the answer.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Item&lt;/th>
&lt;th scope="col">Qty&lt;/th>
&lt;th scope="col">Price&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>MikroTik CRS305-1G-4S+IN (4× SFP+ + 1× 1G mgmt)&lt;/td>
&lt;td>1&lt;/td>
&lt;td>$160&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Mellanox ConnectX-3 MCX311A&lt;/td>
&lt;td>3&lt;/td>
&lt;td>$75&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>3m passive SFP+ DACs&lt;/td>
&lt;td>3&lt;/td>
&lt;td>$45&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Total&lt;/strong>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;strong>~$280&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Four SFP+ ports, fanless, dual-boot RouterOS or SwOS, idle power 8–10W. Currently &lt;a href="https://www.newegg.com/mikrotik-crs305-1g-4s-in/p/0XP-002R-000H3" rel="noopener">$157 on Newegg&lt;/a>, within $10 of that for two years. The rest of the tier covers fiber runs, an extra DAC, and either a dual-port X710-DA2 or a &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">used 10G-capable mini PC for the rack&lt;/a>. What sits upstream of the switch is the next decision — the &lt;a href="https://techfuelhq.com/networking/homelab-firewall-router-stack-2026/">2026 homelab firewall and router stack comparison&lt;/a> covers pfSense, OPNsense, MikroTik RouterOS, and UniFi for the box that actually terminates the WAN.&lt;/p>
&lt;h3 id="the-1000-tier--six-to-eight-10g-devices">The $1000 tier — six to eight 10G devices&lt;/h3>
&lt;p>A small cluster. The QNAP QSW-308-1C bridges three SFP+ plus eight 1G copper for slow stuff, currently &lt;a href="https://priceinfo.eu/network-switches/qnap-qsw-308-1c?country=de" rel="noopener">$220–$235&lt;/a>. For SFP+ density, the TP-Link TL-SX1008 unmanaged 8-port 10GbE is the better answer if RJ45 is acceptable — about $400.&lt;/p>
&lt;p>A reasonable $1000 tier:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Item&lt;/th>
&lt;th scope="col">Qty&lt;/th>
&lt;th scope="col">Price&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>TP-Link TL-SX1008 (8× 10G RJ45 unmanaged)&lt;/td>
&lt;td>1&lt;/td>
&lt;td>$400&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Mellanox ConnectX-3 dual port (MCX312A)&lt;/td>
&lt;td>4&lt;/td>
&lt;td>$120&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>SFP+ to 10GBASE-T transceivers (compatible)&lt;/td>
&lt;td>4&lt;/td>
&lt;td>$140&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Cat6A patch cables, 3m&lt;/td>
&lt;td>8&lt;/td>
&lt;td>$40&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Total&lt;/strong>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;strong>~$700&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Or, going pure SFP+ with a managed switch:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Item&lt;/th>
&lt;th scope="col">Qty&lt;/th>
&lt;th scope="col">Price&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>MikroTik CRS309-1G-8S+IN (8× SFP+ managed)&lt;/td>
&lt;td>1&lt;/td>
&lt;td>$280&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ConnectX-3 single port&lt;/td>
&lt;td>6&lt;/td>
&lt;td>$150&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>3m DACs&lt;/td>
&lt;td>6&lt;/td>
&lt;td>$90&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Total&lt;/strong>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;strong>~$520&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Either build leaves $300+ for spares or that second-hand server. SFP+ wins every time on power and acoustics — the TL-SX1008 has a fan, the MikroTik doesn&amp;rsquo;t.&lt;/p>
&lt;h2 id="budget-switch-comparison">Budget switch comparison&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Switch&lt;/th>
&lt;th scope="col">Ports&lt;/th>
&lt;th scope="col">Form&lt;/th>
&lt;th scope="col">Fan&lt;/th>
&lt;th scope="col">Power (idle)&lt;/th>
&lt;th scope="col">Mgmt&lt;/th>
&lt;th scope="col">2026 price&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>MikroTik CRS305-1G-4S+IN&lt;/td>
&lt;td>4× SFP+ + 1× 1G&lt;/td>
&lt;td>Desktop&lt;/td>
&lt;td>Fanless&lt;/td>
&lt;td>~8W&lt;/td>
&lt;td>Yes (SwOS/RouterOS)&lt;/td>
&lt;td>&lt;a href="https://www.newegg.com/mikrotik-crs305-1g-4s-in/p/0XP-002R-000H3" rel="noopener">$157&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>QNAP QSW-308-1C&lt;/td>
&lt;td>3× SFP+ + 8× 1G&lt;/td>
&lt;td>Desktop&lt;/td>
&lt;td>Fanless&lt;/td>
&lt;td>~12W&lt;/td>
&lt;td>Unmanaged&lt;/td>
&lt;td>&lt;a href="https://priceinfo.eu/network-switches/qnap-qsw-308-1c?country=de" rel="noopener">$220–$245&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>MikroTik CRS309-1G-8S+IN&lt;/td>
&lt;td>8× SFP+ + 1× 1G&lt;/td>
&lt;td>Desktop&lt;/td>
&lt;td>Fanless (passive)&lt;/td>
&lt;td>~14W&lt;/td>
&lt;td>Yes (SwOS/RouterOS)&lt;/td>
&lt;td>$280&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>TP-Link TL-SX1008&lt;/td>
&lt;td>8× 10GBASE-T&lt;/td>
&lt;td>Desktop/rack&lt;/td>
&lt;td>Active fan&lt;/td>
&lt;td>~30W&lt;/td>
&lt;td>Unmanaged&lt;/td>
&lt;td>&lt;a href="https://www.tp-link.com/us/business-networking/soho-switch-unmanaged/tl-sx1008/" rel="noopener">~$400&lt;/a>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Three takeaways. SFP+ switches sit under 15W idle; the all-RJ45 switch is 2–4× that with an audible fan. MikroTik gives you management at every price point. None of these are truly cheap, but all four are dramatically cheaper than 24 months ago.&lt;/p>
&lt;h2 id="common-pitfalls">Common pitfalls&lt;/h2>
&lt;p>Five things that will eat a weekend if you&amp;rsquo;re not warned.&lt;/p>
&lt;h3 id="heat-on-rj45-nics">Heat on RJ45 NICs&lt;/h3>
&lt;p>An Intel X550-T2 in a midrange PCIe slot with no airflow throttles inside ten minutes under sustained load. The chip silently drops to 1G to save itself, and you won&amp;rsquo;t notice until the transfer crawls. Fix: a 40mm Noctua over the heatsink with thermal tape, or skip RJ45 entirely. SFP+ cards don&amp;rsquo;t have this problem — ConnectX-3 controllers run cool enough to touch.&lt;/p>
&lt;h3 id="power-at-the-wall">Power at the wall&lt;/h3>
&lt;p>The power gap between 10GBASE-T and SFP+ is large and well documented. A dual-port Intel X540-T2 idles in the mid-teens of watts, while a single-port Mellanox ConnectX-3 on a passive DAC sits around 5W per the &lt;a href="https://www.reddit.com/r/homelab/comments/15evqqz/10gbaset_vs_sfp_in_power_consumption_in_a_reality/" rel="noopener">r/homelab power-consumption measurements&lt;/a>. Across multiple cards running 24/7, that delta adds up on the power bill within roughly a year. The &lt;a href="https://www.l-p.com/blog/sfp-vs-rj45-speed-distance-power-cost-deployment.htm" rel="noopener">SFP vs RJ45 TCO deep-dive&lt;/a> is worth reading before you commit.&lt;/p>
&lt;h3 id="driver-support-varies">Driver support varies&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Linux:&lt;/strong> ConnectX-3 (&lt;code>mlx4_en&lt;/code>), X520 (&lt;code>ixgbe&lt;/code>), X710 (&lt;code>i40e&lt;/code>) all in-tree, no DKMS. Realtek 8125B 2.5G is fine; Realtek 10G chipsets are not.&lt;/li>
&lt;li>&lt;strong>Proxmox:&lt;/strong> Same as Linux. ConnectX-3 plus mellanox-firmware-tools handles everything. Don&amp;rsquo;t pass the NIC into a guest unless using SR-IOV — bridge it.&lt;/li>
&lt;li>&lt;strong>TrueNAS Scale:&lt;/strong> Identical to Linux. Avoid OEM-rebadged firmware (HP, Dell, IBM) — cross-flash to generic Mellanox before installing.&lt;/li>
&lt;li>&lt;strong>Windows 11:&lt;/strong> X520, X710, ConnectX-4 install via Windows Update. ConnectX-3 needs the &lt;a href="https://network.nvidia.com/products/adapter-software/ethernet/windows/winof-2/" rel="noopener">WinOF driver from NVIDIA&lt;/a> — use the 5.50 build, not 8.x.&lt;/li>
&lt;li>&lt;strong>macOS:&lt;/strong> No first-party 10GbE NIC support on Apple Silicon. Buy a Thunderbolt-to-10GbE adapter (Sonnet Solo10G or OWC).&lt;/li>
&lt;/ul>
&lt;h3 id="vendor-lock-on-transceivers">Vendor lock on transceivers&lt;/h3>
&lt;p>Intel X520 and Cisco-branded switches refuse non-OEM SFP+ modules out of the box. The X520 fix is the &lt;a href="https://forums.servethehome.com/index.php?threads/patching-intel-x520-eeprom-to-unlock-all-sfp-transceivers.24634/" rel="noopener">EEPROM patch script&lt;/a> — flip bit 0 at offset 0x58, reboot, the cage takes any module. MikroTik, QNAP, TP-Link, and Mellanox don&amp;rsquo;t lock at all, which is most of why the homelab world buys MikroTik over Cisco for SOHO.&lt;/p>
&lt;h3 id="iperf3-doesnt-tell-the-whole-story">Iperf3 doesn&amp;rsquo;t tell the whole story&lt;/h3>
&lt;p>A clean iperf3 run between two 10G NICs over a 3m DAC commonly reports in the 9.4–9.8 Gbps range — a result widely reproduced in &lt;a href="https://www.servethehome.com/tag/10gbe/" rel="noopener">ServeTheHome&amp;rsquo;s 10GbE testing&lt;/a>. Real-world SMB or NFS transfers will not match it. CPU bottlenecks, single-thread limits in &lt;code>smbd&lt;/code>, and MTU mismatches commonly pin throughput well below line rate until you tune. Set jumbo frames (MTU 9000) on every device, enable RSS, and consider NFS over SMB for VM storage paths.&lt;/p>
&lt;h2 id="honest-verdict--who-should-and-shouldnt-bother">Honest verdict — who should and shouldn&amp;rsquo;t bother&lt;/h2>
&lt;p>&lt;strong>Skip 10GbE if&lt;/strong> your storage is a single drive or mirrored spinners (you&amp;rsquo;ll never beat 200 MB/s, and 2.5GbE is $30 total), or your &amp;ldquo;homelab&amp;rdquo; is one Synology and a desktop, or you&amp;rsquo;re upgrading because YouTube told you to.&lt;/p>
&lt;p>&lt;strong>Build the $300 point-to-point tier if&lt;/strong> you have one Proxmox or TrueNAS box and one workstation and actually move large files weekly. Highest ROI 10G build that exists.&lt;/p>
&lt;p>&lt;strong>Build the $600 tier if&lt;/strong> you have three or four 10G-capable devices and at least one is a NAS that backs the others, or you&amp;rsquo;re consolidating onto Proxmox with VM storage on shared storage.&lt;/p>
&lt;p>&lt;strong>Build the $1000 tier if&lt;/strong> you have six or more nodes running anything cluster-like — Ceph, Proxmox HA, distributed Plex/Jellyfin transcoding — or need management and VLANs.&lt;/p>
&lt;p>The biggest mistake I see in homelab Discord threads is people buying RJ45 10GBASE-T because &amp;ldquo;Cat6 is in the wall already,&amp;rdquo; then complaining six months later about heat, fan noise, and the power bill. If you have any choice, buy SFP+ — cheaper hardware, bigger ecosystem, smaller power bill, and the used market keeps it that way.&lt;/p>
&lt;p>10GbE used to be a luxury. In 2026 it&amp;rsquo;s a $65 weekend project.&lt;/p>
&lt;h2 id="build-a-node-around-the-link">Build a node around the link&lt;/h2>
&lt;p>Once the network is in, the bottleneck shifts to the box on either end. The &lt;a href="https://techfuelhq.com/tools/pc-builder/">TechFuelHQ PC Builder&lt;/a> is a free, open-source picker with real compatibility checks (socket, RAM type, PSU sizing, GPU clearance) and a CC BY 4.0 parts dataset. Pair it with the &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">mini-PC guide&lt;/a> if you want a 10G-capable hypervisor host that idles under 30W.&lt;/p>
&lt;h2 id="related-guides">Related guides&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://techfuelhq.com/networking/mikrotik-crs305-review-2026/">MikroTik CRS305-1G-4S+IN Review (2026)&lt;/a> — the dedicated deep-dive on setup, SwOS vs RouterOS, and the honest drawbacks&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">Best Mini PCs for a 2026 Homelab&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/networking/homelab-firewall-router-stack-2026/">The 2026 Homelab Firewall &amp;amp; Router Stack: pfSense vs OPNsense vs MikroTik vs UniFi&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/proxmox-truenas-unraid-storage-backend-2026/">Proxmox vs TrueNAS vs Unraid: 2026 Comparison&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tools/pc-builder/">TechFuelHQ PC Builder — free compatibility-checked picker&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/pc-builds/">PC Builds Hub&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/">Tutorials Hub&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>LINK-PP, &amp;ldquo;SFP vs. RJ45 — Speed, Distance, Power, Cost &amp;amp; Deployment&amp;rdquo; (2026): &lt;a href="https://www.l-p.com/blog/sfp-vs-rj45-speed-distance-power-cost-deployment.htm" rel="noopener">https://www.l-p.com/blog/sfp-vs-rj45-speed-distance-power-cost-deployment.htm&lt;/a>&lt;/li>
&lt;li>ServeTheHome forums, Intel X520 EEPROM patch thread (third-party SFP+ module support): &lt;a href="https://forums.servethehome.com/index.php?threads/patching-intel-x520-eeprom-to-unlock-all-sfp-transceivers.24634/" rel="noopener">https://forums.servethehome.com/index.php?threads/patching-intel-x520-eeprom-to-unlock-all-sfp-transceivers.24634/&lt;/a>&lt;/li>
&lt;li>Reddit r/homelab, &amp;ldquo;10GBaseT vs SFP+ in power consumption — real measurements&amp;rdquo;: &lt;a href="https://www.reddit.com/r/homelab/comments/15evqqz/10gbaset_vs_sfp_in_power_consumption_in_a_reality/" rel="noopener">https://www.reddit.com/r/homelab/comments/15evqqz/10gbaset_vs_sfp_in_power_consumption_in_a_reality/&lt;/a>&lt;/li>
&lt;li>Newegg, MikroTik CRS305-1G-4S+IN listing: &lt;a href="https://www.newegg.com/mikrotik-crs305-1g-4s-in/p/0XP-002R-000H3" rel="noopener">https://www.newegg.com/mikrotik-crs305-1g-4s-in/p/0XP-002R-000H3&lt;/a>&lt;/li>
&lt;li>TP-Link, TL-SX1008 product page: &lt;a href="https://www.tp-link.com/us/business-networking/soho-switch-unmanaged/tl-sx1008/" rel="noopener">https://www.tp-link.com/us/business-networking/soho-switch-unmanaged/tl-sx1008/&lt;/a>&lt;/li>
&lt;li>Priceinfo.eu, QNAP QSW-308-1C 2026 price tracking: &lt;a href="https://priceinfo.eu/network-switches/qnap-qsw-308-1c?country=de" rel="noopener">https://priceinfo.eu/network-switches/qnap-qsw-308-1c?country=de&lt;/a>&lt;/li>
&lt;li>Data Wire Solutions, &amp;ldquo;Cat6 vs Cat6A for Homes &amp;amp; Small Offices&amp;rdquo; (2026): &lt;a href="https://datawiresolutions.com/blog/cat6-vs-cat6a-when-it-matters" rel="noopener">https://datawiresolutions.com/blog/cat6-vs-cat6a-when-it-matters&lt;/a>&lt;/li>
&lt;li>Netgate, 3m SFP+ passive DAC product page: &lt;a href="https://shop.netgate.com/products/10g-sfp-direct-attached-copper-twinax-passive-cable-3-meters" rel="noopener">https://shop.netgate.com/products/10g-sfp-direct-attached-copper-twinax-passive-cable-3-meters&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>How to Self-Host a Local LLM on a Single RTX 5060 in 2026</title><link>https://techfuelhq.com/tutorials/self-host-local-llm-rtx-5060-2026/</link><pubDate>Wed, 06 May 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tutorials/self-host-local-llm-rtx-5060-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-05-06 · ~14 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/tutorials/self-host-local-llm-rtx-5060-2026.svg" alt="Topology diagram of a self-hosted local LLM on an RTX 5060: GGUF models (Qwen 2.5 14B/7B, Llama 3.1 8B, Mistral 7B at Q4) feed an RTX 5060 Ti 16GB inference node running Ollama on Linux (port 11434) or LM Studio on Windows (port 1234) over llama.cpp, served across a 10G LAN to a laptop, Open WebUI on a mini PC, and OpenAI-API tools." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>The first time I spun up Llama 3.1 8B on my own machine, with no API key, no rate limit, and no telemetry phoning home, I sat there asking it the kind of half-formed questions I&amp;rsquo;d never paste into a hosted chat window. That moment is what most people are actually buying when they self-host a model. Not raw performance. Not even cost savings. The simple fact that the prompt and the answer never leave the box.&lt;/p>
&lt;p>In early 2026 that box could be $300 — and the hardware math still starts from NVIDIA&amp;rsquo;s &lt;a href="https://www.nvidia.com/en-us/geforce/news/rtx-5060-desktop-family-laptop-5060-coming-soon/" rel="noopener">RTX 5060 May 2025 launch at $299&lt;/a> for the 8GB model, with the &lt;a href="https://investor.nvidia.com/news/press-release-details/2025/NVIDIA-Blackwell-GeForce-RTX-Arrives-for-Every-Gamer-Starting-at-299/default.aspx" rel="noopener">16GB RTX 5060 Ti at $429&lt;/a>. &lt;strong>Street-price reality check (July 2026):&lt;/strong> the 2026 GDDR memory shortage has pushed both cards above list — the 5060 Ti 16GB runs roughly $550–$590 as of July 2026, and the base 5060 also sits above its $299 MSRP; check live retailer pricing before budgeting, and see our &lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5060-ti-vs-rx-9060-xt-1440p-showdown-2026/">RTX 5060 Ti vs RX 9060 XT price breakdown&lt;/a> and &lt;a href="https://techfuelhq.com/articles/ram-ssd-price-crisis-2026/">the 2026 RAM/SSD price crisis&lt;/a> for why. The open-weights model situation, meanwhile, has fully caught up — Llama 3.3, Qwen 2.5, and Mistral 7B all run respectably on these cards with the right quantization. This guide is the build I&amp;rsquo;d hand a friend who asked me to skip the cloud and run their own assistant. If you want the wider view first — where the chat model sits next to image generation, speech, and a coding assistant — start with the &lt;a href="https://techfuelhq.com/articles/self-hosted-ai-stack-2026/">self-hosted AI stack overview&lt;/a>.&lt;/p>
&lt;h2 id="methodology-and-sourcing">Methodology and sourcing&lt;/h2>
&lt;p>The tokens/sec figures in this guide come from published benchmarks for these exact cards — LocalScore for the RTX 5060 Ti 16GB and Database Mart&amp;rsquo;s Ollama 0.9.5 testing for the RTX 5060 8GB — cited at the table itself, not from a first-party bench (the RTX 5060-class cards aren&amp;rsquo;t part of the author&amp;rsquo;s current rig). The setup walkthrough and tuning notes reflect hands-on experience running Ollama: a gotcha worth logging is that Ollama&amp;rsquo;s default context window is 2048, and bumping it to 8192 on an 8GB card can push into shared-memory swap and cut tokens/sec by roughly 40%. Models covered: Llama 3.1 8B, Llama 3.3 70B (Q4 quant, partially offloaded), Qwen 2.5 7B, and Mistral 7B. Last verified 2026-05-06 by LK Wood IV; GPU street pricing re-verified 2026-07-09 against the July 2026 shortage data in our 5060 Ti vs 9060 XT review.&lt;/p>
&lt;h2 id="why-local-llms-in-2026">Why local LLMs in 2026&lt;/h2>
&lt;p>Two things changed since 2024. First, hosted API pricing stopped racing to zero — Anthropic and OpenAI both raised prices on their flagship models last year, and the budget tiers that used to be free are now metered. A heavy user paying $20–60/month for chat plus another $50–200 in API spend can break even on a $300 GPU in under a year of self-hosting.&lt;/p>
&lt;p>Second, open-weights models caught up to where hosted GPT-4 was eighteen months ago. Llama 3.3 70B (quantized) writes nearly indistinguishable code from GPT-4o for routine tasks, and 8B-class models cleared the threshold where they&amp;rsquo;re actually useful for daily work — summarization, code completion, RAG over personal docs. The privacy angle matters too: financial planning prompts, draft emails about coworkers, half-formed business ideas. None of that should sit in a third-party log file.&lt;/p>
&lt;p>Until the RTX 50-series, &amp;ldquo;local LLM that doesn&amp;rsquo;t make you wait&amp;rdquo; meant a used 3090 at $700+ on eBay. The RTX 5060 family changed the math at the bottom of the stack.&lt;/p>
&lt;h2 id="rtx-5060-hardware-reality-check">RTX 5060 hardware reality check&lt;/h2>
&lt;p>Three cards in the family, two that matter for LLMs:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>RTX 5060 8GB&lt;/strong> — $299, 3,840 CUDA cores on Blackwell, &lt;a href="https://www.nvidia.com/en-us/geforce/news/rtx-5060-desktop-family-laptop-5060-coming-soon/" rel="noopener">128-bit bus, GDDR7&lt;/a>. Runs up to ~7B at Q4 with usable speed.&lt;/li>
&lt;li>&lt;strong>RTX 5060 Ti 8GB&lt;/strong> — $379. Same VRAM ceiling, slightly more compute. Don&amp;rsquo;t buy this for LLMs; the 8GB ceiling is the bottleneck.&lt;/li>
&lt;li>&lt;strong>RTX 5060 Ti 16GB&lt;/strong> — $429, &lt;a href="https://www.bestgpusforai.com/gpu-comparison/5060-ti-vs-5070" rel="noopener">4,608 CUDA cores, 759 AI TOPS, 128-bit bus at 448 GB/s&lt;/a>. This is the LLM card.&lt;/li>
&lt;/ul>
&lt;p>For $300, the 8GB 5060 runs a 7B model at 50–60 tokens/s — enough for chat, coding help, and document Q&amp;amp;A. For $429, the 16GB 5060 Ti adds 13–14B models at usable speeds plus 30B+ MoE with &lt;a href="https://www.reddit.com/r/LocalLLaMA/comments/1ryze51/rtx_5060_ti_16gb_local_llm_findings_30b_still/" rel="noopener">CPU offload tricks&lt;/a>. The extra $130 is the highest-ROI upgrade in this build. I run the 16GB; notes below assume it, with 8GB caveats called out where they matter.&lt;/p>
&lt;h2 id="software-stack-ollama-vs-lm-studio-vs-vllm-vs-llamacpp">Software stack: Ollama vs LM Studio vs vLLM vs llama.cpp&lt;/h2>
&lt;p>Four tools, all built on the same llama.cpp foundation. Pick by friction tolerance:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>llama.cpp&lt;/strong> — Gerganov&amp;rsquo;s &lt;a href="https://d-central.tech/lmstudio-vs-ollama-vs-llamacpp/" rel="noopener">original C++ inference engine&lt;/a>. Fastest, most flexible, most setup. You compile it, manage GGUF files, and write your own server config. Graduate here once Ollama starts feeling limited.&lt;/li>
&lt;li>&lt;strong>Ollama&lt;/strong> — daemon wrapping llama.cpp with a clean CLI and model registry. &lt;code>ollama pull qwen2.5:7b&lt;/code> and you&amp;rsquo;re chatting in 60 seconds. What I run on my Linux box for LAN serving.&lt;/li>
&lt;li>&lt;strong>LM Studio&lt;/strong> — desktop GUI on llama.cpp. Closed UI, open backend. Best for Windows users who want a polished interface and one-click downloads. Slightly slower than raw Ollama but easier without the CLI.&lt;/li>
&lt;li>&lt;strong>vLLM&lt;/strong> — high-throughput batched serving for data center GPUs with PagedAttention. Overkill for a single 5060 unless you&amp;rsquo;re serving multiple concurrent users.&lt;/li>
&lt;/ul>
&lt;p>This guide shows &lt;strong>Ollama on Linux&lt;/strong> and &lt;strong>LM Studio on Windows&lt;/strong> because those are the two paths 95% of homelabbers take. Either produces nearly identical token rates on the same model and quantization.&lt;/p>
&lt;h2 id="step-by-step-setup--linux-ollama">Step-by-step setup — Linux (Ollama)&lt;/h2>
&lt;p>I run Ollama on Ubuntu 24.04 LTS with the NVIDIA proprietary 575+ driver. Steps:&lt;/p>
&lt;ol>
&lt;li>Install the NVIDIA driver (&lt;code>sudo ubuntu-drivers install&lt;/code>) and reboot. Verify with &lt;code>nvidia-smi&lt;/code> — you should see &amp;ldquo;GeForce RTX 5060 Ti&amp;rdquo; and CUDA 12.4 or newer.&lt;/li>
&lt;li>Install Ollama: &lt;code>curl -fsSL https://ollama.com/install.sh | sh&lt;/code>. Creates a systemd service that listens on &lt;code>localhost:11434&lt;/code>.&lt;/li>
&lt;li>Pull a model: &lt;code>ollama pull qwen2.5:7b&lt;/code> (~4.7GB). For 16GB cards, also try &lt;code>ollama pull qwen2.5:14b&lt;/code> (~8.7GB).&lt;/li>
&lt;li>Test: &lt;code>ollama run qwen2.5:7b &amp;quot;Write a Python function to detect duplicate files by hash.&amp;quot;&lt;/code> First token under a second; responses stream at 50–60 t/s on the 8GB card.&lt;/li>
&lt;li>Optional LAN exposure: edit &lt;code>/etc/systemd/system/ollama.service&lt;/code>, add &lt;code>Environment=&amp;quot;OLLAMA_HOST=0.0.0.0:11434&amp;quot;&lt;/code> under &lt;code>[Service]&lt;/code>, then &lt;code>systemctl daemon-reload &amp;amp;&amp;amp; systemctl restart ollama&lt;/code>. Point &lt;a href="https://github.com/open-webui/open-webui" rel="noopener">Open WebUI&lt;/a> from a &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">low-power mini PC&lt;/a> at the GPU box.&lt;/li>
&lt;/ol>
&lt;p>I treat the GPU box as a headless inference node and hit it from a laptop over &lt;a href="https://techfuelhq.com/networking/10gbe-home-networking-budget-2026/">my 10G homelab link&lt;/a>.&lt;/p>
&lt;h2 id="step-by-step-setup--windows-lm-studio">Step-by-step setup — Windows (LM Studio)&lt;/h2>
&lt;p>LM Studio is the one-installer path on Windows 11.&lt;/p>
&lt;ol>
&lt;li>Update the GeForce driver to 575 or newer via GeForce Experience. Older drivers on Blackwell silently fall back to CPU inference.&lt;/li>
&lt;li>Install LM Studio from the &lt;a href="https://lmstudio.ai/" rel="noopener">official site&lt;/a>.&lt;/li>
&lt;li>In the Discover tab, search &amp;ldquo;Qwen2.5 7B Instruct GGUF&amp;rdquo;. Filter by quantization — &lt;code>Q4_K_M&lt;/code> for the 8GB card or &lt;code>Q5_K_M&lt;/code>/&lt;code>Q6_K&lt;/code> for the 16GB. Download.&lt;/li>
&lt;li>In the Chat tab, load the model and confirm the GPU offload slider is maxed (all layers on GPU, not split with CPU). Send a test prompt.&lt;/li>
&lt;li>Optional: enable the local server tab on port 1234. Any tool that speaks the OpenAI API (Continue, Cursor&amp;rsquo;s local mode, your own scripts) can hit &lt;code>http://localhost:1234/v1&lt;/code> as a drop-in.&lt;/li>
&lt;/ol>
&lt;p>Windows is friendlier; Linux is faster and cleaner once installed. For an always-on inference box, Linux wins on uptime and resource overhead.&lt;/p>
&lt;p>One note on storage: GGUF model files are large — a Q5_K_M of a 14B parameter model is roughly 10 GB, and you will accumulate three or four before you settle on the one you actually use day-to-day. If you are running this on a dedicated server with a NAS underneath, the storage layer matters more than people admit — the &lt;a href="https://techfuelhq.com/homelab/proxmox-truenas-unraid-storage-backend-2026/">Proxmox vs TrueNAS vs Unraid storage backend comparison for 2026&lt;/a> covers ZFS vs btrfs, NVMe SLOG, and the IOPS profile that keeps model loads from stalling on first inference.&lt;/p>
&lt;h2 id="models-that-actually-fit-and-run-well">Models that actually fit and run well&lt;/h2>
&lt;p>Quantization is the lever. Llama 3.1 8B in FP16 is 16GB; at Q4_K_M it&amp;rsquo;s about 4.7GB. Q4_K_M is the sweet spot most homelabbers use — small enough to fit, large enough that quality loss is minor for general chat. Q5_K_M trades 20% more VRAM for cleaner outputs. Q6_K and Q8_0 are diminishing returns. To check a specific card and model size before you download, run it through the &lt;a href="https://techfuelhq.com/tools/llm-vram-calculator/">LLM VRAM calculator&lt;/a>.&lt;/p>
&lt;p>What actually fits:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>8GB card&lt;/strong> — anything ≤7B at Q4 fits with room for context: Llama 3.2 3B, Llama 3.1 8B Q4, Qwen 2.5 7B Q4, Mistral 7B Q4, Phi-4-mini Q4, Gemma 3 4B. Skip 13B+ — you&amp;rsquo;ll see swap thrashing and 5 t/s.&lt;/li>
&lt;li>&lt;strong>16GB card&lt;/strong> — everything above plus Qwen 2.5 14B Q4 (8.7GB), Llama 3.3 70B with &lt;a href="https://news.ycombinator.com/item?id=42831769" rel="noopener">aggressive Q2/Q3&lt;/a>, and 30B+ MoE like Qwen3-Coder-30B with &lt;code>--cpu-moe&lt;/code>, &lt;a href="https://www.reddit.com/r/LocalLLaMA/comments/1ryze51/rtx_5060_ti_16gb_local_llm_findings_30b_still/" rel="noopener">tuned to ~30 t/s on the 5060 Ti 16GB&lt;/a>.&lt;/li>
&lt;/ul>
&lt;p>For a daily driver, I&amp;rsquo;d run Qwen 2.5 14B Q4 on the 16GB or Llama 3.1 8B Q4 on the 8GB. Both have permissive licenses and community-validated GGUFs on Hugging Face.&lt;/p>
&lt;h2 id="tokenssec-benchmarks">Tokens/sec benchmarks&lt;/h2>
&lt;p>Below are real numbers, not vendor marketing. The 5060 Ti 16GB row uses &lt;a href="https://www.localscore.ai/accelerator/860" rel="noopener">LocalScore&amp;rsquo;s published benchmarks&lt;/a>; the 5060 8GB row uses &lt;a href="https://www.databasemart.com/blog/ollama-gpu-benchmark-rtx5060" rel="noopener">Database Mart&amp;rsquo;s Ollama 0.9.5 testing on an RTX 5060 8GB&lt;/a> at 4-bit quantization.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Model&lt;/th>
&lt;th scope="col">Quant&lt;/th>
&lt;th scope="col">VRAM used&lt;/th>
&lt;th scope="col">Card&lt;/th>
&lt;th scope="col">Tokens/sec (gen)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Llama 3.2 1B Instruct&lt;/td>
&lt;td>Q4_K_M&lt;/td>
&lt;td>~1.3 GB&lt;/td>
&lt;td>RTX 5060 Ti 16GB&lt;/td>
&lt;td>192&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Llama 3.2 3B Instruct&lt;/td>
&lt;td>Q4_K_M&lt;/td>
&lt;td>~2.0 GB&lt;/td>
&lt;td>RTX 5060 8GB&lt;/td>
&lt;td>96&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Qwen 2.5 7B Instruct&lt;/td>
&lt;td>Q4_K_M&lt;/td>
&lt;td>~4.7 GB&lt;/td>
&lt;td>RTX 5060 8GB&lt;/td>
&lt;td>58&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Llama 3.1 8B Instruct&lt;/td>
&lt;td>Q4_K_M&lt;/td>
&lt;td>~5.2 GB&lt;/td>
&lt;td>RTX 5060 Ti 16GB&lt;/td>
&lt;td>59&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Mistral 7B Instruct&lt;/td>
&lt;td>Q4&lt;/td>
&lt;td>~4.4 GB&lt;/td>
&lt;td>RTX 5060 8GB&lt;/td>
&lt;td>73&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Qwen 2.5 14B Instruct&lt;/td>
&lt;td>Q4_K_M&lt;/td>
&lt;td>~8.7 GB&lt;/td>
&lt;td>RTX 5060 Ti 16GB&lt;/td>
&lt;td>32&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Qwen3-Coder 30B (MoE)&lt;/td>
&lt;td>Q4_K_M + cpu-moe&lt;/td>
&lt;td>~14 GB&lt;/td>
&lt;td>RTX 5060 Ti 16GB&lt;/td>
&lt;td>30&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Three observations. The 7–8B class is the sweet spot for both cards — snappier than most hosted services, with headroom for context. The 14B and 30B rows on the 16GB card are where the extra VRAM earns its $130. The 1B Llama 3.2 number (192 t/s) is faster than you can read — handy for RAG indexing or autocomplete.&lt;/p>
&lt;p>For comparison, the &lt;a href="https://www.tomshardware.com/pc-components/gpus/rtx-5070-vs-rtx-5060-ti-16gb" rel="noopener">RTX 5070 hits ~111 t/s in MLPerf Client vs 84 for the 5060 Ti 16GB&lt;/a> — about 33% faster — but with only 12GB VRAM, so models above 12GB push it to offload while the 5060 Ti runs them clean.&lt;/p>
&lt;h2 id="common-pitfalls">Common pitfalls&lt;/h2>
&lt;p>Things that will eat an evening if you&amp;rsquo;re not warned:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Driver version.&lt;/strong> Blackwell needs NVIDIA 570+ on Linux, 575+ on Windows. Older drivers cause silent CPU fallback or mid-generation crashes. Check &lt;code>nvidia-smi&lt;/code> and CUDA toolkit before blaming the model.&lt;/li>
&lt;li>&lt;strong>Context length.&lt;/strong> Doubling context from 4K to 16K can double VRAM use on attention. If a 7B OOMs after a long conversation, shorten the window (&lt;code>num_ctx&lt;/code> in Ollama, slider in LM Studio).&lt;/li>
&lt;li>&lt;strong>Quantization confusion.&lt;/strong> Q4_K_M is the floor for general use. Q3_K_S sounds dumber on smaller models. Q2 only makes sense on 70B where any answer beats none.&lt;/li>
&lt;li>&lt;strong>Power draw.&lt;/strong> The 5060 Ti idles ~15W, pulls ~180W under sustained inference. A quality 550W PSU is fine; cheap 500W units brown out under Blackwell&amp;rsquo;s 1.5x transients.&lt;/li>
&lt;li>&lt;strong>Thermals.&lt;/strong> Stock cooler runs ~72°C under load in a ventilated case. If yours hits 85°C+, the chassis airflow is the problem. Two front intakes plus one rear exhaust is the floor.&lt;/li>
&lt;/ul>
&lt;h2 id="honest-verdict--when-to-step-up-to-a-5070-or-5080">Honest verdict — when to step up to a 5070 or 5080&lt;/h2>
&lt;p>If your daily use is chat, code completion, document Q&amp;amp;A, and small-batch embedding, the 5060 Ti 16GB is where I&amp;rsquo;d stop. The card has been &lt;a href="https://dropreference.com/en/blog/guide/best-graphics-cards-ai-2026" rel="noopener">in stock at MSRP for months&lt;/a> and pulls less than a quarter of a kilowatt at the wall.&lt;/p>
&lt;p>Step up to a &lt;strong>5070 (12GB)&lt;/strong> only if you don&amp;rsquo;t care about 14B+ models and want raw speed on 7B workloads, or you&amp;rsquo;re doing image generation alongside LLMs.&lt;/p>
&lt;p>Step up to a &lt;strong>5080 (16GB)&lt;/strong> or &lt;strong>used 3090 (24GB)&lt;/strong> if you want Llama 3.3 70B or Qwen 2.5 72B at usable Q4 speeds, batch inference for multiple users (see the &lt;a href="https://techfuelhq.com/pc-builds/1500-dollar-rtx-5060-ti-1440p-build-2026/">$1,500 RTX 5060 Ti 1440p build&lt;/a> as a starting chassis), or home fine-tuning.&lt;/p>
&lt;p>The biggest mistake I see: people spending $1500 on a 5080 because reviews told them to, then running a 7B that&amp;rsquo;s identical speed on a $300 5060. Match the card to the workload, not the budget.&lt;/p>
&lt;p>Local LLMs used to be a research project. In 2026 they&amp;rsquo;re a weekend install on a $300 card. The only question is which model gets your prompts.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Working out of St. Louis County. If you&amp;rsquo;re running a 5060 or 5060 Ti and seeing different tokens/sec on your stack, send your config and run notes to &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a>.&lt;/em>&lt;/p>
&lt;h2 id="related-guides">Related guides&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5060-ti-vs-rx-9060-xt-1440p-showdown-2026/">RTX 5060 Ti vs RX 9060 XT — 1440p Showdown 2026&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/pc-builds/1500-dollar-rtx-5060-ti-1440p-build-2026/">$1,500 RTX 5060 Ti 1440p Build for 2026&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">Best Mini PCs for a 2026 Homelab&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/networking/10gbe-home-networking-budget-2026/">10Gbps Home Networking on a Budget&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/">Tutorials Hub&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>NVIDIA, &amp;ldquo;GeForce RTX 5060 Desktop Family&amp;rdquo; launch announcement: &lt;a href="https://www.nvidia.com/en-us/geforce/news/rtx-5060-desktop-family-laptop-5060-coming-soon/" rel="noopener">https://www.nvidia.com/en-us/geforce/news/rtx-5060-desktop-family-laptop-5060-coming-soon/&lt;/a>&lt;/li>
&lt;li>NVIDIA Investor Relations, RTX 5060 family pricing release: &lt;a href="https://investor.nvidia.com/news/press-release-details/2025/NVIDIA-Blackwell-GeForce-RTX-Arrives-for-Every-Gamer-Starting-at-299/default.aspx" rel="noopener">https://investor.nvidia.com/news/press-release-details/2025/NVIDIA-Blackwell-GeForce-RTX-Arrives-for-Every-Gamer-Starting-at-299/default.aspx&lt;/a>&lt;/li>
&lt;li>BestGPUsForAI, &amp;ldquo;RTX 5060 Ti vs RTX 5070 for AI&amp;rdquo; specs and TOPS comparison: &lt;a href="https://www.bestgpusforai.com/gpu-comparison/5060-ti-vs-5070" rel="noopener">https://www.bestgpusforai.com/gpu-comparison/5060-ti-vs-5070&lt;/a>&lt;/li>
&lt;li>LocalScore, RTX 5060 Ti benchmark results (Llama 3.2 1B, Llama 3.1 8B, Qwen 2.5 14B): &lt;a href="https://www.localscore.ai/accelerator/860" rel="noopener">https://www.localscore.ai/accelerator/860&lt;/a>&lt;/li>
&lt;li>Database Mart, &amp;ldquo;RTX 5060 Ollama Benchmarks: Best GPU for 8GB LLMs&amp;rdquo; (18-model sweep): &lt;a href="https://www.databasemart.com/blog/ollama-gpu-benchmark-rtx5060" rel="noopener">https://www.databasemart.com/blog/ollama-gpu-benchmark-rtx5060&lt;/a>&lt;/li>
&lt;li>Reddit r/LocalLLaMA, &amp;ldquo;RTX 5060 Ti 16GB Local LLM Findings: 30B Still Wins&amp;rdquo; (Qwen3-Coder tuning): &lt;a href="https://www.reddit.com/r/LocalLLaMA/comments/1ryze51/rtx_5060_ti_16gb_local_llm_findings_30b_still/" rel="noopener">https://www.reddit.com/r/LocalLLaMA/comments/1ryze51/rtx_5060_ti_16gb_local_llm_findings_30b_still/&lt;/a>&lt;/li>
&lt;li>D-Central Technologies, &amp;ldquo;LM Studio vs Ollama vs llama.cpp&amp;rdquo; (2026 runner comparison): &lt;a href="https://d-central.tech/lmstudio-vs-ollama-vs-llamacpp/" rel="noopener">https://d-central.tech/lmstudio-vs-ollama-vs-llamacpp/&lt;/a>&lt;/li>
&lt;li>Tom&amp;rsquo;s Hardware, &amp;ldquo;RTX 5070 vs RTX 5060 Ti 16GB&amp;rdquo; (MLPerf and Blender comparison): &lt;a href="https://www.tomshardware.com/pc-components/gpus/rtx-5070-vs-rtx-5060-ti-16gb" rel="noopener">https://www.tomshardware.com/pc-components/gpus/rtx-5070-vs-rtx-5060-ti-16gb&lt;/a>&lt;/li>
&lt;li>DropReference, &amp;ldquo;Best graphics cards for AI in 2026&amp;rdquo; (RTX 5060 Ti availability and pricing): &lt;a href="https://dropreference.com/en/blog/guide/best-graphics-cards-ai-2026" rel="noopener">https://dropreference.com/en/blog/guide/best-graphics-cards-ai-2026&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>RTX 5060 Ti vs RX 9060 XT: The Honest 1440p Showdown for 2026</title><link>https://techfuelhq.com/gpu-reviews/rtx-5060-ti-vs-rx-9060-xt-1440p-showdown-2026/</link><pubDate>Wed, 06 May 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/gpu-reviews/rtx-5060-ti-vs-rx-9060-xt-1440p-showdown-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-05-06 · Updated 2026-07-13 · ~16 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/gpu-reviews/rtx-5060-ti-vs-rx-9060-xt-1440p-showdown-2026.svg" alt="Spec head-to-head table comparing the RTX 5060 Ti 16GB (Blackwell GB206, 4,608 shaders, 36 4th-gen RT cores, 16GB GDDR7, 448 GB/s, 180W, $429) against the RX 9060 XT 16GB (RDNA 4 Navi 44, 2,048 shaders, 32 3rd-gen RT cores, 16GB GDDR6, 3,130 MHz boost, 160W, $349), both averaging ~78 fps at native 1440p with an $80 price gap." width="1200" height="760" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR · The 30-second verdict&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>Pure 1440p gaming on a budget:&lt;/strong> Buy the &lt;strong>RX 9060 XT 16GB&lt;/strong>. Within 1% of the 5060 Ti on raster average; the ~$115 saved at 2026 street prices is a tier of monitor or 32 GB of RAM.&lt;/li>
&lt;li>&lt;strong>Ray tracing, content creation, or local AI (Stable Diffusion / LLMs):&lt;/strong> Buy the &lt;strong>RTX 5060 Ti 16GB&lt;/strong>. CUDA, NVENC, and 4th-gen RT cores are decisively ahead.&lt;/li>
&lt;li>&lt;strong>Linux daily driver:&lt;/strong> Edge to the &lt;strong>9060 XT&lt;/strong> — amdgpu supports it out of the box.&lt;/li>
&lt;li>&lt;strong>Esports / high-refresh 1440p:&lt;/strong> Either. Both push 240+ fps. Pick on price.&lt;/li>
&lt;li>&lt;strong>Do not buy for 1440p:&lt;/strong> Either 8GB card. At 1440p the 8GB buffer overflows in modern titles and frames fall off a cliff — 16GB or nothing.&lt;/li>
&lt;/ul>
&lt;p style="margin:0.75rem 0 0 0;font-size:0.9rem;color:#a0a0b8;">Street price checked July 12–13, 2026: 5060 Ti 16GB ~$564 (up to ~$635) · 9060 XT 16GB ~$448 (up to ~$509) — a ~$115 gap, both well above MSRP in the 2026 GDDR shortage · Both 16GB VRAM · Both PCIe 5.0 · Both 160–180W TBP class.&lt;/p>
&lt;/div>
&lt;p>A year after both cards shipped, the question in my inbox is the same one I asked when I bought my own: with both cards now selling above MSRP in the 2026 memory crunch, which 16GB mid-range card is the one for a 1440p build in 2026? I&amp;rsquo;ve logged hours on both — an &lt;a href="https://investor.nvidia.com/news/press-release-details/2025/NVIDIA-Blackwell-GeForce-RTX-Arrives-for-Every-Gamer-Starting-at-299/default.aspx" rel="noopener">RTX 5060 Ti 16GB at $429 MSRP&lt;/a> and an &lt;a href="https://www.tomshardware.com/pc-components/gpus/amd-radeon-rx-9060-xt-launches-on-june-5-starting-at-usd299" rel="noopener">RX 9060 XT 16GB at $349 MSRP&lt;/a> — and the truth is more interesting than either side&amp;rsquo;s marketing.&lt;/p>
&lt;p>Reviewers who tested only with vendor-favored game lists reached opposite conclusions. AMD picked titles where the &lt;a href="https://www.tomshardware.com/pc-components/gpus/amd-radeon-rx-9060-xt-launches-on-june-5-starting-at-usd299" rel="noopener">9060 XT 16GB beats the 5060 Ti 8GB by ~6% across 40 games&lt;/a>. NVIDIA pointed at DLSS 4 + MFG titles where the 5060 Ti pulls double-digit leads. Both are technically right. Neither tells you whether to buy.&lt;/p>
&lt;p>This is what I&amp;rsquo;ve found running both through a sane game lineup at native 1440p, with upscaling on, ray tracing on, and as inference cards on the side.&lt;/p>
&lt;h2 id="how-i-tested">How I tested&lt;/h2>
&lt;p>Both cards passed through the home bench in St. Louis County, MO during the 2024–2025 testing period. I picked up the RTX 5060 Ti 16GB at the $429 launch MSRP in summer 2025 and the RX 9060 XT 16GB at $349 MSRP shortly after its June 2025 launch — both were dual-fan AIB models in the cheapest in-stock SKU. Most of that gear has since been sold or retired (see the &lt;a href="https://techfuelhq.com/colophon/">Colophon&lt;/a> for the timeline). The benchmark numbers in the table below are aggregated from the public reviews I cite alongside the table (TechSpot, Tom&amp;rsquo;s Hardware, Club386), with native 1440p Ultra unless noted. My role here is selection — I picked an eight-game lineup that mixes both vendors&amp;rsquo; favored titles so neither side gets to cherry-pick the verdict. The qualitative observations on driver behavior, thermals, and Linux support are firsthand from running both cards in my own builds between July 2025 and April 2026. Current first-party GPU bench data is in the &lt;a href="https://techfuelhq.com/data/">TechFuelHQ Open Bench Datasets&lt;/a> directory. Last verified: 2026-06-09 by LK Wood IV.&lt;/p>
&lt;h2 id="spec-sheet-head-to-head">Spec sheet head-to-head&lt;/h2>
&lt;p>The cards are closer than the marketing suggests, but they&amp;rsquo;re not the same architecture. Sources: &lt;a href="https://www.techspot.com/review/2996-amd-radeon-9060-xt/" rel="noopener">TechSpot&amp;rsquo;s day-one tables&lt;/a>, &lt;a href="https://www.club386.com/amd-radeon-rx-9060-xt-16gb-vs-nvidia-geforce-rtx-5060-ti-16gb/" rel="noopener">Club386&amp;rsquo;s spec breakdown&lt;/a>, &lt;a href="https://www.amd.com/en/products/graphics/desktops/radeon/9000-series/amd-radeon-rx-9060xt.html" rel="noopener">AMD&amp;rsquo;s official 9060 XT page&lt;/a>.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Spec&lt;/th>
&lt;th scope="col">RTX 5060 Ti 16GB&lt;/th>
&lt;th scope="col">RX 9060 XT 16GB&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Architecture&lt;/td>
&lt;td>Blackwell GB206&lt;/td>
&lt;td>RDNA 4 Navi 44&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Process&lt;/td>
&lt;td>TSMC 4NP&lt;/td>
&lt;td>TSMC N4P&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Shaders / SPs&lt;/td>
&lt;td>4,608&lt;/td>
&lt;td>2,048&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>RT cores&lt;/td>
&lt;td>36 (4th gen)&lt;/td>
&lt;td>32 (3rd gen)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>AI / Tensor&lt;/td>
&lt;td>144 (5th gen)&lt;/td>
&lt;td>64 (2nd gen)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Boost clock&lt;/td>
&lt;td>2,572 MHz&lt;/td>
&lt;td>3,130 MHz&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Memory&lt;/td>
&lt;td>16 GB GDDR7&lt;/td>
&lt;td>16 GB GDDR6&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Bus&lt;/td>
&lt;td>128-bit&lt;/td>
&lt;td>128-bit&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Bandwidth&lt;/td>
&lt;td>448 GB/s&lt;/td>
&lt;td>320 GB/s&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Infinity / L2 cache&lt;/td>
&lt;td>32 MB L2&lt;/td>
&lt;td>32 MB Infinity&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>TBP&lt;/td>
&lt;td>180 W&lt;/td>
&lt;td>160 W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>PCIe&lt;/td>
&lt;td>5.0 x8&lt;/td>
&lt;td>5.0 x16&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>MSRP (May 2025)&lt;/td>
&lt;td>$429&lt;/td>
&lt;td>$349&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Street price (Jul 12–13, 2026)&lt;/td>
&lt;td>~$564 (to ~$635)&lt;/td>
&lt;td>~$448 (to ~$509)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Two things stand out. NVIDIA more than doubles the shader count, which on paper looks like a blowout — until you notice Navi 44 boosts to 3.13 GHz, &lt;a href="https://www.club386.com/amd-radeon-rx-9060-xt-16gb-vs-nvidia-geforce-rtx-5060-ti-16gb/" rel="noopener">22% higher than the 5060 Ti&amp;rsquo;s clock&lt;/a>. Combined with RDNA 4&amp;rsquo;s per-CU efficiency, the 9060 XT closes most of the gap. The other surprise: the 5060 Ti runs only 8 PCIe lanes versus the 9060 XT&amp;rsquo;s 16. On a PCIe 5.0 board it&amp;rsquo;s irrelevant; on PCIe 4.0 the 5060 Ti can lose 2–4% in bandwidth-sensitive titles.&lt;/p>
&lt;p>NVIDIA opens at $80 more for what is, in pure raster, a near-tie. That&amp;rsquo;s the entire conversation in one number — at MSRP.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Street-price reality — checked July 12–13, 2026.&lt;/strong> MSRP is $429 (5060 Ti 16GB) and $349 (9060 XT 16GB), but the 2026 AI-driven GDDR memory shortage has pushed both above list and &lt;em>widened&lt;/em> the gap. Live retail trackers put the RTX 5060 Ti 16GB at &lt;strong>~$564&lt;/strong> for the cheapest in-stock model (rising to &lt;del>$635) and the RX 9060 XT 16GB at **&lt;/del>$448** (to ~$509). So the AMD card now saves roughly &lt;strong>$115&lt;/strong> at real street prices, not the $80 launch gap — the value case for the 9060 XT is stronger today, not weaker. Neither vendor plans MSRP cuts before Q4, so don&amp;rsquo;t expect near-term relief. Prices move week to week — check the live retailer price before buying. Background: &lt;a href="https://techfuelhq.com/articles/ram-ssd-price-crisis-2026/">the 2026 RAM and SSD price crisis&lt;/a> covers the same memory crunch now driving GPU prices up.&lt;/p>&lt;/blockquote>
&lt;h2 id="1440p-raster-benchmarks">1440p raster benchmarks&lt;/h2>
&lt;p>These are real numbers from public reviews, not synthetics. Sources: &lt;a href="https://www.techspot.com/review/2996-amd-radeon-9060-xt/" rel="noopener">TechSpot&amp;rsquo;s 9060 XT day-one review&lt;/a>, &lt;a href="https://www.techspot.com/review/3019-nvidia-5060-ti-vs-amd-9060-xt-with-dlss-fsr/" rel="noopener">TechSpot&amp;rsquo;s DLSS 4 vs FSR 4 head-to-head&lt;/a>, &lt;a href="https://www.tomshardware.com/pc-components/gpus/amd-radeon-rx-9060-xt-16gb-review/4" rel="noopener">Tom&amp;rsquo;s Hardware&amp;rsquo;s 9060 XT 16GB review&lt;/a>, &lt;a href="https://www.club386.com/amd-radeon-rx-9060-xt-16gb-review/" rel="noopener">Club386&amp;rsquo;s 9060 XT review&lt;/a>. Native 1440p Ultra unless noted.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Game&lt;/th>
&lt;th scope="col">Setting&lt;/th>
&lt;th scope="col">RTX 5060 Ti 16GB&lt;/th>
&lt;th scope="col">RX 9060 XT 16GB&lt;/th>
&lt;th scope="col">Winner&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Cyberpunk 2077&lt;/td>
&lt;td>Ultra, no RT&lt;/td>
&lt;td>71 fps&lt;/td>
&lt;td>68 fps&lt;/td>
&lt;td>NVIDIA +4%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Horizon Zero Dawn Remastered&lt;/td>
&lt;td>Highest&lt;/td>
&lt;td>91 fps&lt;/td>
&lt;td>88 fps&lt;/td>
&lt;td>NVIDIA +3%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Marvel Rivals&lt;/td>
&lt;td>Ultra&lt;/td>
&lt;td>88 fps&lt;/td>
&lt;td>79 fps&lt;/td>
&lt;td>NVIDIA +11%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Stellar Blade&lt;/td>
&lt;td>High&lt;/td>
&lt;td>71 fps&lt;/td>
&lt;td>55 fps&lt;/td>
&lt;td>NVIDIA +29%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Star Wars Outlaws&lt;/td>
&lt;td>High&lt;/td>
&lt;td>60 fps&lt;/td>
&lt;td>67 fps&lt;/td>
&lt;td>AMD +12%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Microsoft Flight Sim 2024&lt;/td>
&lt;td>Ultra&lt;/td>
&lt;td>47 fps&lt;/td>
&lt;td>58 fps&lt;/td>
&lt;td>AMD +23%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Space Marine 2&lt;/td>
&lt;td>Ultra&lt;/td>
&lt;td>74 fps&lt;/td>
&lt;td>77 fps&lt;/td>
&lt;td>AMD +4%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>F1 2024&lt;/td>
&lt;td>High&lt;/td>
&lt;td>124 fps&lt;/td>
&lt;td>132 fps&lt;/td>
&lt;td>AMD +6%&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Across these eight, the 5060 Ti averages ~78 fps and the 9060 XT ~78 fps. Within a percent. Hand the 9060 XT a bandwidth-friendly title (MSFS24, Star Wars Outlaws) and it pulls ahead. Hand the 5060 Ti a shader-bound title (Stellar Blade, Marvel Rivals) and the higher core count opens a real lead. On raster at 1440p, neither card has a structural advantage. The game decides.&lt;/p>
&lt;!-- ========== VISUAL 1: THE 1440p DUEL (diverging bar - signature grammar) ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0b1220;padding:26px 22px 18px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;">
&lt;div style="margin-bottom:6px;">
&lt;div style="font-size:18px;font-weight:700;letter-spacing:-0.3px;">The 1440p duel, game by game&lt;/div>
&lt;div style="font-size:12px;color:#8f9bb3;margin-top:4px;">Native 1440p Ultra. Bars grow from the centre line by the winner's margin - &lt;span style="color:#8fd400;font-weight:600;">green = RTX 5060 Ti&lt;/span>, &lt;span style="color:#ff6a5a;font-weight:600;">red = RX 9060 XT&lt;/span>. Six of eight land inside 12%: the matchup is a coin toss the title decides.&lt;/div>
&lt;/div>
&lt;div style="display:flex;align-items:center;gap:8px;margin:14px 0 10px;font-size:9.5px;color:#7a869c;text-transform:uppercase;letter-spacing:0.05em;">
&lt;div style="flex:0 0 96px;">&lt;/div>
&lt;div style="flex:1 1 auto;min-width:0;display:flex;">&lt;div style="flex:1 1 0;text-align:left;color:#ff6a5a;">&amp;#9664; 9060 XT wins&lt;/div>&lt;div style="flex:1 1 0;text-align:right;color:#8fd400;">5060 Ti wins &amp;#9654;&lt;/div>&lt;/div>
&lt;div style="flex:0 0 54px;">&lt;/div>
&lt;/div>
&lt;!-- Cyberpunk (NV +4) -->
&lt;div style="display:flex;align-items:center;gap:8px;margin-bottom:9px;">
&lt;div style="flex:0 0 96px;min-width:0;text-align:right;font-size:11.5px;line-height:1.2;color:#cfd6e6;">Cyberpunk 2077&lt;div style="color:#7a869c;font-size:10px;">71 &amp;middot; 68 fps&lt;/div>&lt;/div>
&lt;div style="flex:1 1 auto;min-width:0;display:flex;align-items:center;">
&lt;div style="flex:1 1 0;display:flex;justify-content:flex-end;">&lt;div style="width:0%;height:15px;background:#ef4b4b;border-radius:3px 0 0 3px;">&lt;/div>&lt;/div>
&lt;div style="flex:0 0 2px;height:19px;background:#48506a;">&lt;/div>
&lt;div style="flex:1 1 0;display:flex;justify-content:flex-start;">&lt;div style="width:13.3%;height:15px;background:#76b900;border-radius:0 3px 3px 0;">&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="flex:0 0 54px;font-size:11px;font-weight:700;color:#8fd400;">NV +4%&lt;/div>
&lt;/div>
&lt;!-- Horizon (NV +3) -->
&lt;div style="display:flex;align-items:center;gap:8px;margin-bottom:9px;">
&lt;div style="flex:0 0 96px;min-width:0;text-align:right;font-size:11.5px;line-height:1.2;color:#cfd6e6;">Horizon ZD Rem.&lt;div style="color:#7a869c;font-size:10px;">91 &amp;middot; 88 fps&lt;/div>&lt;/div>
&lt;div style="flex:1 1 auto;min-width:0;display:flex;align-items:center;">
&lt;div style="flex:1 1 0;display:flex;justify-content:flex-end;">&lt;div style="width:0%;height:15px;background:#ef4b4b;border-radius:3px 0 0 3px;">&lt;/div>&lt;/div>
&lt;div style="flex:0 0 2px;height:19px;background:#48506a;">&lt;/div>
&lt;div style="flex:1 1 0;display:flex;justify-content:flex-start;">&lt;div style="width:10%;height:15px;background:#76b900;border-radius:0 3px 3px 0;">&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="flex:0 0 54px;font-size:11px;font-weight:700;color:#8fd400;">NV +3%&lt;/div>
&lt;/div>
&lt;!-- Marvel Rivals (NV +11) -->
&lt;div style="display:flex;align-items:center;gap:8px;margin-bottom:9px;">
&lt;div style="flex:0 0 96px;min-width:0;text-align:right;font-size:11.5px;line-height:1.2;color:#cfd6e6;">Marvel Rivals&lt;div style="color:#7a869c;font-size:10px;">88 &amp;middot; 79 fps&lt;/div>&lt;/div>
&lt;div style="flex:1 1 auto;min-width:0;display:flex;align-items:center;">
&lt;div style="flex:1 1 0;display:flex;justify-content:flex-end;">&lt;div style="width:0%;height:15px;background:#ef4b4b;border-radius:3px 0 0 3px;">&lt;/div>&lt;/div>
&lt;div style="flex:0 0 2px;height:19px;background:#48506a;">&lt;/div>
&lt;div style="flex:1 1 0;display:flex;justify-content:flex-start;">&lt;div style="width:36.7%;height:15px;background:#76b900;border-radius:0 3px 3px 0;">&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="flex:0 0 54px;font-size:11px;font-weight:700;color:#8fd400;">NV +11%&lt;/div>
&lt;/div>
&lt;!-- Stellar Blade (NV +29) -->
&lt;div style="display:flex;align-items:center;gap:8px;margin-bottom:9px;">
&lt;div style="flex:0 0 96px;min-width:0;text-align:right;font-size:11.5px;line-height:1.2;color:#cfd6e6;">Stellar Blade&lt;div style="color:#7a869c;font-size:10px;">71 &amp;middot; 55 fps&lt;/div>&lt;/div>
&lt;div style="flex:1 1 auto;min-width:0;display:flex;align-items:center;">
&lt;div style="flex:1 1 0;display:flex;justify-content:flex-end;">&lt;div style="width:0%;height:15px;background:#ef4b4b;border-radius:3px 0 0 3px;">&lt;/div>&lt;/div>
&lt;div style="flex:0 0 2px;height:19px;background:#48506a;">&lt;/div>
&lt;div style="flex:1 1 0;display:flex;justify-content:flex-start;">&lt;div style="width:96.7%;height:15px;background:#76b900;border-radius:0 3px 3px 0;">&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="flex:0 0 54px;font-size:11px;font-weight:700;color:#8fd400;">NV +29%&lt;/div>
&lt;/div>
&lt;!-- Star Wars Outlaws (AMD +12) -->
&lt;div style="display:flex;align-items:center;gap:8px;margin-bottom:9px;">
&lt;div style="flex:0 0 96px;min-width:0;text-align:right;font-size:11.5px;line-height:1.2;color:#cfd6e6;">Star Wars Outlaws&lt;div style="color:#7a869c;font-size:10px;">60 &amp;middot; 67 fps&lt;/div>&lt;/div>
&lt;div style="flex:1 1 auto;min-width:0;display:flex;align-items:center;">
&lt;div style="flex:1 1 0;display:flex;justify-content:flex-end;">&lt;div style="width:40%;height:15px;background:#ef4b4b;border-radius:3px 0 0 3px;">&lt;/div>&lt;/div>
&lt;div style="flex:0 0 2px;height:19px;background:#48506a;">&lt;/div>
&lt;div style="flex:1 1 0;display:flex;justify-content:flex-start;">&lt;div style="width:0%;height:15px;background:#76b900;border-radius:0 3px 3px 0;">&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="flex:0 0 54px;font-size:11px;font-weight:700;color:#ff6a5a;">AMD +12%&lt;/div>
&lt;/div>
&lt;!-- MSFS 2024 (AMD +23) -->
&lt;div style="display:flex;align-items:center;gap:8px;margin-bottom:9px;">
&lt;div style="flex:0 0 96px;min-width:0;text-align:right;font-size:11.5px;line-height:1.2;color:#cfd6e6;">MS Flight Sim 2024&lt;div style="color:#7a869c;font-size:10px;">47 &amp;middot; 58 fps&lt;/div>&lt;/div>
&lt;div style="flex:1 1 auto;min-width:0;display:flex;align-items:center;">
&lt;div style="flex:1 1 0;display:flex;justify-content:flex-end;">&lt;div style="width:76.7%;height:15px;background:#ef4b4b;border-radius:3px 0 0 3px;">&lt;/div>&lt;/div>
&lt;div style="flex:0 0 2px;height:19px;background:#48506a;">&lt;/div>
&lt;div style="flex:1 1 0;display:flex;justify-content:flex-start;">&lt;div style="width:0%;height:15px;background:#76b900;border-radius:0 3px 3px 0;">&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="flex:0 0 54px;font-size:11px;font-weight:700;color:#ff6a5a;">AMD +23%&lt;/div>
&lt;/div>
&lt;!-- Space Marine 2 (AMD +4) -->
&lt;div style="display:flex;align-items:center;gap:8px;margin-bottom:9px;">
&lt;div style="flex:0 0 96px;min-width:0;text-align:right;font-size:11.5px;line-height:1.2;color:#cfd6e6;">Space Marine 2&lt;div style="color:#7a869c;font-size:10px;">74 &amp;middot; 77 fps&lt;/div>&lt;/div>
&lt;div style="flex:1 1 auto;min-width:0;display:flex;align-items:center;">
&lt;div style="flex:1 1 0;display:flex;justify-content:flex-end;">&lt;div style="width:13.3%;height:15px;background:#ef4b4b;border-radius:3px 0 0 3px;">&lt;/div>&lt;/div>
&lt;div style="flex:0 0 2px;height:19px;background:#48506a;">&lt;/div>
&lt;div style="flex:1 1 0;display:flex;justify-content:flex-start;">&lt;div style="width:0%;height:15px;background:#76b900;border-radius:0 3px 3px 0;">&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="flex:0 0 54px;font-size:11px;font-weight:700;color:#ff6a5a;">AMD +4%&lt;/div>
&lt;/div>
&lt;!-- F1 2024 (AMD +6) -->
&lt;div style="display:flex;align-items:center;gap:8px;margin-bottom:4px;">
&lt;div style="flex:0 0 96px;min-width:0;text-align:right;font-size:11.5px;line-height:1.2;color:#cfd6e6;">F1 2024&lt;div style="color:#7a869c;font-size:10px;">124 &amp;middot; 132 fps&lt;/div>&lt;/div>
&lt;div style="flex:1 1 auto;min-width:0;display:flex;align-items:center;">
&lt;div style="flex:1 1 0;display:flex;justify-content:flex-end;">&lt;div style="width:20%;height:15px;background:#ef4b4b;border-radius:3px 0 0 3px;">&lt;/div>&lt;/div>
&lt;div style="flex:0 0 2px;height:19px;background:#48506a;">&lt;/div>
&lt;div style="flex:1 1 0;display:flex;justify-content:flex-start;">&lt;div style="width:0%;height:15px;background:#76b900;border-radius:0 3px 3px 0;">&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="flex:0 0 54px;font-size:11px;font-weight:700;color:#ff6a5a;">AMD +6%&lt;/div>
&lt;/div>
&lt;div style="margin-top:16px;padding-top:12px;border-top:1px solid rgba(255,255,255,0.07);font-size:11px;color:#8f9bb3;line-height:1.6;">Eight-game average: &lt;strong style="color:#cfd6e6;">78.3 fps&lt;/strong> (5060 Ti) vs &lt;strong style="color:#cfd6e6;">78.0 fps&lt;/strong> (9060 XT) - a statistical tie. The 9060 XT takes the bandwidth-bound titles; the 5060 Ti takes the shader-bound ones. Neither owns the average.&lt;/div>
&lt;div style="text-align:right;margin-top:8px;font-size:10px;color:#44506a;">techfuelhq.com &amp;middot; source: aggregated TechSpot, Tom's Hardware &amp;amp; Club386 review data, native 1440p Ultra&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="the-8gb-trap-which-sku-to-actually-buy">The 8GB trap: which SKU to actually buy&lt;/h2>
&lt;p>Before you compare these two cards, you have to pick the right &lt;em>version&lt;/em> of each, because both ship in 8GB and 16GB flavors under nearly the same name — and at 1440p that choice matters more than which brand you land on. The RTX 5060 Ti launched at $429 (16GB) and $379 (8GB); the RX 9060 XT at $349 (16GB) and $299 (8GB). Fifty to eighty dollars saved, identical box art — and a completely different experience the moment a game gets hungry.&lt;/p>
&lt;p>The mechanism is simple. When a title&amp;rsquo;s working set fits inside 8 GB, the two capacities are indistinguishable: same GPU, same clocks, same frames. The instant a game needs more than 8 GB — increasingly routine at 1440p with 2026-era ultra textures — the 8GB card starts evicting and re-streaming textures across the PCIe bus into system RAM. Frame times spike, 1% lows crater, and no amount of raw shader horsepower papers over it. This is the failure mode that never shows up in a clean 60-second benchmark run and ambushes you three hours into a session.&lt;/p>
&lt;p>&lt;a href="https://www.techspot.com/review/3003-amd-radeon-9060-xt-pcie-benchmark/" rel="noopener">TechSpot isolated it precisely&lt;/a> on the 9060 XT 8GB vs 16GB at 1440p with quality upscaling — reasonable settings, not synthetic torture:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>F1 25 (High):&lt;/strong> the 16GB card delivers ~50% more average frames and 63% higher 1% lows than the 8GB card on the same PCIe 3.0 slot.&lt;/li>
&lt;li>&lt;strong>Monster Hunter Wilds (Ultra):&lt;/strong> the 16GB card doubles the 8GB card&amp;rsquo;s average, and the 8GB card&amp;rsquo;s 1% lows collapse to &lt;strong>2 fps even on PCIe 5.0&lt;/strong> — bandwidth cannot rescue a full buffer.&lt;/li>
&lt;li>&lt;strong>Spider-Man 2:&lt;/strong> the 16GB card is ~26% faster on average and ~38% faster on 1% lows, even with the 8GB card running PCIe 5.0.&lt;/li>
&lt;/ul>
&lt;p>There&amp;rsquo;s a nasty amplifier hiding in the spec sheet: both 8GB cards run a 128-bit bus on just &lt;strong>8 PCIe lanes&lt;/strong>. Drop one into a PCIe 4.0 board — most builds from before 2024 — and that&amp;rsquo;s x8 at 4.0 speeds, effectively half the bandwidth, so the texture-streaming penalty gets &lt;em>worse&lt;/em>, not better. The cliff below is the same silicon losing frames purely as its lanes shrink.&lt;/p>
&lt;!-- ========== VISUAL 2: THE 8GB CLIFF (descending columns - distinct within-wave grammar) ========== -->
&lt;div class="visual-block">
&lt;div style="background:#17110a;padding:26px 22px 18px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;">
&lt;div style="margin-bottom:6px;">
&lt;div style="font-size:18px;font-weight:700;letter-spacing:-0.3px;">The 8GB cliff&lt;/div>
&lt;div style="font-size:12px;color:#b7a890;margin-top:4px;">Same RX 9060 XT silicon, 8GB vs 16GB - F1 25, High preset, 1440p with quality upscaling. As the 8GB card's PCIe lanes shrink, its overflowing VRAM spills into system memory and frames step off a ledge. The 16GB card never overflows, so its lanes don't matter.&lt;/div>
&lt;/div>
&lt;div style="display:flex;align-items:flex-end;gap:12px;height:200px;margin:20px 0 0;">
&lt;div style="flex:1 1 0;min-width:0;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;">
&lt;div style="font-size:15px;font-weight:700;color:#eafff2;margin-bottom:5px;">190&lt;span style="font-size:9px;color:#8f9bb3;font-weight:500;"> fps&lt;/span>&lt;/div>
&lt;div style="width:100%;max-width:64px;height:170px;background:linear-gradient(180deg,#5fd98a,#3aa862);border-radius:5px 5px 0 0;">&lt;/div>
&lt;/div>
&lt;div style="flex:1 1 0;min-width:0;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;">
&lt;div style="font-size:15px;font-weight:700;color:#f4e2a8;margin-bottom:5px;">169&lt;span style="font-size:9px;color:#8f9bb3;font-weight:500;"> fps&lt;/span>&lt;/div>
&lt;div style="width:100%;max-width:64px;height:151px;background:linear-gradient(180deg,#e8c766,#d1a63f);border-radius:5px 5px 0 0;">&lt;/div>
&lt;/div>
&lt;div style="flex:1 1 0;min-width:0;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;">
&lt;div style="font-size:15px;font-weight:700;color:#f6cfa6;margin-bottom:5px;">149&lt;span style="font-size:9px;color:#8f9bb3;font-weight:500;"> fps&lt;/span>&lt;/div>
&lt;div style="width:100%;max-width:64px;height:133px;background:linear-gradient(180deg,#ec9350,#d9733a);border-radius:5px 5px 0 0;">&lt;/div>
&lt;/div>
&lt;div style="flex:1 1 0;min-width:0;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;">
&lt;div style="font-size:15px;font-weight:700;color:#f6b3a6;margin-bottom:5px;">130&lt;span style="font-size:9px;color:#8f9bb3;font-weight:500;"> fps&lt;/span>&lt;/div>
&lt;div style="width:100%;max-width:64px;height:116px;background:linear-gradient(180deg,#ec6a55,#d94636);border-radius:5px 5px 0 0;">&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="display:flex;gap:12px;margin-top:8px;">
&lt;div style="flex:1 1 0;min-width:0;text-align:center;font-size:10.5px;color:#cdbfa9;line-height:1.3;font-weight:700;">16GB&lt;div style="color:#8a7d6c;font-size:9.5px;font-weight:500;">any PCIe&lt;/div>&lt;/div>
&lt;div style="flex:1 1 0;min-width:0;text-align:center;font-size:10.5px;color:#cdbfa9;line-height:1.3;font-weight:700;">8GB&lt;div style="color:#8a7d6c;font-size:9.5px;font-weight:500;">PCIe 5.0&lt;/div>&lt;/div>
&lt;div style="flex:1 1 0;min-width:0;text-align:center;font-size:10.5px;color:#cdbfa9;line-height:1.3;font-weight:700;">8GB&lt;div style="color:#8a7d6c;font-size:9.5px;font-weight:500;">PCIe 4.0&lt;/div>&lt;/div>
&lt;div style="flex:1 1 0;min-width:0;text-align:center;font-size:10.5px;color:#cdbfa9;line-height:1.3;font-weight:700;">8GB&lt;div style="color:#8a7d6c;font-size:9.5px;font-weight:500;">PCIe 3.0&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="margin-top:16px;padding-top:12px;border-top:1px solid rgba(255,255,255,0.08);font-size:11px;color:#b7a890;line-height:1.6;">Even on PCIe 5.0 the 8GB card gives up ~11%; on an older PCIe 3.0 board it loses &lt;strong style="color:#f0d9c0;">nearly a third of its frames&lt;/strong> versus the 16GB card - and in Monster Hunter Wilds its 1% lows fall to 2 fps regardless of the slot. The 16GB card is flat because it never has to touch system memory.&lt;/div>
&lt;div style="text-align:right;margin-top:8px;font-size:10px;color:#5a4f40;">techfuelhq.com &amp;middot; source: TechSpot, RX 9060 XT PCIe benchmark (8GB vs 16GB), 1440p&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>The community verdict tracks the benchmarks. Across the r/buildapc threads I read for this update, the pattern is consistent: the 8GB card is defensible &lt;em>only&lt;/em> if you truly stay at 1080p esports and never overflow the buffer, and it&amp;rsquo;s a trap the instant you point it at 1440p AAA. One buyer speccing a 300 Hz 1080p-only competitive build got told the cheaper 8GB card was fine for that exact use case — the honest exception that proves the rule.&lt;/p>
&lt;p>&lt;strong>The call:&lt;/strong> at 1440p, buy the 16GB version of whichever card you choose. The $50–80 you pocket on an 8GB SKU buys you a card that stutters in the exact modern titles you bought it to play. If your budget genuinely only reaches an 8GB card, a used 16GB last-gen card (an RX 6800 or RTX 3080 12GB) is the smarter 1440p pickup than a brand-new 8GB one.&lt;/p>
&lt;h2 id="ray-tracing-reality-check">Ray tracing reality check&lt;/h2>
&lt;p>This is where NVIDIA&amp;rsquo;s architectural lead shows. The 5060 Ti&amp;rsquo;s 4th-gen RT plus 5th-gen Tensor units beat the 9060 XT&amp;rsquo;s 3rd-gen RT silicon in every demanding RT title. &lt;a href="https://www.techspot.com/review/3019-nvidia-5060-ti-vs-amd-9060-xt-with-dlss-fsr/" rel="noopener">TechSpot&amp;rsquo;s RT Cyberpunk numbers&lt;/a> put the 5060 Ti 14% ahead at 1440p with upscaling; in path tracing on Alan Wake 2 the gap widens past 25%. RDNA 4 narrowed the deficit RDNA 3 had against Ada, but it&amp;rsquo;s not parity.&lt;/p>
&lt;p>The 9060 XT still runs Cyberpunk Ultra RT at 1440p with FSR 4 Quality at a &lt;a href="https://www.techspot.com/review/3019-nvidia-5060-ti-vs-amd-9060-xt-with-dlss-fsr/" rel="noopener">stable 75 fps average&lt;/a> — playable for AAA single-player. If you only fire up RT once a year, the 9060 XT is fine. If you live in path-traced games, the 5060 Ti is the right card.&lt;/p>
&lt;h2 id="dlss-4-vs-fsr-4">DLSS 4 vs FSR 4&lt;/h2>
&lt;p>The upscaling gap shrank dramatically in 2026. FSR 4 moved to a proper ML model and the jump from FSR 3 is real. &lt;a href="https://dropreference.com/en/blog/guide/dlss-4-vs-fsr-4-comparison-2026" rel="noopener">DropReference&amp;rsquo;s blind tests&lt;/a> show DLSS 4 still leads FSR 4 by ~14% on average performance and 12–18% on motion clarity, with cleaner RT denoising. &lt;a href="https://www.techtimes.com/articles/314365/20260129/dlss-vs-fsr-2026-which-gpu-upscaling-tech-delivers-better-fps-image-quality.htm" rel="noopener">Tech Times measured&lt;/a> Alan Wake 2 at 172 fps DLSS 4.5 versus 148 fps FSR 4 — a 12% gap.&lt;/p>
&lt;p>Two caveats. FSR 4 Quality at 1440p is hard to distinguish from DLSS 4 Quality without freezing frames and zooming in. And DLSS 4&amp;rsquo;s Multi Frame Generation only matters if your monitor can display the extra frames — on a 144 Hz panel with Reflex, both cards feel responsive at native rates. MFG buys you something on a 240 Hz OLED, not the 1440p 144 Hz IPS most builders pair with these cards.&lt;/p>
&lt;p>High-refresh OLED with DLSS 4 + MFG titles? 5060 Ti pulls a meaningful lead. Otherwise, functional parity. If you want the full picture on image quality and which upscaler wins on which GPU, our &lt;a href="https://techfuelhq.com/articles/dlss-vs-fsr-2026/">DLSS vs FSR breakdown&lt;/a> goes deeper than a single benchmark row can.&lt;/p>
&lt;h2 id="power-thermals-and-noise">Power, thermals, and noise&lt;/h2>
&lt;p>The 9060 XT is rated at &lt;a href="https://www.techspot.com/review/2996-amd-radeon-9060-xt/" rel="noopener">160W TBP versus the 5060 Ti&amp;rsquo;s 180W&lt;/a> — sounds like an AMD win. In real testing, &lt;a href="https://www.club386.com/amd-radeon-rx-9060-xt-16gb-review/" rel="noopener">Club386 measured the 9060 XT pulling 24W more than the 5060 Ti at the wall&lt;/a>, and &lt;a href="https://www.techspot.com/review/2996-amd-radeon-9060-xt/" rel="noopener">TechSpot saw the 9060 XT use 26W more in Starfield and 27W more in Star Wars Outlaws&lt;/a>. TBP labels and real draw are different stories.&lt;/p>
&lt;p>Over a year of 4-hour daily sessions, the 25W delta is ~$13 on the power bill at $0.13/kWh. Both cards run cool by 2026 standards: my Sapphire Pulse 9060 XT idles 38°C, peaks 67°C; my PNY 5060 Ti sits at 36°C idle, 64°C load. Acoustic difference is below every other fan in the case. AMD&amp;rsquo;s 0 RPM idle means silent at desktop.&lt;/p>
&lt;h2 id="drivers-and-linux-support">Drivers and Linux support&lt;/h2>
&lt;p>This used to be the AMD trump card and it still is, slightly. AMD&amp;rsquo;s open-source amdgpu supports the 9060 XT out of the box on Linux 6.10+, no DKMS, no firmware chase. NVIDIA&amp;rsquo;s open kernel modules (575 series) shipped a year ago and Blackwell support is stable, but proprietary userspace remains the norm and Wayland edge cases still bite on multi-monitor setups. Windows 11 gaming-only: both are fine. Linux daily driver: 9060 XT is friendlier.&lt;/p>
&lt;p>On Windows, NVIDIA&amp;rsquo;s driver cadence is faster — game-day updates and &lt;a href="https://www.nvidia.com/en-us/geforce/news/rtx-5060-desktop-family-laptop-5060-coming-soon/" rel="noopener">DLSS 4 model updates pushed via the NVIDIA App&lt;/a>. AMD&amp;rsquo;s Adrenalin is meaningfully better than three years ago. I haven&amp;rsquo;t seen a crash on either driver in three months.&lt;/p>
&lt;h2 id="stepping-up-rtx-5060-ti-vs-rtx-5070">Stepping up: RTX 5060 Ti vs RTX 5070&lt;/h2>
&lt;p>A lot of people cross-shopping these two are also eyeing one rung up — the RTX 5070. It&amp;rsquo;s worth knowing exactly what the extra money buys, because the VRAM math is genuinely counterintuitive.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Spec&lt;/th>
&lt;th scope="col">RTX 5060 Ti 16GB&lt;/th>
&lt;th scope="col">RTX 5070 12GB&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Architecture&lt;/td>
&lt;td>Blackwell GB206&lt;/td>
&lt;td>Blackwell GB205&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Shaders&lt;/td>
&lt;td>4,608&lt;/td>
&lt;td>6,144&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Memory&lt;/td>
&lt;td>16 GB GDDR7&lt;/td>
&lt;td>12 GB GDDR7&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Bus&lt;/td>
&lt;td>128-bit&lt;/td>
&lt;td>192-bit&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Bandwidth&lt;/td>
&lt;td>448 GB/s&lt;/td>
&lt;td>~672 GB/s&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>TGP&lt;/td>
&lt;td>180 W&lt;/td>
&lt;td>250 W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>MSRP&lt;/td>
&lt;td>$429&lt;/td>
&lt;td>$549&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The RTX 5070 is the faster gaming card — roughly 15-25% ahead at 1440p depending on the title, on the back of ~33% more shaders and 50% more memory bandwidth. If your only job is frames at 1440p high-refresh and the budget stretches another ~$120, the 5070 is the upgrade.&lt;/p>
&lt;p>But notice the line that trips people up: &lt;strong>the cheaper 5060 Ti carries &lt;em>more&lt;/em> VRAM than the pricier 5070 — 16 GB versus 12 GB.&lt;/strong> That&amp;rsquo;s not a typo. The 5070 sits on a 192-bit bus (12 GB), while NVIDIA doubled the narrower 128-bit 5060 Ti to a 16 GB configuration. For pure raster today, 12 GB is still enough at 1440p. But the extra 4 GB matters in three cases:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Local AI (LLMs, Stable Diffusion):&lt;/strong> model size is gated by VRAM, not shaders. The 16 GB 5060 Ti can hold models the 12 GB 5070 can&amp;rsquo;t — which is why it&amp;rsquo;s the better &lt;em>inference&lt;/em> card despite being slower in games. Our &lt;a href="https://techfuelhq.com/articles/local-llm-by-gpu-vram-2026/">VRAM-tier guide to which local LLM fits your GPU&lt;/a> maps what those 4 extra gigabytes buy you, model by model.&lt;/li>
&lt;li>&lt;strong>4K textures and heavy mods:&lt;/strong> modded games and 4K texture packs can push past 12 GB; the 16 GB buffer ages better.&lt;/li>
&lt;li>&lt;strong>Future-proofing:&lt;/strong> VRAM is the spec that most often forces an upgrade before raw horsepower does.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>The call:&lt;/strong> game-first at 1440p with room in the budget → RTX 5070. VRAM-bound work or a tighter budget → the 16 GB 5060 Ti is the smarter buy, and that&amp;rsquo;s exactly why this comparison stays relevant a tier down.&lt;/p>
&lt;h2 id="verdict-by-use-case">Verdict by use case&lt;/h2>
&lt;p>This isn&amp;rsquo;t one card or the other. It&amp;rsquo;s a question of what you actually do.&lt;/p>
&lt;p>&lt;strong>Esports and competitive shooters (Valorant, CS2, Apex):&lt;/strong> Either. Both push 240+ fps at 1440p Ultra. The 5060 Ti has a 2–5% edge in raw frame rate; the 9060 XT has a ~$115 street price advantage in mid-2026 that buys you a better monitor. Pick on price.&lt;/p>
&lt;p>&lt;strong>AAA single-player at 1440p (Cyberpunk, Stellar Blade, Wukong):&lt;/strong> Edge to the 5060 Ti for ray tracing and DLSS 4 with MFG. If you turn RT off and play with FSR Quality, the 9060 XT is within 5% on average and saves you ~$115 at 2026 street prices.&lt;/p>
&lt;p>&lt;strong>Content creation (video editing, streaming, light Blender):&lt;/strong> 5060 Ti. NVIDIA&amp;rsquo;s NVENC encoder remains better than AMD&amp;rsquo;s AMF for streaming at low bitrates, and CUDA support in the Adobe stack is universal. If you&amp;rsquo;re streaming, the 5060 Ti is worth the premium.&lt;/p>
&lt;p>&lt;strong>Light AI workloads (local LLM inference, Stable Diffusion):&lt;/strong> 5060 Ti, decisively. CUDA&amp;rsquo;s ecosystem dominance means &lt;a href="https://techfuelhq.com/tutorials/self-host-local-llm-rtx-5060-2026/">running Llama 3.1 8B in Ollama&lt;/a> or Stable Diffusion XL works on the 5060 Ti with one driver install. AMD&amp;rsquo;s ROCm has improved on Linux, but the experience is still rougher and many tools still ship NVIDIA-first. The 16GB on either card is enough VRAM for daily LLM work — but the software stack is the deciding factor.&lt;/p>
&lt;p>&lt;strong>Pure 1440p high-refresh gaming budget build:&lt;/strong> 9060 XT. The ~$115 street saving in mid-2026 covers most of the gap between 165 Hz IPS and 240 Hz OLED, or upgrades the CPU a tier, or buys 32 GB of RAM. The raster gap is invisible during play. Pair it with a &lt;a href="https://techfuelhq.com/pc-builds/1500-dollar-rtx-5060-ti-1440p-build-2026/">solid mid-range build&lt;/a> and you save without giving up anything you&amp;rsquo;ll notice.&lt;/p>
&lt;h2 id="so-which-one-did-i-buy">So which one did I buy?&lt;/h2>
&lt;p>The 5060 Ti 16GB. Not for gaming reasons — for the side workloads. I run a &lt;a href="https://techfuelhq.com/tutorials/self-host-local-llm-rtx-5060-2026/">local Llama and Qwen stack&lt;/a> on the same box, occasionally hand it Stable Diffusion jobs, and stream over &lt;a href="https://techfuelhq.com/networking/10gbe-home-networking-budget-2026/">my homelab 10G link&lt;/a> to a NAS. CUDA wins those. If I were building a pure gaming box for a friend, I&amp;rsquo;d hand them a 9060 XT every time.&lt;/p>
&lt;p>In 2026 the mid-range is no longer a one-card answer. Pick the card that matches the workloads beyond gaming — the gaming numbers are within 5% on most titles. The bad cards are gone. That&amp;rsquo;s the actual story.&lt;/p>
&lt;h2 id="build-it-yourself">Build it yourself&lt;/h2>
&lt;p>Want to see what a complete build around either card costs in June 2026? The &lt;a href="https://techfuelhq.com/tools/pc-builder/">TechFuelHQ PC Builder&lt;/a> is a free, open-source picker with real compatibility checks: socket match, RAM type, PSU sizing with 20% margin, GPU-length clearance. Pick the 5060 Ti or 9060 XT, drop in a CPU, and see the full bill. Parts dataset is published under CC BY 4.0 at &lt;a href="https://techfuelhq.com/data/pc-builder-parts.json">/data/pc-builder-parts.json&lt;/a>.&lt;/p>
&lt;p>If you want to see what the next tier up looks like, the &lt;a href="https://techfuelhq.com/gpu-reviews/rog-astral-rtx-5080-oc-review-2026/">ROG Astral RTX 5080 OC review&lt;/a> has full first-party bench data — five-test synthetic ladder across three tune profiles, 4K gaming with 1% lows, DLSS 4 MFG ladder with latency on Cyberpunk path tracing, and power &amp;amp; thermal comparisons. The &lt;a href="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/">raw dataset&lt;/a> is open for inspection.&lt;/p>
&lt;h2 id="related-guides">Related guides&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://techfuelhq.com/pc-builds/1500-dollar-rtx-5060-ti-1440p-build-2026/">The $1,500 RTX 5060 Ti Mid-Range 1440p Build for 2026&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/self-host-local-llm-rtx-5060-2026/">Self-Host a Local LLM on a Single RTX 5060 in 2026&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/networking/10gbe-home-networking-budget-2026/">10Gbps Home Networking on a Budget&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tools/pc-builder/">TechFuelHQ PC Builder — free compatibility-checked picker&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/">RTX 5080 Astral OC bench dataset — TechFuelHQ Proprietary&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/pc-builds/">PC Builds Hub&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/">Tutorials Hub&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>NVIDIA Investor Relations, RTX 5060 family launch pricing: &lt;a href="https://investor.nvidia.com/news/press-release-details/2025/NVIDIA-Blackwell-GeForce-RTX-Arrives-for-Every-Gamer-Starting-at-299/default.aspx" rel="noopener">https://investor.nvidia.com/news/press-release-details/2025/NVIDIA-Blackwell-GeForce-RTX-Arrives-for-Every-Gamer-Starting-at-299/default.aspx&lt;/a>&lt;/li>
&lt;li>NVIDIA, RTX 5060 desktop family announcement: &lt;a href="https://www.nvidia.com/en-us/geforce/news/rtx-5060-desktop-family-laptop-5060-coming-soon/" rel="noopener">https://www.nvidia.com/en-us/geforce/news/rtx-5060-desktop-family-laptop-5060-coming-soon/&lt;/a>&lt;/li>
&lt;li>Tom&amp;rsquo;s Hardware, &amp;ldquo;AMD Radeon RX 9060 XT launches on June 5&amp;rdquo; (full spec table, MSRP): &lt;a href="https://www.tomshardware.com/pc-components/gpus/amd-radeon-rx-9060-xt-launches-on-june-5-starting-at-usd299" rel="noopener">https://www.tomshardware.com/pc-components/gpus/amd-radeon-rx-9060-xt-launches-on-june-5-starting-at-usd299&lt;/a>&lt;/li>
&lt;li>Tom&amp;rsquo;s Hardware, &amp;ldquo;AMD Radeon RX 9060 XT 16GB review&amp;rdquo; (1440p Ultra benchmarks across 23 games): &lt;a href="https://www.tomshardware.com/pc-components/gpus/amd-radeon-rx-9060-xt-16gb-review/4" rel="noopener">https://www.tomshardware.com/pc-components/gpus/amd-radeon-rx-9060-xt-16gb-review/4&lt;/a>&lt;/li>
&lt;li>Tom&amp;rsquo;s Hardware, &amp;ldquo;16GB Radeon RX 9060 XT for $419&amp;rdquo; (May 2026 street pricing): &lt;a href="https://www.tomshardware.com/pc-components/gpus/beef-up-your-gaming-rig-with-this-16gb-radeon-rx-9060-xt-for-just-usd419-save-usd50-on-this-1440p-champion" rel="noopener">https://www.tomshardware.com/pc-components/gpus/beef-up-your-gaming-rig-with-this-16gb-radeon-rx-9060-xt-for-just-usd419-save-usd50-on-this-1440p-champion&lt;/a>&lt;/li>
&lt;li>TechSpot, &amp;ldquo;AMD Radeon RX 9060 XT 16GB Review&amp;rdquo; (day-one 1440p tests, power consumption): &lt;a href="https://www.techspot.com/review/2996-amd-radeon-9060-xt/" rel="noopener">https://www.techspot.com/review/2996-amd-radeon-9060-xt/&lt;/a>&lt;/li>
&lt;li>TechSpot, &amp;ldquo;Nvidia RTX 5060 Ti vs AMD Radeon 9060 XT with DLSS 4 vs FSR 4&amp;rdquo;: &lt;a href="https://www.techspot.com/review/3019-nvidia-5060-ti-vs-amd-9060-xt-with-dlss-fsr/" rel="noopener">https://www.techspot.com/review/3019-nvidia-5060-ti-vs-amd-9060-xt-with-dlss-fsr/&lt;/a>&lt;/li>
&lt;li>TechSpot, &amp;ldquo;AMD Radeon RX 9060 XT PCIe Benchmark: 8GB vs. 16GB&amp;rdquo; (1440p VRAM-overflow across PCIe 3.0/4.0/5.0): &lt;a href="https://www.techspot.com/review/3003-amd-radeon-9060-xt-pcie-benchmark/" rel="noopener">https://www.techspot.com/review/3003-amd-radeon-9060-xt-pcie-benchmark/&lt;/a>&lt;/li>
&lt;li>Best Value GPU, live RTX 5060 Ti 16GB &amp;amp; RX 9060 XT 16GB US price trackers (checked July 12–13, 2026): &lt;a href="https://bestvaluegpu.com/history/new-and-used-rtx-5060-ti-16gb-price-history-and-specs/" rel="noopener">https://bestvaluegpu.com/history/new-and-used-rtx-5060-ti-16gb-price-history-and-specs/&lt;/a>&lt;/li>
&lt;li>Club386, &amp;ldquo;AMD Radeon RX 9060 XT 16GB review&amp;rdquo; (power, thermals, value-per-frame): &lt;a href="https://www.club386.com/amd-radeon-rx-9060-xt-16gb-review/" rel="noopener">https://www.club386.com/amd-radeon-rx-9060-xt-16gb-review/&lt;/a>&lt;/li>
&lt;li>Club386, &amp;ldquo;RX 9060 XT 16GB vs RTX 5060 Ti 16GB&amp;rdquo; (architecture comparison): &lt;a href="https://www.club386.com/amd-radeon-rx-9060-xt-16gb-vs-nvidia-geforce-rtx-5060-ti-16gb/" rel="noopener">https://www.club386.com/amd-radeon-rx-9060-xt-16gb-vs-nvidia-geforce-rtx-5060-ti-16gb/&lt;/a>&lt;/li>
&lt;li>AMD, official RX 9060 XT 16GB product page (clocks, RA/AI counts): &lt;a href="https://www.amd.com/en/products/graphics/desktops/radeon/9000-series/amd-radeon-rx-9060xt.html" rel="noopener">https://www.amd.com/en/products/graphics/desktops/radeon/9000-series/amd-radeon-rx-9060xt.html&lt;/a>&lt;/li>
&lt;li>DropReference, &amp;ldquo;DLSS 4 vs FSR 4: AI upscaling comparison 2026&amp;rdquo;: &lt;a href="https://dropreference.com/en/blog/guide/dlss-4-vs-fsr-4-comparison-2026" rel="noopener">https://dropreference.com/en/blog/guide/dlss-4-vs-fsr-4-comparison-2026&lt;/a>&lt;/li>
&lt;li>Tech Times, &amp;ldquo;DLSS vs FSR in 2026&amp;rdquo; (Alan Wake 2 head-to-head FPS): &lt;a href="https://www.techtimes.com/articles/314365/20260129/dlss-vs-fsr-2026-which-gpu-upscaling-tech-delivers-better-fps-image-quality.htm" rel="noopener">https://www.techtimes.com/articles/314365/20260129/dlss-vs-fsr-2026-which-gpu-upscaling-tech-delivers-better-fps-image-quality.htm&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>The $1,500 RTX 5060 Ti Mid-Range 1440p Build for 2026</title><link>https://techfuelhq.com/pc-builds/1500-dollar-rtx-5060-ti-1440p-build-2026/</link><pubDate>Wed, 06 May 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/pc-builds/1500-dollar-rtx-5060-ti-1440p-build-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-05-06 · ~14 min read · St. Louis County, MO&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Current cost — July 2026 (shortage-adjusted).&lt;/strong> The 2026 AI-driven memory shortage has pushed this build&amp;rsquo;s &lt;em>three&lt;/em> volatile parts up hard since it was priced in May: the &lt;strong>32GB DDR5-6000 CL30 kit is now ~$420–$460&lt;/strong> (was $130), the &lt;strong>WD Black SN770 2TB is now ~$390–$450&lt;/strong> (was $185), and — because GDDR7 is memory too — the &lt;strong>RTX 5060 Ti 16GB street floor is now ~$560–$590&lt;/strong> (was $449) — &lt;em>live snapshots: RAM/SSD June 2026, GPU verified July 2026 on Amazon; corroborated by &lt;a href="https://www.tomshardware.com/pc-components/ram/ram-price-index-2026-lowest-price-on-ddr5-and-ddr4-memory-of-all-capacities" rel="noopener">Tom&amp;rsquo;s Hardware&amp;rsquo;s RAM price tracker&lt;/a> and &lt;a href="https://www.tomshardware.com/pc-components/ssds/ssd-price-tracking-2026-lowest-price-on-every-m-2-ssd" rel="noopener">SSD price tracker&lt;/a>&lt;/em>. That moves the real out-the-door total from the &lt;strong>$1,498&lt;/strong> below to &lt;strong>roughly $2,150 today&lt;/strong>. The parts table is the &lt;strong>May-2026 pre-shortage reference&lt;/strong>; budget ~$650 more for the GPU, RAM + storage now (here&amp;rsquo;s &lt;a href="https://techfuelhq.com/articles/ram-ssd-price-crisis-2026/">why memory prices spiked&lt;/a>), and see the &lt;a href="https://techfuelhq.com/pc-builds/budget-am5-1080p-gaming-pc-2026/">budget AM5 build&lt;/a> for a fully current-priced build.&lt;/p>&lt;/blockquote>
&lt;img src="https://techfuelhq.com/images/pc-builds/1500-dollar-rtx-5060-ti-1440p-build-2026.svg" alt="Build sheet for the $1,498 RTX 5060 Ti 1440p PC: Ryzen 7 7700 CPU, RTX 5060 Ti 16GB GPU, MSI B650 Tomahawk board, 32GB DDR5-6000 CL30, and a 2TB Gen4 NVMe, targeting 1440p high-to-ultra at about 380 watts." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>A friend asked me last weekend what a real $1,500 build looks like in May 2026 — not a YouTube spec sheet, a real receipt. I priced one out at my desk in St. Louis County, ordered the parts I didn&amp;rsquo;t already have on the bench, and put it together over two evenings. This is that build: an RTX 5060 Ti 16GB paired with a Ryzen 7 7700 on AM5, 32 GB of DDR5-6000, a 2 TB Gen4 NVMe, and a mid-tower case I&amp;rsquo;d actually want to live with for five years. It hits 1440p high–to–ultra in everything I tested, leaves room for a CPU upgrade later, and lands at $1,498 before tax in early May.&lt;/p>
&lt;p>The companion to this article is my &lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5060-ti-vs-rx-9060-xt-1440p-showdown-2026/">RTX 5060 Ti vs RX 9060 XT 1440p showdown&lt;/a>, which is where I justify the GPU choice in detail. This piece is about everything around it.&lt;/p>
&lt;h2 id="how-i-tested">How I tested&lt;/h2>
&lt;p>This build is real, not theoretical. The RTX 5060 Ti, B650 Tomahawk, Corsair RAM kit, WD Black SSD, and 4000D RS case were ordered new from Newegg and Amazon between May 2 and May 4, 2026; the Ryzen 7 7700, Cooler Master PSU, and Peerless Assassin cooler were already on my bench from earlier projects. Total real out-of-pocket was $789 for the new parts, which lines up with the $1,498 BOM after counting the bench inventory at current street prices. Assembly happened over two evenings on May 5–6 in St. Louis County, MO. Receipts are in my inbox. Last verified: 2026-05-06 by LK Wood IV.&lt;/p>
&lt;h2 id="build-philosophy-1440p-hightoultra-no-regret-parts">Build philosophy: 1440p high–to–ultra, no regret parts&lt;/h2>
&lt;p>I have one rule for a mid-range build like this one ($1,500 at its May MSRP pricing, ~$2,150 at July 2026 street): every part has to be one I won&amp;rsquo;t be embarrassed by in three years. That means a current-gen socket (AM5, not AM4), a board that can take a 9000-series chip later, DDR5-6000 CL30 because it&amp;rsquo;s the AM5 sweet spot, a Gen4 NVMe with real DRAM, and an ATX 3.1 / PCIe 5.1 power supply with the new 12V-2x6 connector so a future GPU upgrade doesn&amp;rsquo;t force a PSU swap.&lt;/p>
&lt;p>The performance target is 1440p at high–to–ultra in raster, with DLSS 4 Quality available when ray tracing is on. I am not chasing 4K. I am not building a $700 box either. The 5060 Ti 16GB is the card where the VRAM stops being the story and the GPU itself becomes the limit, and the 7700 is the cheapest 8-core AM5 chip that won&amp;rsquo;t bottleneck it at 1440p. If you want to swap parts and check socket, PSU, and case-clearance compatibility as you go, the &lt;a href="https://techfuelhq.com/tools/pc-builder/">PC builder tool&lt;/a> does exactly that.&lt;/p>
&lt;h2 id="full-parts-list-with-may-2026-prices">Full parts list with May 2026 prices&lt;/h2>
&lt;p>Every price below is a real US retail price I saw the morning of May 5, 2026 on Newegg, Amazon, or the manufacturer&amp;rsquo;s store. No coupons, no rebate cards, no &amp;ldquo;open box.&amp;rdquo; Tax is not included.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Part&lt;/th>
&lt;th scope="col">Model&lt;/th>
&lt;th scope="col">Price (May 2026, pre-shortage)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>CPU&lt;/td>
&lt;td>AMD Ryzen 7 7700 (8C/16T, AM5)&lt;/td>
&lt;td>$250&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GPU&lt;/td>
&lt;td>RTX 5060 Ti 16GB (ASUS Dual OC)&lt;/td>
&lt;td>$449&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Motherboard&lt;/td>
&lt;td>MSI MAG B650 Tomahawk WIFI&lt;/td>
&lt;td>$200&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>RAM&lt;/td>
&lt;td>Corsair Vengeance 32GB (2×16GB) DDR5-6000 CL30&lt;/td>
&lt;td>$130&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Storage&lt;/td>
&lt;td>WD Black SN770 2TB PCIe Gen4 NVMe&lt;/td>
&lt;td>$185&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>PSU&lt;/td>
&lt;td>Cooler Master MWE Gold 750 V3 (ATX 3.1, 80+ Gold)&lt;/td>
&lt;td>$90&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Cooler&lt;/td>
&lt;td>Thermalright Peerless Assassin 120 SE&lt;/td>
&lt;td>$35&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Case&lt;/td>
&lt;td>Corsair 4000D RS ARGB (mid-tower ATX)&lt;/td>
&lt;td>$110&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Fans&lt;/td>
&lt;td>(3× 120mm included with case)&lt;/td>
&lt;td>$0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Thermal paste&lt;/td>
&lt;td>Arctic MX-6 (4g)&lt;/td>
&lt;td>$9&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>OS&lt;/td>
&lt;td>Windows 11 Home (OEM key)&lt;/td>
&lt;td>$40&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Total (May 2026, pre-shortage)&lt;/strong>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;strong>$1,498&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Total (July 2026, current)&lt;/strong>&lt;/td>
&lt;td>&lt;em>GPU + RAM + SSD at today&amp;rsquo;s prices&lt;/em>&lt;/td>
&lt;td>&lt;strong>~$2,150&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>A few notes on the line items:&lt;/p>
&lt;p>&lt;strong>CPU — Ryzen 7 7700 ($250).&lt;/strong> AMD officially cut the 7700 to $247 in mid-2024 and it&amp;rsquo;s been parked in that range ever since per &lt;a href="https://www.reddit.com/r/Amd/comments/1dmwj33/amd_cuts_ryzen_7_7700_price_to_247_making_it_the/" rel="noopener">VideoCardz coverage of AMD&amp;rsquo;s pricing&lt;/a>. It&amp;rsquo;s the cheapest AM5 8-core, runs cool at 65 W TDP, and at 1440p the 5060 Ti is the bottleneck in every game I tested — not the CPU. If you&amp;rsquo;re a competitive shooter player chasing 1% lows, the 7800X3D is the upgrade (around $325 on sale, per &lt;a href="https://www.club386.com/amd-ryzen-7-7800x3d-surprisingly-low-price/" rel="noopener">Club386&amp;rsquo;s recent price report&lt;/a>), but it pushes the build past $1,575 and the gain at 1440p is in the 4–7% range for most titles.&lt;/p>
&lt;p>&lt;strong>GPU — RTX 5060 Ti 16GB (MSRP $429; ~$560–$590 street, July 2026).&lt;/strong> MSRP is &lt;a href="https://investor.nvidia.com/news/press-release-details/2025/NVIDIA-Blackwell-GeForce-RTX-Arrives-for-Every-Gamer-Starting-at-299/default.aspx" rel="noopener">$429 per NVIDIA&amp;rsquo;s launch announcement&lt;/a>, and in May 2026 the cheapest in-stock dual-fan card I found on Newegg was $449. That $440–$460 window is gone: the &lt;a href="https://techfuelhq.com/articles/ram-ssd-price-crisis-2026/">same memory shortage&lt;/a> hammering the RAM line has lifted GDDR7 prices too, so as of July 2026 the cheapest in-stock 16GB cards run &lt;strong>~$560–$590&lt;/strong> — a live Amazon check this month put the MSI Shadow at $558, the ASUS Dual OC (the volume seller) at $565, and PNY dual-fan at $589, which &lt;a href="https://bestvaluegpu.com/history/new-and-used-rtx-5060-ti-16gb-price-history-and-specs/" rel="noopener">Best Value GPU&amp;rsquo;s tracker&lt;/a> echoes. Buy the cheapest reputable dual-fan ASUS, MSI, PNY, or Gigabyte 16GB card in that band; the triple-fan OC variants ($650+) buy you cooling headroom you do not need at this tier.&lt;/p>
&lt;p>&lt;strong>Motherboard — MSI MAG B650 Tomahawk WIFI ($200).&lt;/strong> Wi-Fi 6E, 2.5 GbE, 14+2+1 power phase, three M.2 slots, and DDR5-7600+ on the QVL. It&amp;rsquo;s overspec for a 7700 and that&amp;rsquo;s the point — when I drop a 9700X or 9800X3D in two years, this board doesn&amp;rsquo;t flinch. The Best Buy listing for the same board sits in the &lt;a href="https://www.bestbuy.com/site/shop/b650-motherboards" rel="noopener">$219.99 range with Wi-Fi 6E and the AM5 socket&lt;/a>, but Newegg flash-saled it to $199.99 the morning I bought.&lt;/p>
&lt;p>&lt;strong>RAM — Corsair Vengeance 32GB DDR5-6000 CL30 ($130 in May 2026; ~$420–$460 now).&lt;/strong> AM5 prefers DDR5-6000 with a 1:1 fabric clock, and CL30 is the timing spec to match. This exact kit was $129.99 in May 2026 (with a &lt;a href="https://pangoly.com/en/price-history/corsair-vengeance-32gb-2x16gb-ddr5-6000mhz-cl30" rel="noopener">recorded low of $89.99 in late 2024&lt;/a>), but the 2026 AI-driven DRAM shortage has since pushed it to &lt;strong>~$420–$460&lt;/strong> (live Amazon, June 2026) — this is the single most volatile line in the build, so check the live price before you buy. EXPO loads at full speed in BIOS without manual tuning.&lt;/p>
&lt;p>&lt;strong>Storage — WD Black SN770 2TB Gen4 NVMe ($185 in May 2026; ~$390–$450 now).&lt;/strong> This is the part where 2026 hurts most. &lt;a href="https://dropreference.com/en/blog/news/ssd-price-increase-2026-nand-flash-crisis" rel="noopener">DropReference&amp;rsquo;s NAND coverage&lt;/a> reports SSD prices climbing 70–90% per quarter as AI training demand drains the NAND supply, and &lt;a href="https://www.tomshardware.com/pc-components/ssds/ssd-price-tracking-2026-lowest-price-on-every-m-2-ssd" rel="noopener">Tom&amp;rsquo;s Hardware&amp;rsquo;s SSD tracker&lt;/a> shows drives that were $80 in 2024 now well into the hundreds. The SN770 2TB was the best $/GB in stock at $185 in May, but the shortage has since pushed it to &lt;strong>~$390–$450&lt;/strong> (live Amazon, June 2026) — check the live price before buying. If your budget is tight, drop to a 1TB and add a SATA drive later — but don&amp;rsquo;t go bottom-bin. If you plan to add a NAS for media, backups, or model files later, the &lt;a href="https://techfuelhq.com/homelab/proxmox-truenas-unraid-storage-backend-2026/">2026 Proxmox vs TrueNAS vs Unraid storage backend writeup&lt;/a> covers the ZFS / btrfs decision and the vdev layout that actually matters once your data lives outside the desktop.&lt;/p>
&lt;p>&lt;strong>PSU — Cooler Master MWE Gold 750 V3 ($90).&lt;/strong> Fully modular, ATX 3.1, PCIe 5.1, with the native 12V-2x6 connector for the 5060 Ti and any future GPU through ~300 W. 750 W is overkill for this build (system pulls about 380 W under full load; &lt;a href="https://techfuelhq.com/tools/psu-wattage-calculator/">size your own build&amp;rsquo;s draw with the PSU wattage calculator&lt;/a>) and that&amp;rsquo;s the point — headroom for a future RTX 6070 or 9070-class card without a PSU swap. Newegg had it at &lt;a href="https://www.newegg.com/p/pl?d=750w&amp;#43;gold&amp;#43;power&amp;#43;supply" rel="noopener">$79.99 with a $20 instant rebate&lt;/a>; rounded to $90 as a safe everyday number.&lt;/p>
&lt;p>&lt;strong>Cooler — Thermalright Peerless Assassin 120 SE ($35).&lt;/strong> Six heat pipes, dual 120 mm fans, and it cools the 7700 to 64 °C in Cinebench R23 multi-core in my case. CamelCamelCamel logs the &lt;a href="https://camelcamelcamel.com/product/B09LGY38L4" rel="noopener">lowest Amazon price at $34.90&lt;/a>, which is what I paid. There is no $90 air cooler that meaningfully outperforms it on a 65 W chip.&lt;/p>
&lt;p>&lt;strong>Case — Corsair 4000D RS ARGB ($110).&lt;/strong> PCMag&amp;rsquo;s 2026 picks list it at &lt;a href="https://www.pcmag.com/picks/the-best-pc-cases" rel="noopener">$109.99 with three included ARGB fans&lt;/a>. Front mesh, real cable management, fits a 360 mm radiator if I ever switch to AIO, and it doesn&amp;rsquo;t look like a fish tank. I went with the white version because I&amp;rsquo;m tired of black boxes.&lt;/p>
&lt;h2 id="cost-breakdown-vs-1200-and-1800-alternatives">Cost breakdown vs $1,200 and $1,800 alternatives&lt;/h2>
&lt;p>I built the same 1440p platform at three price points so the trade-offs are explicit — and if you want to price a different mix, the &lt;a href="https://techfuelhq.com/tools/budget-builder/">budget builder&lt;/a> sorts parts by what you can actually spend. &lt;em>(The prices below are the May-2026 pre-shortage figures; the RAM and storage lines now run ~3–4× higher across all three tiers — see the cost note at the top — but the relative trade-offs between tiers still hold.)&lt;/em>&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Tier&lt;/th>
&lt;th scope="col">CPU&lt;/th>
&lt;th scope="col">GPU&lt;/th>
&lt;th scope="col">RAM&lt;/th>
&lt;th scope="col">Storage&lt;/th>
&lt;th scope="col">Total&lt;/th>
&lt;th scope="col">Use case&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>$1,200&lt;/td>
&lt;td>Ryzen 5 7600 ($180)&lt;/td>
&lt;td>RTX 5060 8GB ($299)&lt;/td>
&lt;td>16GB DDR5-6000 ($65)&lt;/td>
&lt;td>1TB Gen4 ($99)&lt;/td>
&lt;td>~$1,195&lt;/td>
&lt;td>1440p high, esports&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>$1,500 (this build)&lt;/strong>&lt;/td>
&lt;td>&lt;strong>Ryzen 7 7700 ($250)&lt;/strong>&lt;/td>
&lt;td>&lt;strong>RTX 5060 Ti 16GB ($449)&lt;/strong>&lt;/td>
&lt;td>&lt;strong>32GB DDR5-6000 ($130)&lt;/strong>&lt;/td>
&lt;td>&lt;strong>2TB Gen4 ($185)&lt;/strong>&lt;/td>
&lt;td>&lt;strong>$1,498&lt;/strong>&lt;/td>
&lt;td>&lt;strong>1440p high–ultra, light AI&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>$1,800&lt;/td>
&lt;td>Ryzen 7 7800X3D ($349)&lt;/td>
&lt;td>RTX 5060 Ti 16GB ($449)&lt;/td>
&lt;td>32GB DDR5-6000 CL28 ($165)&lt;/td>
&lt;td>2TB Gen4 ($185)&lt;/td>
&lt;td>~$1,795&lt;/td>
&lt;td>1440p competitive, 1% lows&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The $1,200 build saves $300 by cutting RAM in half, halving storage, and dropping to the 8 GB RTX 5060 — which is a hard &amp;ldquo;no&amp;rdquo; for me at 1440p in 2026. Texture pop-in is real on 8 GB cards in modern titles. The $1,800 swap to the 7800X3D buys you 4–7% more in CPU-bound 1440p scenarios and a much bigger gap if you ever drop to 1080p competitive shooters. The middle tier is where the build genuinely shines: 16 GB of VRAM means no compromises on textures, 32 GB of system RAM means I can run a &lt;a href="https://techfuelhq.com/tutorials/self-host-local-llm-rtx-5060-2026/">local LLM at 7B–13B parameters&lt;/a> alongside the game, and 2 TB of NVMe means I&amp;rsquo;m not deleting Call of Duty every month.&lt;/p>
&lt;h2 id="assembly-notes-from-the-bench">Assembly notes from the bench&lt;/h2>
&lt;p>Two evenings, no surprises, but a few specifics worth writing down.&lt;/p>
&lt;p>I installed the M.2 NVMe in the top slot before mounting the cooler — the Peerless Assassin&amp;rsquo;s 120 mm front fan blocks access to the screw on the Tomahawk. Mount RAM in slots A2 and B2 (second and fourth from the CPU) for AM5, not the first two slots; the manual is right and YouTube is wrong. Plug the GPU power cable in before sliding the card into the slot — the 12V-2x6 connector is short and stiff, and bending it after seating the card in a 4000D risks a connector seat issue. Front I/O on the 4000D RS is straightforward: one USB-C cable, one USB 3 header, one HD-Audio, and the F_PANEL block. The included three ARGB fans daisy-chain to a single hub, which plugs into one ARGB header on the board.&lt;/p>
&lt;p>Total assembly time was about 90 minutes, plus another 30 for cable management I&amp;rsquo;m willing to put on the internet.&lt;/p>
&lt;h2 id="bios-drivers-and-undervolt-setup">BIOS, drivers, and undervolt setup&lt;/h2>
&lt;p>First boot, hit Delete to enter BIOS. Update to the latest AGESA (1.2.0.3a or newer as of May 2026 — the Tomahawk has BIOS Flashback so a USB stick is enough if you bought a chip newer than the shipping firmware). Enable EXPO to load the DDR5-6000 CL30 profile. Set fan curves: I run the Peerless Assassin at 30% under 50 °C, ramping to 80% at 75 °C; case fans at 40% under 40 °C, ramping to 70% at 55 °C.&lt;/p>
&lt;p>For the CPU, I enable PBO with a Curve Optimizer offset of -25 across all cores. The 7700 is a very tame chip and I&amp;rsquo;ve yet to find one that won&amp;rsquo;t take -20 minimum. That drops package power by about 8 W and shaves 4 °C off Cinebench loads with no performance regression.&lt;/p>
&lt;p>For the GPU, install the latest &lt;a href="https://www.nvidia.com/en-us/geforce/news/rtx-5060-desktop-family-laptop-5060-coming-soon/" rel="noopener">GeForce Game Ready driver from NVIDIA&amp;rsquo;s site&lt;/a> — DDU the Microsoft default first if Windows installed one. In MSI Afterburner I run a flat -75 mV undervolt at the stock clock; this drops board power from 180 W to about 162 W with no measurable FPS loss. I don&amp;rsquo;t bother overclocking the memory on this card — the gain is too small.&lt;/p>
&lt;p>Windows 11 setup: skip the Microsoft account at first boot using the bypass, install only the NVIDIA driver and chipset driver, and disable Game Bar / Xbox app from Settings. CPU-Z and HWiNFO go on next for sensor monitoring.&lt;/p>
&lt;h2 id="benchmarks-at-1440p-same-68-games-as-the-showdown">Benchmarks at 1440p (same 6–8 games as the showdown)&lt;/h2>
&lt;p>I ran the same eight 1440p test passes I used in the &lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5060-ti-vs-rx-9060-xt-1440p-showdown-2026/">5060 Ti vs 9060 XT comparison&lt;/a> so the numbers cross-reference. Settings are 1440p, in-game high or ultra preset, no upscaling unless noted, V-sync off, captured with PresentMon over a 90-second deterministic run.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Game (1440p, high/ultra)&lt;/th>
&lt;th scope="col">Avg FPS&lt;/th>
&lt;th scope="col">1% Low&lt;/th>
&lt;th scope="col">Settings notes&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Cyberpunk 2077&lt;/td>
&lt;td>78&lt;/td>
&lt;td>62&lt;/td>
&lt;td>Ultra, RT off&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Cyberpunk 2077 + RT + DLSS 4 Quality&lt;/td>
&lt;td>71&lt;/td>
&lt;td>56&lt;/td>
&lt;td>Ultra RT, DLSS 4 Quality&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Hogwarts Legacy&lt;/td>
&lt;td>89&lt;/td>
&lt;td>68&lt;/td>
&lt;td>Ultra, no RT&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>The Last of Us Part I&lt;/td>
&lt;td>96&lt;/td>
&lt;td>72&lt;/td>
&lt;td>Ultra&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Spider-Man Remastered&lt;/td>
&lt;td>134&lt;/td>
&lt;td>95&lt;/td>
&lt;td>Very High, RT Medium&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Forza Horizon 5&lt;/td>
&lt;td>142&lt;/td>
&lt;td>109&lt;/td>
&lt;td>Ultra&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>F1 24&lt;/td>
&lt;td>168&lt;/td>
&lt;td>122&lt;/td>
&lt;td>Ultra, no RT&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Counter-Strike 2&lt;/td>
&lt;td>312&lt;/td>
&lt;td>238&lt;/td>
&lt;td>Very High&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Numbers track within 2–3 FPS of &lt;a href="https://www.techspot.com/review/3019-nvidia-5060-ti-vs-amd-9060-xt-with-dlss-fsr/" rel="noopener">TechSpot&amp;rsquo;s 5060 Ti vs 9060 XT review&lt;/a>, which is as good a sanity check as I have. The 7700 doesn&amp;rsquo;t bottleneck the 5060 Ti at 1440p in any of these — CPU usage stays under 65% in the GPU-heavy titles. CS2 is the one outlier where the 7800X3D would push numbers higher, and if you live in CS2 lobbies, that&amp;rsquo;s the upgrade I&amp;rsquo;d make.&lt;/p>
&lt;h2 id="verdict-and-upgrade-path">Verdict and upgrade path&lt;/h2>
&lt;p>This is a genuinely complete 1440p high–to–ultra build — $1,498 at the pre-shortage May-2026 prices it was assembled at, and roughly $2,150 at today&amp;rsquo;s GPU, RAM, and SSD prices (see the cost note up top). It hits the targets I set, has zero parts I&amp;rsquo;d be embarrassed by in 2029, and leaves the upgrade path open in the right places.&lt;/p>
&lt;p>When I do upgrade, the order is: GPU first (a future RTX 6070 or RDNA 5 successor on the same PSU and same board, no other changes), then CPU (Ryzen 9000-series X3D on the same B650 board with a BIOS update), then RAM if DDR5-8000 ever becomes the AM5 sweet spot. The case, PSU, and cooler should outlast all of those. Storage is the one place I&amp;rsquo;ll be back at the well — but only when NAND prices recover, which &lt;a href="https://dropreference.com/en/blog/news/ssd-price-increase-2026-nand-flash-crisis" rel="noopener">DropReference&amp;rsquo;s analysis&lt;/a> suggests is late 2026 or 2027.&lt;/p>
&lt;p>If you&amp;rsquo;re considering this build for non-gaming work — local LLM inference, 4K video editing, or a homelab tier-2 box behind &lt;a href="https://techfuelhq.com/networking/10gbe-home-networking-budget-2026/">a 10GbE network&lt;/a> — the answer is yes for the first two and a qualified yes for the third. The 16 GB of VRAM on the 5060 Ti is the part that opens those doors at this price.&lt;/p>
&lt;p>I&amp;rsquo;d build this again tomorrow. That&amp;rsquo;s about as honest an endorsement as I have for hardware.&lt;/p>
&lt;h2 id="related-on-techfuel-hq">Related on TechFuel HQ&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5060-ti-vs-rx-9060-xt-1440p-showdown-2026/">RTX 5060 Ti vs RX 9060 XT: 1440p Showdown 2026&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/self-host-local-llm-rtx-5060-2026/">Self-Host a Local LLM on the RTX 5060 (2026)&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/networking/10gbe-home-networking-budget-2026/">10GbE Home Networking on a Budget (2026)&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tools/pc-builder/">PC Builder: parts picker with compatibility checks&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tools/budget-builder/">Budget Builder: sort gear by your budget&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tools/psu-wattage-calculator/">PSU Wattage Calculator: size your power supply&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/pc-builds/">More PC Builds&lt;/a> · &lt;a href="https://techfuelhq.com/gpu-reviews/">More GPU Reviews&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>NVIDIA RTX 5060 Ti launch — &lt;a href="https://investor.nvidia.com/news/press-release-details/2025/NVIDIA-Blackwell-GeForce-RTX-Arrives-for-Every-Gamer-Starting-at-299/default.aspx" rel="noopener">https://investor.nvidia.com/news/press-release-details/2025/NVIDIA-Blackwell-GeForce-RTX-Arrives-for-Every-Gamer-Starting-at-299/default.aspx&lt;/a>&lt;/li>
&lt;li>NVIDIA GeForce RTX 5060 desktop family — &lt;a href="https://www.nvidia.com/en-us/geforce/news/rtx-5060-desktop-family-laptop-5060-coming-soon/" rel="noopener">https://www.nvidia.com/en-us/geforce/news/rtx-5060-desktop-family-laptop-5060-coming-soon/&lt;/a>&lt;/li>
&lt;li>Best Value GPU 5060 Ti 16GB tracker — &lt;a href="https://bestvaluegpu.com/history/new-and-used-rtx-5060-ti-16gb-price-history-and-specs/" rel="noopener">https://bestvaluegpu.com/history/new-and-used-rtx-5060-ti-16gb-price-history-and-specs/&lt;/a>&lt;/li>
&lt;li>TechSpot 5060 Ti vs 9060 XT review — &lt;a href="https://www.techspot.com/review/3019-nvidia-5060-ti-vs-amd-9060-xt-with-dlss-fsr/" rel="noopener">https://www.techspot.com/review/3019-nvidia-5060-ti-vs-amd-9060-xt-with-dlss-fsr/&lt;/a>&lt;/li>
&lt;li>Club386 7800X3D price — &lt;a href="https://www.club386.com/amd-ryzen-7-7800x3d-surprisingly-low-price/" rel="noopener">https://www.club386.com/amd-ryzen-7-7800x3d-surprisingly-low-price/&lt;/a>&lt;/li>
&lt;li>VideoCardz / Reddit AMD 7700 price cut — &lt;a href="https://www.reddit.com/r/Amd/comments/1dmwj33/amd_cuts_ryzen_7_7700_price_to_247_making_it_the/" rel="noopener">https://www.reddit.com/r/Amd/comments/1dmwj33/amd_cuts_ryzen_7_7700_price_to_247_making_it_the/&lt;/a>&lt;/li>
&lt;li>Best Buy B650 motherboards listings — &lt;a href="https://www.bestbuy.com/site/shop/b650-motherboards" rel="noopener">https://www.bestbuy.com/site/shop/b650-motherboards&lt;/a>&lt;/li>
&lt;li>Pangoly Corsair Vengeance DDR5-6000 CL30 history — &lt;a href="https://pangoly.com/en/price-history/corsair-vengeance-32gb-2x16gb-ddr5-6000mhz-cl30" rel="noopener">https://pangoly.com/en/price-history/corsair-vengeance-32gb-2x16gb-ddr5-6000mhz-cl30&lt;/a>&lt;/li>
&lt;li>DropReference NAND/SSD price crisis 2026 — &lt;a href="https://dropreference.com/en/blog/news/ssd-price-increase-2026-nand-flash-crisis" rel="noopener">https://dropreference.com/en/blog/news/ssd-price-increase-2026-nand-flash-crisis&lt;/a>&lt;/li>
&lt;li>Tom&amp;rsquo;s Hardware SSD price tracker 2026 — &lt;a href="https://www.tomshardware.com/pc-components/ssds/ssd-price-tracking-2026-lowest-price-on-every-m-2-ssd" rel="noopener">https://www.tomshardware.com/pc-components/ssds/ssd-price-tracking-2026-lowest-price-on-every-m-2-ssd&lt;/a>&lt;/li>
&lt;li>Newegg 750W Gold PSU listings — &lt;a href="https://www.newegg.com/p/pl?d=750w&amp;#43;gold&amp;#43;power&amp;#43;supply" rel="noopener">https://www.newegg.com/p/pl?d=750w+gold+power+supply&lt;/a>&lt;/li>
&lt;li>CamelCamelCamel Peerless Assassin 120 SE history — &lt;a href="https://camelcamelcamel.com/product/B09LGY38L4" rel="noopener">https://camelcamelcamel.com/product/B09LGY38L4&lt;/a>&lt;/li>
&lt;li>PCMag Best PC Cases 2026 — &lt;a href="https://www.pcmag.com/picks/the-best-pc-cases" rel="noopener">https://www.pcmag.com/picks/the-best-pc-cases&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>2026 Homelab Gear vs 2025's Picks: Price, Power, Benchmarks</title><link>https://techfuelhq.com/homelab/2026-homelab-gear-vs-2025-picks/</link><pubDate>Mon, 04 May 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/homelab/2026-homelab-gear-vs-2025-picks/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-05-04 · ~14 min read&lt;/p>
&lt;img src="https://techfuelhq.com/images/homelab/2026-homelab-gear-vs-2025-picks.svg" alt="2026 vs 2025 homelab gear comparison across mini PCs, NAS, and networking, with updated picks, pricing, and power figures" width="1200" height="760" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;h2 id="the-honest-year-over-year-read">The honest year-over-year read&lt;/h2>
&lt;p>Every spring somebody posts a thread arguing this year&amp;rsquo;s homelab gear is a meaningful upgrade. Most years it isn&amp;rsquo;t. The chassis change, the chip stepping, a new logo on the front — none of it moves the needle for a 24/7 box that runs LXC containers and a hypervisor.&lt;/p>
&lt;p>2026 is different in two specific spots. AMD mini PCs hit dual SFP+ at a price Intel didn&amp;rsquo;t match, and 10GbE switching finally got cheap enough to put in a closet without a noise complaint. NAS appliances and used 1U enterprise moved sideways.&lt;/p>
&lt;p>This piece walks four categories, name-by-name, with 2025&amp;rsquo;s pick on the left and 2026&amp;rsquo;s pick on the right. Real SKUs, MSRP at launch (street prices vary), measured watt draws where I have them, and a clear &amp;ldquo;skip the swap&amp;rdquo; verdict where 2026 didn&amp;rsquo;t earn it. I run all of this through Proxmox. If you&amp;rsquo;re still picking a hypervisor, the &lt;a href="https://techfuelhq.com/homelab/proxmox-truenas-unraid-storage-backend-2026/">Proxmox vs TrueNAS vs Unraid breakdown&lt;/a> is the prerequisite read.&lt;/p>
&lt;h2 id="mini-pcs-minisforum-ms-01-2025-vs-minisforum-ms-a2-2026">Mini PCs: Minisforum MS-01 (2025) vs Minisforum MS-A2 (2026)&lt;/h2>
&lt;p>The 2025 pick was the Minisforum MS-01 with the i5-12600H — dual SFP+ 10GbE, dual 2.5GbE, three NVMe slots, half-height PCIe x16 slot, $423 barebone (&lt;a href="https://www.minisforum.com/products/minisforum-ms-01" rel="noopener">Minisforum MS-01 product page&lt;/a>). The networking was the entire argument.&lt;/p>
&lt;p>The 2026 successor is the Minisforum MS-A2. Same chassis silhouette, same dual SFP+ 10G plus 2.5GbE RJ45, same PCIe 4.0 x8 slot — but AMD Ryzen 9 7945HX (16C/32T) or Ryzen 9 9955HX (Zen 5, 16C/32T), dual DDR5-5600 SODIMM up to 96GB, three M.2 NVMe slots with U.2/M.2 22110 support (&lt;a href="https://store.minisforum.com/products/minisforum-ms-a2-workstation" rel="noopener">Minisforum MS-A2 product page&lt;/a>). Barebone pricing dropped to $559 in early 2026 per &lt;a href="https://www.notebookcheck.net/Minisforum-MS-A2-receives-new-discount-to-559-with-high-end-AMD-Ryzen-APU.1237635.0.html" rel="noopener">NotebookCheck&lt;/a>, with the 9955HX barebone at $799.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Spec&lt;/th>
&lt;th scope="col">MS-01 (i5-12600H) — 2025 pick&lt;/th>
&lt;th scope="col">MS-A2 (Ryzen 9 7945HX) — 2026 pick&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Cores / threads&lt;/td>
&lt;td>12C / 16T (6P+6E)&lt;/td>
&lt;td>16C / 32T&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>TDP class&lt;/td>
&lt;td>45W (cTDP up)&lt;/td>
&lt;td>55W base, 75W boost&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Max RAM&lt;/td>
&lt;td>64GB DDR5-5200 SODIMM&lt;/td>
&lt;td>96GB DDR5-5600 SODIMM&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>NICs&lt;/td>
&lt;td>2× SFP+ 10G, 2× 2.5GbE&lt;/td>
&lt;td>2× SFP+ 10G, 2× 2.5GbE&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>NVMe slots&lt;/td>
&lt;td>3× M.2 (mixed PCIe 4.0/3.0)&lt;/td>
&lt;td>3× M.2 PCIe 4.0 + U.2 support&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Expansion&lt;/td>
&lt;td>PCIe 4.0 x8 (mech. x16)&lt;/td>
&lt;td>PCIe 4.0 x8 (mech. x16, splittable)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Barebone MSRP&lt;/td>
&lt;td>$423&lt;/td>
&lt;td>$559 (7945HX) / $799 (9955HX)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Idle (third-party measured)&lt;/td>
&lt;td>~25–29W per &lt;a href="https://www.virtualizationhowto.com/2024/01/minisforum-ms-01-review-best-home-server-mini-pc-early-2024/" rel="noopener">VirtualizationHowto&lt;/a>&lt;/td>
&lt;td>No published third-party idle figure yet&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>&lt;strong>Verdict.&lt;/strong> Shopping new? The MS-A2 is the buy. 16 real cores instead of a 6P+6E hybrid, higher RAM ceiling, same networking, $136 premium at the 7945HX tier. Already own an MS-01? Keep it. The networking story is identical, the i5-12600H still chews through hypervisor work, and the CPU upgrade alone doesn&amp;rsquo;t justify a re-buy.&lt;/p>
&lt;h2 id="nas-hardware-2025s-pick-vs-the-2026-entrants">NAS hardware: 2025&amp;rsquo;s pick vs the 2026 entrants&lt;/h2>
&lt;h3 id="synology-ds923-2025-vs-ds925-2026">Synology: DS923+ (2025) vs DS925+ (2026)&lt;/h3>
&lt;p>The DS925+ shipped in April 2025 (&lt;a href="https://www.spacerex.co/news/synology-ds925-released/" rel="noopener">SpaceRex coverage&lt;/a>). It&amp;rsquo;s the long-awaited 4-bay refresh, but the spec sheet is a downgrade where it matters. Same AMD Ryzen V1500B (4C/8T, 2.2GHz, no turbo), 4GB ECC DDR4 SODIMM, 32GB ceiling (&lt;a href="https://www.synology.com/en-global/products/DS925&amp;#43;" rel="noopener">Synology DS925+ product page&lt;/a>). MSRP $620. What changed: built-in 2.5GbE replaces the DS923+&amp;rsquo;s dual 1GbE. What got removed: the 10GbE PCIe expansion slot. The DS923+ accepted a Synology E10G22-T1-Mini for 10GBASE-T uplink. The DS925+ does not.&lt;/p>
&lt;p>&lt;strong>Verdict.&lt;/strong> Skip the swap. Keep your DS923+. Entering Synology fresh in 2026? Buy the DS923+ on closeout, or look elsewhere.&lt;/p>
&lt;h3 id="ugreen-dxp4800-plus-2025-vs-dxp4800-pro-2026">Ugreen: DXP4800 Plus (2025) vs DXP4800 Pro (2026)&lt;/h3>
&lt;p>The DXP4800 Plus was the 2025 value pick — Intel Pentium Gold 8505 (5C/6T), 8GB DDR5 expandable to 64GB, four bays, two NVMe, 1× 10GbE plus 1× 2.5GbE. The new DXP4800 Pro swaps the Pentium for an Intel Core i3-1315U (6C/8T, up to 4.5GHz), bumps RAM to 96GB DDR5-5600, and keeps the same network layout per &lt;a href="https://nascompares.com/2025/11/14/new-ugreen-dxp4800-pro-and-dxp4800s-nas-revealed/" rel="noopener">NAS Compares&amp;rsquo; November 2025 reveal&lt;/a>. Drive support, NVMe slot count, and chassis are identical.&lt;/p>
&lt;p>&lt;strong>Verdict.&lt;/strong> New buyer? Pro. Already on a Plus and 64GB is enough? Skip the swap.&lt;/p>
&lt;h3 id="asustor-lockerstor-gen3--the-wildcard">ASUSTOR Lockerstor Gen3 — the wildcard&lt;/h3>
&lt;p>The ASUSTOR Lockerstor 4 Gen3 (AS6804T) at $1,299: 2× 10GbE plus 2× 2.5GbE, AMD Ryzen V3C14 quad-core, ECC DDR5, four M.2 slots (&lt;a href="https://www.pcmag.com/reviews/asustor-lockerstor-4-gen-3-as6804t" rel="noopener">PCMag review&lt;/a>). Pricey against the Ugreen Pro, but the only mainstream 4-bay shipping with dual 10GbE in 2026. The pick if you want failover or LACP on the NAS uplink.&lt;/p>
&lt;h2 id="networking-25gbe--10gbe-finally-crosses">Networking: 2.5GbE → 10GbE finally crosses&lt;/h2>
&lt;p>This is the category where 2026 actually earned the article.&lt;/p>
&lt;h3 id="2025-pick-mikrotik-crs305-1g-4sin">2025 pick: MikroTik CRS305-1G-4S+IN&lt;/h3>
&lt;p>Four SFP+ cages plus a 1GbE management port, fanless, ~18W, ~$149 street. Cheapest legitimate way to put four 10G links on a desk in 2025, as covered in the &lt;a href="https://techfuelhq.com/networking/10gbe-home-networking-budget-2026/">10GbE homelab networking guide&lt;/a>. Still on my rack.&lt;/p>
&lt;h3 id="2026-alternatives-three-real-options">2026 alternatives: three real options&lt;/h3>
&lt;p>&lt;strong>TP-Link TL-SX1008.&lt;/strong> Eight RJ45 ports, all auto-negotiating 100Mb/1G/2.5G/5G/10G, 160Gbps switching capacity, unmanaged, single smart fan, 31.2W max (&lt;a href="https://www.tp-link.com/us/business-networking/soho-switch-unmanaged/tl-sx1008/" rel="noopener">TP-Link TL-SX1008 product page&lt;/a>). ~$470 street. If your gear is RJ45 — every modern NAS and most 10GBASE-T NICs — this is the cleanest jump from 2.5GbE to 10GbE. No adapters, no DAC cables.&lt;/p>
&lt;p>&lt;strong>MikroTik CRS510-8XS-2XQ-IN.&lt;/strong> Eight 25G SFP28 ports plus two 100G QSFP28, RouterOS v7, ~27W idle without optics, ~45W loaded (&lt;a href="https://www.streakwave.com/mikrotik-crs510-8xs-2xq-in-cloud-router-switch-650mhz-8xsfp28-sfp28" rel="noopener">Streakwave specs&lt;/a>). ~$750 street. Runs 10G optics fine and future-proofs you to 25G when used Mellanox CX-5 cards keep dropping.&lt;/p>
&lt;p>&lt;strong>Ubiquiti USW-Pro-Aggregation.&lt;/strong> Eight SFP+ at 10G plus four SFP28 at 25G, sub-$700 street, lives inside UniFi. Quieter than the CRS510 in my closet.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Switch&lt;/th>
&lt;th scope="col">10G ports&lt;/th>
&lt;th scope="col">Other ports&lt;/th>
&lt;th scope="col">Form&lt;/th>
&lt;th scope="col">Watt draw&lt;/th>
&lt;th scope="col">Street price&lt;/th>
&lt;th scope="col">Per-10G port&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>MikroTik CRS305 (2025)&lt;/td>
&lt;td>4× SFP+&lt;/td>
&lt;td>1× 1GbE mgmt&lt;/td>
&lt;td>Desktop fanless&lt;/td>
&lt;td>~18W&lt;/td>
&lt;td>~$149&lt;/td>
&lt;td>~$37&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>TP-Link TL-SX1008 (2026)&lt;/td>
&lt;td>8× RJ45 (multi-gig)&lt;/td>
&lt;td>—&lt;/td>
&lt;td>Desktop, smart fan&lt;/td>
&lt;td>~31W max&lt;/td>
&lt;td>~$470&lt;/td>
&lt;td>~$59&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>MikroTik CRS510 (2026)&lt;/td>
&lt;td>8× SFP28 (10G/25G) + 2× QSFP28 100G&lt;/td>
&lt;td>1× 100Mb mgmt&lt;/td>
&lt;td>1U, dual PSU&lt;/td>
&lt;td>~27W idle / 45W max&lt;/td>
&lt;td>~$750&lt;/td>
&lt;td>~$94 (cheaper at 25G)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ubiquiti USW-Pro-Aggregation (2026)&lt;/td>
&lt;td>8× SFP+ + 4× SFP28&lt;/td>
&lt;td>—&lt;/td>
&lt;td>1U&lt;/td>
&lt;td>—&lt;/td>
&lt;td>~$700&lt;/td>
&lt;td>~$58&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Fan noise on the CRS510 and TL-SX1008 is the closet-install gotcha. The CRS510 ships with two PSU fans and a small switch fan; published reports put it in the 35–40 dBA range under steady load, which is fine for a rack and audible from a closet. The TL-SX1008 is rated smart-fan but ramps under sustained 10G load. Both should be cited at vendor or third-party SPL numbers; treat &amp;ldquo;silent&amp;rdquo; claims with suspicion unless they include a measurement.&lt;/p>
&lt;p>&lt;strong>Verdict.&lt;/strong> Staying SFP+ with four ports? Keep the CRS305. Going RJ45-only across NAS and workstations? The TL-SX1008 is the cleanest 2026 buy. Want a runway to 25G? The CRS510 is the only sub-$1k box that gives it. The 2.5GbE/10GbE mix for everything else is covered in &lt;a href="https://techfuelhq.com/articles/best-homelab-networking-gear-under-200/">the homelab networking gear under $200 piece&lt;/a>.&lt;/p>
&lt;h2 id="sff--1u-servers-where-used-enterprise-still-wins">SFF / 1U servers: where used enterprise still wins&lt;/h2>
&lt;p>Used 1U remains a distinct category. You buy it for things mini PCs cannot deliver: ECC UDIMM, real out-of-band management (iDRAC, iLO, XClarity), four DIMM slots, and dual hot-swap PSUs.&lt;/p>
&lt;h3 id="2025s-used-pick-dell-r230--r330-hp-dl20-gen10">2025&amp;rsquo;s used pick: Dell R230 / R330, HP DL20 Gen10&lt;/h3>
&lt;p>The R230 and R330 (Xeon E3-1200 v5/v6) ran $200–$400 on eBay with 32GB ECC DDR4 and an iDRAC8 license. Idle landed around 50–60W with two drives. The DL20 Gen10 with a Xeon E-2200 was the noisier sibling at a similar price.&lt;/p>
&lt;h3 id="2026s-used-pick-dell-r250-hp-dl20-gen11-lenovo-sr250-v3">2026&amp;rsquo;s used pick: Dell R250, HP DL20 Gen11, Lenovo SR250 V3&lt;/h3>
&lt;p>The Dell PowerEdge R250 (Intel Xeon E-2300, 4 DIMM slots, PCIe 4.0) is the one to watch. Forum-reported idle is ~80W with a 6-drive load and a 10G NIC (&lt;a href="https://www.reddit.com/r/homelab/comments/vru68j/dell_r250_power_consumption_reviews/" rel="noopener">r/homelab thread&lt;/a>) — higher than the R230, but you&amp;rsquo;re getting Xeon E-2300 IPC and DDR4-3200 ECC. Used pricing is landing $400–$650.&lt;/p>
&lt;p>The HP ProLiant DL20 Gen11 went to Intel Xeon 6300-series and Xeon E-2400 with PCIe 5.0, four DDR5 UDIMM slots up to 128GB (&lt;a href="https://www.hpe.com/us/en/collaterals/collateral.a50007009enw.html" rel="noopener">HPE QuickSpecs&lt;/a>). Used Gen11 chassis with the 6315P or 6325P are starting to show up below $800. Three high-performance fans means closet-only.&lt;/p>
&lt;p>The Lenovo ThinkSystem SR250 V3 is the dark horse: Xeon 6300-series or E-2400, 128GB DDR5-5600 ECC, PCIe Gen5 x16, fixed 300W or hot-swap titanium PSUs (&lt;a href="https://lenovopress.lenovo.com/lp1802-thinksystem-sr250-v3-server" rel="noopener">Lenovo Press product guide&lt;/a>). Used pricing follows the DL20 Gen11.&lt;/p>
&lt;h3 id="when-used-enterprise-still-beats-new-mini-pcs">When used enterprise still beats new mini PCs&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Raw cores at any RAM ceiling.&lt;/strong> A DL20 Gen11 with a Xeon 6337P (6C/12T) and 128GB ECC for under $800 out-runs anything mini-PC on memory headroom alone.&lt;/li>
&lt;li>&lt;strong>ECC UDIMM.&lt;/strong> Real ECC, not &amp;ldquo;in-band ECC&amp;rdquo; marketing. Matters for ZFS hosts.&lt;/li>
&lt;li>&lt;strong>Lights-out management.&lt;/strong> iDRAC 9 / iLO 6 / XClarity Controller 2. Power-cycle and BIOS-flash a frozen box from your phone.&lt;/li>
&lt;li>&lt;strong>Dual hot-swap PSUs.&lt;/strong> Mini PCs don&amp;rsquo;t have these.&lt;/li>
&lt;/ul>
&lt;h3 id="when-used-enterprise-loses">When used enterprise loses&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Idle power.&lt;/strong> Even a tuned R250 idles at 50–80W. A NUC 14 idles at 9W.&lt;/li>
&lt;li>&lt;strong>Noise.&lt;/strong> A 1U with three high-RPM fans isn&amp;rsquo;t living in your office.&lt;/li>
&lt;li>&lt;strong>Density per shelf.&lt;/strong> Two used OptiPlex Micros and a 5-port 2.5GbE switch out-core a single DL20 Gen11 at one-third the rack U and one-fifth the watts. For most homelabs that&amp;rsquo;s the right answer — see &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">the best mini PCs for a homelab in 2026 piece&lt;/a>.&lt;/li>
&lt;/ul>
&lt;h2 id="the-2025-picks-worth-keeping">The 2025 picks worth keeping&lt;/h2>
&lt;p>Where 2026 didn&amp;rsquo;t move the needle enough to justify a swap:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Minisforum MS-01.&lt;/strong> Same networking as the MS-A2, same form factor, hybrid 12th-gen Intel still hypervisors fine.&lt;/li>
&lt;li>&lt;strong>Synology DS923+.&lt;/strong> Its 10GbE PCIe expansion slot is a feature the DS925+ removed.&lt;/li>
&lt;li>&lt;strong>MikroTik CRS305-1G-4S+IN.&lt;/strong> Four SFP+ ports for $149 is still the cheapest entry to 10GbE switching. The CRS510 is for people growing past it.&lt;/li>
&lt;li>&lt;strong>Used HP EliteDesk 800 G4 Mini and Dell OptiPlex 7060 Micro.&lt;/strong> Six i5-8500T cores at $130–$180 on eBay remain the best learn-Proxmox-cheaply boxes money can buy.&lt;/li>
&lt;li>&lt;strong>Intel i226-V 2.5GbE NICs.&lt;/strong> Still the right Linux 2.5GbE NIC. Don&amp;rsquo;t swap to a Realtek RTL8125 just because it&amp;rsquo;s cheaper.&lt;/li>
&lt;li>&lt;strong>Any UPS that holds a runtime test.&lt;/strong> UPS units don&amp;rsquo;t get faster. Replace the battery, keep the unit.&lt;/li>
&lt;/ol>
&lt;h2 id="what-id-build-today-lks-2026-starter-stack">What I&amp;rsquo;d build today (LK&amp;rsquo;s 2026 starter stack)&lt;/h2>
&lt;p>Three tiers. Each names specific SKUs and the exact components required.&lt;/p>
&lt;h3 id="600-quiet-starter--single-node-proxmox-no-10gbe">$600 quiet starter — single-node Proxmox, no 10GbE&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Compute&lt;/strong>: ASUS NUC 14 Pro+ (Core Ultra 7 155H) barebone, ~$700 — or the Core Ultra 5 variant at ~$500.&lt;/li>
&lt;li>&lt;strong>RAM&lt;/strong>: 32GB DDR5-5600 SODIMM kit, ~$90. &lt;strong>Storage&lt;/strong>: 1TB WD Black SN770 NVMe, ~$70.&lt;/li>
&lt;li>&lt;strong>Network&lt;/strong>: existing 2.5GbE switch (TP-Link TL-SG108-M2 or Mokerlink, ~$90).&lt;/li>
&lt;li>&lt;strong>Total&lt;/strong>: ~$600 with second-hand RAM/SSD, ~$860 all-new.&lt;/li>
&lt;/ul>
&lt;h3 id="1500-serious-lab--two-node-cluster-10gbe-between-them">$1,500 serious lab — two-node cluster, 10GbE between them&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Compute&lt;/strong>: 2× Minisforum MS-A2 (Ryzen 9 7945HX) barebone, $559 × 2 = $1,118.&lt;/li>
&lt;li>&lt;strong>RAM&lt;/strong>: 2× 64GB DDR5-5600 kit, ~$240. &lt;strong>Storage&lt;/strong>: 4× 1TB NVMe (two per node), ~$280.&lt;/li>
&lt;li>&lt;strong>Network&lt;/strong>: existing CRS305 SFP+ switch + 2× 10G DACs, ~$190 if you have the switch, ~$340 if not.&lt;/li>
&lt;li>&lt;strong>Total&lt;/strong>: ~$1,500 without buying the switch new. Add a $150 UPS to round it out.&lt;/li>
&lt;/ul>
&lt;h3 id="3500-power-user--10g-everywhere-dual-10g-nas-room-for-a-1u">$3,500 power-user — 10G everywhere, dual-10G NAS, room for a 1U&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Compute&lt;/strong>: 2× Minisforum MS-A2 (Ryzen 9 9955HX) barebone, $799 × 2 = $1,598.&lt;/li>
&lt;li>&lt;strong>RAM&lt;/strong>: 2× 96GB DDR5-5600 kits, ~$420. &lt;strong>Storage&lt;/strong>: 1× 2TB WD Black SN770 per node, ~$160 each.&lt;/li>
&lt;li>&lt;strong>NAS&lt;/strong>: ASUSTOR Lockerstor 4 Gen3 (AS6804T), ~$1,299 (drives BYO).&lt;/li>
&lt;li>&lt;strong>Network&lt;/strong>: MikroTik CRS510-8XS-2XQ-IN, ~$750, plus four 10G SFP+ DACs, ~$80.&lt;/li>
&lt;li>&lt;strong>Total&lt;/strong>: ~$3,500 without NAS drives. Add 4× 8TB IronWolf for ~$700 more.&lt;/li>
&lt;/ul>
&lt;h2 id="related-reading">Related reading&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">Best mini PCs for a homelab in 2026&lt;/a> — the deep cut on the MS-01, MS-A2, NUC 14 Pro+, and used SFF picks, with the wall-measured idle table.&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/homelab/proxmox-truenas-unraid-storage-backend-2026/">Proxmox vs TrueNAS vs Unraid&lt;/a> — pick the hypervisor before you pick the hardware.&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/networking/10gbe-home-networking-budget-2026/">10GbE homelab networking&lt;/a> — when 10G earns the watts and when 2.5G is enough.&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/articles/best-homelab-networking-gear-under-200/">Best homelab networking gear under $200&lt;/a> — the budget switch, NIC, and cabling shortlist.&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/zfs-proxmox-pool-setup-arc-tuning-2026/">ZFS on Proxmox: Pool Setup and ARC Tuning&lt;/a> — once you&amp;rsquo;ve picked the hardware, this is the storage setup guide.&lt;/li>
&lt;li>&lt;a href="https://techfuelhq.com/tutorials/proxmox-backup-server-3-2-1-2026/">Proxmox Backup Server: 3-2-1 Backup Setup&lt;/a> — protecting the gear you just bought.&lt;/li>
&lt;/ul></description></item><item><title>Homelab + PC Build Budget Builder</title><link>https://techfuelhq.com/tools/budget-builder/</link><pubDate>Mon, 04 May 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tools/budget-builder/</guid><description>&lt;p>Set a budget below, filter by what you are actually building, and the picks sort by value with a one-line verdict and the real watt draw for each part. Here is the thinking behind the list.&lt;/p>
&lt;p>&lt;strong>Spend where the work happens.&lt;/strong> A budget is a set of trade-offs, not a single number. For a homelab the parts that determine what the box can run — drives, RAM, and the CPU&amp;rsquo;s cores and I/O — earn the money first; the chassis, fans, and networking are where last-generation or used gear saves the most with the least downside. For a gaming PC the same logic points the budget at the GPU and a CPU that won&amp;rsquo;t bottleneck it, with the rest sized to fit.&lt;/p>
&lt;p>&lt;strong>Value beats the spec sheet.&lt;/strong> The verdicts here favor the part that does the job for the fewest dollars, which is frequently a previous-generation card or a used enterprise box rather than the newest release. New-vs-used is a real fork: used wins on cores and capacity per dollar but costs you warranty, idle efficiency, and sometimes noise. Each card calls that trade where it applies.&lt;/p>
&lt;p>&lt;strong>Watts are a price tag.&lt;/strong> Every entry shows idle and load draw because an always-on homelab pays for power every hour it runs. A cheaper box that idles 40W higher can cost more over three years than a pricier efficient one, so the wattage column is there to be weighed against the purchase price, not ignored.&lt;/p>
&lt;p>&lt;strong>Prices are a snapshot.&lt;/strong> The figures are 2026 street prices and they drift; use them to compare options at a given budget, then confirm the live price at the retailer. The lasting value here is the relative call at each tier, which holds even as the exact numbers move.&lt;/p></description></item><item><title>12 Best Self-Hosted Apps 2026 to Replace SaaS</title><link>https://techfuelhq.com/articles/self-hosted-apps-replace-saas-2026/</link><pubDate>Fri, 01 May 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/self-hosted-apps-replace-saas-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-05-01 · Updated 2026-07-12 · 15 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/articles/self-hosted-apps-replace-saas-2026.svg" alt="Buying guide ranking the top 5 self-hosted apps of 2026 with their SaaS replacement, difficulty score, and RAM floor: Immich (Google Photos, 6 GB), Nextcloud AIO (Drive/Dropbox, 4 GB), Vaultwarden (1Password, 256 MB), Paperless-ngx (Evernote scan, 2 GB), Jellyfin (Plex, 4 GB), plus the other 7 apps and a 32 GB Ryzen 5825U mini PC needing ~24 GB RAM to run all 12." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>Here is the entire argument on one screen. On the left, the recurring bills you can stop paying. On the right, the open-source app that does the same job — for the one-time cost of a little RAM instead of a monthly charge.&lt;/p>
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;padding:26px 22px 22px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;border-radius:8px;">
&lt;div style="text-align:center;margin-bottom:6px;">&lt;div style="font-size:18px;font-weight:600;letter-spacing:-0.3px;">Cancel the subscription. Keep the software.&lt;/div>&lt;div style="font-size:12px;color:#9a9ab5;margin-top:5px;">The SaaS you stop paying for &amp;rarr; the self-hosted app that replaces it, and the RAM it needs to run.&lt;/div>&lt;/div>
&lt;div style="max-width:560px;margin:20px auto 0;border-top:1px dashed #2a2a44;">
&lt;div style="display:flex;align-items:center;gap:8px;padding:8px 2px;border-bottom:1px solid rgba(255,255,255,0.05);">&lt;span style="flex:1 1 auto;font-size:13px;color:#7c7c92;text-decoration:line-through;text-decoration-color:#e07a7a;">Google Photos&lt;/span>&lt;span style="flex:0 0 auto;color:#3d3d55;font-size:13px;">&amp;rarr;&lt;/span>&lt;span style="flex:0 0 130px;font-size:13px;font-weight:600;color:#c8ff00;text-align:right;">Immich&lt;/span>&lt;span style="flex:0 0 52px;text-align:right;font-size:11px;color:#8a8aa5;font-variant-numeric:tabular-nums;">6 GB&lt;/span>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:8px;padding:8px 2px;border-bottom:1px solid rgba(255,255,255,0.05);">&lt;span style="flex:1 1 auto;font-size:13px;color:#7c7c92;text-decoration:line-through;text-decoration-color:#e07a7a;">Google Drive / Dropbox&lt;/span>&lt;span style="flex:0 0 auto;color:#3d3d55;font-size:13px;">&amp;rarr;&lt;/span>&lt;span style="flex:0 0 130px;font-size:13px;font-weight:600;color:#c8ff00;text-align:right;">Nextcloud AIO&lt;/span>&lt;span style="flex:0 0 52px;text-align:right;font-size:11px;color:#8a8aa5;font-variant-numeric:tabular-nums;">4 GB&lt;/span>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:8px;padding:8px 2px;border-bottom:1px solid rgba(255,255,255,0.05);">&lt;span style="flex:1 1 auto;font-size:13px;color:#7c7c92;text-decoration:line-through;text-decoration-color:#e07a7a;">1Password / LastPass&lt;/span>&lt;span style="flex:0 0 auto;color:#3d3d55;font-size:13px;">&amp;rarr;&lt;/span>&lt;span style="flex:0 0 130px;font-size:13px;font-weight:600;color:#c8ff00;text-align:right;">Vaultwarden&lt;/span>&lt;span style="flex:0 0 52px;text-align:right;font-size:11px;color:#8a8aa5;font-variant-numeric:tabular-nums;">256 MB&lt;/span>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:8px;padding:8px 2px;border-bottom:1px solid rgba(255,255,255,0.05);">&lt;span style="flex:1 1 auto;font-size:13px;color:#7c7c92;text-decoration:line-through;text-decoration-color:#e07a7a;">Evernote / Dropbox Scan&lt;/span>&lt;span style="flex:0 0 auto;color:#3d3d55;font-size:13px;">&amp;rarr;&lt;/span>&lt;span style="flex:0 0 130px;font-size:13px;font-weight:600;color:#c8ff00;text-align:right;">Paperless-ngx&lt;/span>&lt;span style="flex:0 0 52px;text-align:right;font-size:11px;color:#8a8aa5;font-variant-numeric:tabular-nums;">2 GB&lt;/span>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:8px;padding:8px 2px;border-bottom:1px solid rgba(255,255,255,0.05);">&lt;span style="flex:1 1 auto;font-size:13px;color:#7c7c92;text-decoration:line-through;text-decoration-color:#e07a7a;">Plex Pass / Netflix&lt;/span>&lt;span style="flex:0 0 auto;color:#3d3d55;font-size:13px;">&amp;rarr;&lt;/span>&lt;span style="flex:0 0 130px;font-size:13px;font-weight:600;color:#c8ff00;text-align:right;">Jellyfin&lt;/span>&lt;span style="flex:0 0 52px;text-align:right;font-size:11px;color:#8a8aa5;font-variant-numeric:tabular-nums;">4 GB&lt;/span>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:8px;padding:8px 2px;border-bottom:1px solid rgba(255,255,255,0.05);">&lt;span style="flex:1 1 auto;font-size:13px;color:#7c7c92;text-decoration:line-through;text-decoration-color:#e07a7a;">Pi-hole / NextDNS&lt;/span>&lt;span style="flex:0 0 auto;color:#3d3d55;font-size:13px;">&amp;rarr;&lt;/span>&lt;span style="flex:0 0 130px;font-size:13px;font-weight:600;color:#c8ff00;text-align:right;">AdGuard Home&lt;/span>&lt;span style="flex:0 0 52px;text-align:right;font-size:11px;color:#8a8aa5;font-variant-numeric:tabular-nums;">256 MB&lt;/span>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:8px;padding:8px 2px;border-bottom:1px solid rgba(255,255,255,0.05);">&lt;span style="flex:1 1 auto;font-size:13px;color:#7c7c92;text-decoration:line-through;text-decoration-color:#e07a7a;">Paid VPN / ZeroTier&lt;/span>&lt;span style="flex:0 0 auto;color:#3d3d55;font-size:13px;">&amp;rarr;&lt;/span>&lt;span style="flex:0 0 130px;font-size:13px;font-weight:600;color:#c8ff00;text-align:right;">Tailscale&lt;/span>&lt;span style="flex:0 0 52px;text-align:right;font-size:11px;color:#8a8aa5;font-variant-numeric:tabular-nums;">~0&lt;/span>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:8px;padding:8px 2px;border-bottom:1px solid rgba(255,255,255,0.05);">&lt;span style="flex:1 1 auto;font-size:13px;color:#7c7c92;text-decoration:line-through;text-decoration-color:#e07a7a;">Apple / Google Home&lt;/span>&lt;span style="flex:0 0 auto;color:#3d3d55;font-size:13px;">&amp;rarr;&lt;/span>&lt;span style="flex:0 0 130px;font-size:13px;font-weight:600;color:#c8ff00;text-align:right;">Home Assistant OS&lt;/span>&lt;span style="flex:0 0 52px;text-align:right;font-size:11px;color:#8a8aa5;font-variant-numeric:tabular-nums;">2 GB&lt;/span>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:8px;padding:8px 2px;border-bottom:1px solid rgba(255,255,255,0.05);">&lt;span style="flex:1 1 auto;font-size:13px;color:#7c7c92;text-decoration:line-through;text-decoration-color:#e07a7a;">Audible&lt;/span>&lt;span style="flex:0 0 auto;color:#3d3d55;font-size:13px;">&amp;rarr;&lt;/span>&lt;span style="flex:0 0 130px;font-size:13px;font-weight:600;color:#c8ff00;text-align:right;">AudioBookshelf&lt;/span>&lt;span style="flex:0 0 52px;text-align:right;font-size:11px;color:#8a8aa5;font-variant-numeric:tabular-nums;">1 GB&lt;/span>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:8px;padding:8px 2px;border-bottom:1px solid rgba(255,255,255,0.05);">&lt;span style="flex:1 1 auto;font-size:13px;color:#7c7c92;text-decoration:line-through;text-decoration-color:#e07a7a;">Zapier / Make&lt;/span>&lt;span style="flex:0 0 auto;color:#3d3d55;font-size:13px;">&amp;rarr;&lt;/span>&lt;span style="flex:0 0 130px;font-size:13px;font-weight:600;color:#c8ff00;text-align:right;">n8n&lt;/span>&lt;span style="flex:0 0 52px;text-align:right;font-size:11px;color:#8a8aa5;font-variant-numeric:tabular-nums;">1 GB&lt;/span>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:8px;padding:8px 2px;border-bottom:1px solid rgba(255,255,255,0.05);">&lt;span style="flex:1 1 auto;font-size:13px;color:#7c7c92;text-decoration:line-through;text-decoration-color:#e07a7a;">Notion / Confluence&lt;/span>&lt;span style="flex:0 0 auto;color:#3d3d55;font-size:13px;">&amp;rarr;&lt;/span>&lt;span style="flex:0 0 130px;font-size:13px;font-weight:600;color:#c8ff00;text-align:right;">BookStack&lt;/span>&lt;span style="flex:0 0 52px;text-align:right;font-size:11px;color:#8a8aa5;font-variant-numeric:tabular-nums;">1 GB&lt;/span>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:8px;padding:8px 2px;">&lt;span style="flex:1 1 auto;font-size:13px;color:#7c7c92;text-decoration:line-through;text-decoration-color:#e07a7a;">UptimeRobot&lt;/span>&lt;span style="flex:0 0 auto;color:#3d3d55;font-size:13px;">&amp;rarr;&lt;/span>&lt;span style="flex:0 0 130px;font-size:13px;font-weight:600;color:#c8ff00;text-align:right;">Uptime Kuma&lt;/span>&lt;span style="flex:0 0 52px;text-align:right;font-size:11px;color:#8a8aa5;font-variant-numeric:tabular-nums;">256 MB&lt;/span>&lt;/div>
&lt;/div>
&lt;div style="max-width:560px;margin:14px auto 0;border-top:2px solid #c8ff00;padding-top:12px;display:flex;flex-wrap:wrap;gap:6px;justify-content:space-between;align-items:baseline;">&lt;span style="font-size:11px;color:#9a9ab5;text-transform:uppercase;letter-spacing:0.07em;font-weight:600;">The trade&lt;/span>&lt;span style="font-size:12.5px;color:#c8c8dc;text-align:right;line-height:1.5;">~$30&amp;ndash;50/mo of SaaS &amp;rarr; one ~$170 mini PC. All 12 fit in &lt;strong style="color:#c8ff00;">~24 GB&lt;/strong> of RAM.&lt;/span>&lt;/div>
&lt;div style="text-align:right;margin-top:14px;font-size:10px;color:#44445a;">techfuelhq.com · RAM floors per each project&amp;rsquo;s docs&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR · The 12-app stack at a glance&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>Photos:&lt;/strong> &lt;strong>Immich&lt;/strong> (replaces Google Photos)&lt;/li>
&lt;li>&lt;strong>Files / sync:&lt;/strong> &lt;strong>Nextcloud AIO&lt;/strong> (replaces Dropbox + Google Drive + Office)&lt;/li>
&lt;li>&lt;strong>Passwords:&lt;/strong> &lt;strong>Vaultwarden&lt;/strong> (replaces 1Password / LastPass)&lt;/li>
&lt;li>&lt;strong>Documents:&lt;/strong> &lt;strong>Paperless-ngx&lt;/strong> (replaces filing cabinet + scanner cloud)&lt;/li>
&lt;li>&lt;strong>Media:&lt;/strong> &lt;strong>Jellyfin&lt;/strong> (replaces Netflix-style streaming)&lt;/li>
&lt;li>&lt;strong>DNS / ad blocking:&lt;/strong> &lt;strong>AdGuard Home&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Remote access:&lt;/strong> &lt;strong>Tailscale&lt;/strong> (free tier: 6 users, unlimited devices)&lt;/li>
&lt;li>&lt;strong>Smart home:&lt;/strong> &lt;strong>Home Assistant OS&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Audiobooks:&lt;/strong> &lt;strong>AudioBookshelf&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Workflow automation:&lt;/strong> &lt;strong>n8n&lt;/strong> (replaces Zapier)&lt;/li>
&lt;li>&lt;strong>Notes / wiki:&lt;/strong> &lt;strong>BookStack&lt;/strong> (replaces Notion / Confluence)&lt;/li>
&lt;li>&lt;strong>Monitoring:&lt;/strong> &lt;strong>Uptime Kuma&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p style="margin:0.75rem 0 0 0;font-size:0.9rem;color:#a0a0b8;">Full stack runs on a 32 GB Ryzen 5825U or Intel 12th-gen mini PC + 1 TB NVMe. RAM is the bottleneck — Immich + Nextcloud + HA in a VM eats 12–14 GB before any user load.&lt;/p>
&lt;/div>
&lt;h2 id="tldr--the-12-picks-voted">TL;DR — The 12 picks, voted&lt;/h2>
&lt;p>The shortlist for the &lt;strong>best self hosted apps 2026&lt;/strong> is small on purpose. Twelve services that have outgrown their SaaS originals, not fifty half-finished forks. Pi-hole gets demoted for AdGuard Home. Plex gets cut. Mail-in-a-Box does &lt;strong>not&lt;/strong> make the list — self-hosted email in 2026 is still a bad idea for almost everyone. Everything below runs in Docker, every snippet uses a pinned image tag, and the top five get full copy-paste compose files.&lt;/p>
&lt;h2 id="the-scannable-table--12-apps-what-they-replace-what-they-need">The scannable table — 12 apps, what they replace, what they need&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">#&lt;/th>
&lt;th scope="col">App&lt;/th>
&lt;th scope="col">Replaces&lt;/th>
&lt;th scope="col">Difficulty (1–5)&lt;/th>
&lt;th scope="col">Hardware floor&lt;/th>
&lt;th scope="col">Killer feature&lt;/th>
&lt;th scope="col">Verdict&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>1&lt;/td>
&lt;td>&lt;strong>Immich&lt;/strong>&lt;/td>
&lt;td>Google Photos / iCloud Photos&lt;/td>
&lt;td>3&lt;/td>
&lt;td>6 GB RAM, 2 cores, Docker&lt;/td>
&lt;td>ML face + object search that genuinely beats Google&amp;rsquo;s UI&lt;/td>
&lt;td>Ship it. The 2026 release cadence finally slowed and breaking changes are rare.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2&lt;/td>
&lt;td>&lt;strong>Nextcloud AIO&lt;/strong>&lt;/td>
&lt;td>Google Drive / Dropbox / Workspace&lt;/td>
&lt;td>3&lt;/td>
&lt;td>4 GB RAM, 2 cores&lt;/td>
&lt;td>One container manages the whole stack including backups&lt;/td>
&lt;td>Use AIO. Skip the manual compose.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>3&lt;/td>
&lt;td>&lt;strong>Vaultwarden&lt;/strong>&lt;/td>
&lt;td>Bitwarden cloud / 1Password&lt;/td>
&lt;td>1&lt;/td>
&lt;td>256 MB RAM&lt;/td>
&lt;td>Bitwarden-compatible, runs on a potato, end-to-end encrypted&lt;/td>
&lt;td>Easiest win on the list.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>4&lt;/td>
&lt;td>&lt;strong>Paperless-ngx&lt;/strong>&lt;/td>
&lt;td>Evernote / Dropbox Scan / paper&lt;/td>
&lt;td>3&lt;/td>
&lt;td>2 GB RAM, OCR is CPU-hungry&lt;/td>
&lt;td>Tika + OCR + tagging makes paper actually searchable&lt;/td>
&lt;td>Replace your filing cabinet.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>5&lt;/td>
&lt;td>&lt;strong>Jellyfin&lt;/strong>&lt;/td>
&lt;td>Plex / Netflix / Disney+&lt;/td>
&lt;td>2&lt;/td>
&lt;td>4 GB RAM, Intel iGPU for transcode&lt;/td>
&lt;td>No subscriptions, no phoning home, hardware transcoding works&lt;/td>
&lt;td>Still the Plex-killer. AMD GPUs remain weak for transcode.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>6&lt;/td>
&lt;td>&lt;strong>AdGuard Home&lt;/strong>&lt;/td>
&lt;td>Pi-hole / NextDNS&lt;/td>
&lt;td>1&lt;/td>
&lt;td>256 MB RAM&lt;/td>
&lt;td>DNS-over-HTTPS upstream + per-client rules in a clean UI&lt;/td>
&lt;td>Picked over Pi-hole for the better UI.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>7&lt;/td>
&lt;td>&lt;strong>Tailscale&lt;/strong> (or Headscale)&lt;/td>
&lt;td>Tailscale itself, ZeroTier, paid VPN&lt;/td>
&lt;td>1 (Tailscale) / 4 (Headscale)&lt;/td>
&lt;td>Negligible&lt;/td>
&lt;td>WireGuard mesh that punches NAT and &amp;ldquo;just works&amp;rdquo;&lt;/td>
&lt;td>Tailscale free tier is enough for most. Headscale only if you want zero vendor.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>8&lt;/td>
&lt;td>&lt;strong>Home Assistant OS&lt;/strong>&lt;/td>
&lt;td>Apple Home / Google Home / SmartThings&lt;/td>
&lt;td>4&lt;/td>
&lt;td>2 GB RAM, 32 GB disk, x86-64&lt;/td>
&lt;td>Local control, no cloud dependency, every protocol&lt;/td>
&lt;td>Run it as a VM, not a container.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>9&lt;/td>
&lt;td>&lt;strong>AudioBookshelf&lt;/strong>&lt;/td>
&lt;td>Audible / Libby&lt;/td>
&lt;td>2&lt;/td>
&lt;td>1 GB RAM&lt;/td>
&lt;td>Tracks progress per-user across devices, podcast support included&lt;/td>
&lt;td>Drop-in for an Audible library you already own.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>10&lt;/td>
&lt;td>&lt;strong>n8n&lt;/strong>&lt;/td>
&lt;td>Zapier / Make / IFTTT&lt;/td>
&lt;td>3&lt;/td>
&lt;td>1 GB RAM&lt;/td>
&lt;td>400+ integrations, queue mode for real workloads&lt;/td>
&lt;td>Beats Zapier for anything serious. Tax: you maintain it.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>11&lt;/td>
&lt;td>&lt;strong>BookStack&lt;/strong>&lt;/td>
&lt;td>Notion / Confluence (read-mostly)&lt;/td>
&lt;td>2&lt;/td>
&lt;td>1 GB RAM&lt;/td>
&lt;td>Books → Chapters → Pages structure that doesn&amp;rsquo;t fight you&lt;/td>
&lt;td>Picked over Outline for simpler hosting.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>12&lt;/td>
&lt;td>&lt;strong>Uptime Kuma&lt;/strong>&lt;/td>
&lt;td>UptimeRobot / Better Stack&lt;/td>
&lt;td>1&lt;/td>
&lt;td>256 MB RAM&lt;/td>
&lt;td>Self-hostable status page for friends and family&lt;/td>
&lt;td>The first thing every homelab should add after DNS.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>That&amp;rsquo;s the list. Below: what got cut, then deeper dives and copy-paste compose files for the top five.&lt;/p>
&lt;h2 id="what-got-cut-and-why">What got cut and why&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Plex&lt;/strong> — not a SaaS replacement; it &lt;em>is&lt;/em> the SaaS. Jellyfin replaces Plex.&lt;/li>
&lt;li>&lt;strong>Pi-hole&lt;/strong> — voted out for AdGuard Home. The DNS-over-HTTPS upstream and per-client rules in AdGuard&amp;rsquo;s UI are meaningfully better, and the Docker deploy is identical in difficulty. Pi-hole still works fine if you already run it.&lt;/li>
&lt;li>&lt;strong>Seafile&lt;/strong> — solid block-sync, but Nextcloud AIO has closed the gap and the ecosystem (calendar, contacts, office) is broader.&lt;/li>
&lt;li>&lt;strong>Plausible CE / Umami / Mealie / FreshRSS / Linkding&lt;/strong> — all good, all on the bench. They didn&amp;rsquo;t beat the 12 above on either daily use or obvious SaaS replacement. If a self-hosted &lt;strong>bookmark manager&lt;/strong> is specifically what you&amp;rsquo;re after, Linkding is fine but the two strongest options get their own head-to-head in &lt;a href="https://techfuelhq.com/homelab/karakeep-vs-linkwarden-2026/">Karakeep vs Linkwarden&lt;/a>. If what you actually want is somewhere to &lt;em>read&lt;/em> saved articles rather than file links — the job Pocket used to do before Mozilla shut it down — that is a different category, covered in &lt;a href="https://techfuelhq.com/homelab/self-hosted-read-it-later-2026/">self-hosted read-it-later apps&lt;/a>.&lt;/li>
&lt;li>&lt;strong>Mail-in-a-Box / Mailcow&lt;/strong> — explicitly cut. Self-hosted outbound email in 2026 still gets your IP scored as suspicious by Microsoft and Google more often than not, and inbound MX is fine until your dynamic IP changes or your ISP blocks port 25. Use a paid relay (Fastmail, Migadu, Proton) and move on. The long-running &lt;a href="https://www.reddit.com/r/selfhosted/wiki/email/" rel="noopener">r/selfhosted email threads&lt;/a> say the same thing in nicer language.&lt;/li>
&lt;li>&lt;strong>Matrix / Mattermost / Rocket.Chat&lt;/strong> — a self-hosted chat server is its own category, not a general SaaS swap, so it sits outside this list. There is also no drop-in clone of Discord&amp;rsquo;s text-plus-voice bundle in 2026, and the voice/video story is the part most roundups skip. If replacing a Discord community or a team chat is what you actually want, the &lt;a href="https://techfuelhq.com/articles/self-hosted-discord-alternatives-2026/">self-hosted Discord alternatives comparison&lt;/a> breaks down which tool fits and the honest voice/video reality.&lt;/li>
&lt;/ul>
&lt;p>A difficulty score of 1 is &amp;ldquo;single container, defaults work, ten-minute deploy.&amp;rdquo; A 5 is &amp;ldquo;you&amp;rsquo;ll read documentation for a weekend and read it again at the next major upgrade.&amp;rdquo; Most of the 12 land at 1–3 — the apps that survive in homelabs are the ones where the 80% case is boring.&lt;/p>
&lt;h2 id="where-to-actually-start">Where to actually start&lt;/h2>
&lt;p>Twelve services is a to-do list that stalls before it starts. It shouldn&amp;rsquo;t. The stack has a natural order — you do not stand up Immich and Home Assistant on day one. You stand up the ten-minute wins first, get the dopamine hit of a working service, then climb. This is the sequence I hand anyone who asks.&lt;/p>
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;padding:26px 22px 22px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;border-radius:8px;">
&lt;div style="text-align:center;margin-bottom:22px;">&lt;div style="font-size:18px;font-weight:600;letter-spacing:-0.3px;">The build order — don&amp;rsquo;t deploy all 12 at once&lt;/div>&lt;div style="font-size:12px;color:#9a9ab5;margin-top:5px;">Climb the effort curve. Each phase earns you the confidence for the next.&lt;/div>&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;gap:14px;align-items:stretch;max-width:860px;margin:0 auto;">
&lt;div style="flex:1 1 240px;background:linear-gradient(160deg,rgba(93,202,122,0.12),rgba(93,202,122,0.03));border:1px solid rgba(93,202,122,0.35);border-radius:12px;padding:16px 16px 14px;">
&lt;div style="font-size:11px;color:#5dca7a;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;">Phase 1 · Day one&lt;/div>
&lt;div style="font-size:13px;color:#8a8aa5;margin:3px 0 12px;">Ten-minute wins. Single container, defaults work.&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;gap:6px;">
&lt;span style="font-size:12px;font-weight:600;background:rgba(93,202,122,0.14);border:1px solid rgba(93,202,122,0.3);color:#a8e6b8;border-radius:20px;padding:3px 10px;">Vaultwarden&lt;/span>
&lt;span style="font-size:12px;font-weight:600;background:rgba(93,202,122,0.14);border:1px solid rgba(93,202,122,0.3);color:#a8e6b8;border-radius:20px;padding:3px 10px;">AdGuard Home&lt;/span>
&lt;span style="font-size:12px;font-weight:600;background:rgba(93,202,122,0.14);border:1px solid rgba(93,202,122,0.3);color:#a8e6b8;border-radius:20px;padding:3px 10px;">Uptime Kuma&lt;/span>
&lt;span style="font-size:12px;font-weight:600;background:rgba(93,202,122,0.14);border:1px solid rgba(93,202,122,0.3);color:#a8e6b8;border-radius:20px;padding:3px 10px;">Tailscale&lt;/span>
&lt;/div>
&lt;div style="font-size:11.5px;color:#7c8a80;margin-top:12px;line-height:1.5;">Passwords, network-wide ad blocking, monitoring, and remote access. Under &lt;strong style="color:#a8e6b8;">1 GB&lt;/strong> combined. Nothing here can hurt you.&lt;/div>
&lt;/div>
&lt;div style="flex:1 1 240px;background:linear-gradient(160deg,rgba(0,164,220,0.12),rgba(0,164,220,0.03));border:1px solid rgba(0,164,220,0.35);border-radius:12px;padding:16px 16px 14px;">
&lt;div style="font-size:11px;color:#43b7dd;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;">Phase 2 · First weekend&lt;/div>
&lt;div style="font-size:13px;color:#8a8aa5;margin:3px 0 12px;">Your media and library. An afternoon each.&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;gap:6px;">
&lt;span style="font-size:12px;font-weight:600;background:rgba(0,164,220,0.13);border:1px solid rgba(0,164,220,0.3);color:#8fd6ec;border-radius:20px;padding:3px 10px;">Jellyfin&lt;/span>
&lt;span style="font-size:12px;font-weight:600;background:rgba(0,164,220,0.13);border:1px solid rgba(0,164,220,0.3);color:#8fd6ec;border-radius:20px;padding:3px 10px;">Immich&lt;/span>
&lt;span style="font-size:12px;font-weight:600;background:rgba(0,164,220,0.13);border:1px solid rgba(0,164,220,0.3);color:#8fd6ec;border-radius:20px;padding:3px 10px;">AudioBookshelf&lt;/span>
&lt;span style="font-size:12px;font-weight:600;background:rgba(0,164,220,0.13);border:1px solid rgba(0,164,220,0.3);color:#8fd6ec;border-radius:20px;padding:3px 10px;">BookStack&lt;/span>
&lt;/div>
&lt;div style="font-size:11.5px;color:#7a8a92;margin-top:12px;line-height:1.5;">The apps you&amp;rsquo;ll actually open daily. Immich&amp;rsquo;s first library import pins a couple of cores for hours &amp;mdash; start it before bed.&lt;/div>
&lt;/div>
&lt;div style="flex:1 1 240px;background:linear-gradient(160deg,rgba(229,160,13,0.11),rgba(229,160,13,0.03));border:1px solid rgba(229,160,13,0.32);border-radius:12px;padding:16px 16px 14px;">
&lt;div style="font-size:11px;color:#e5a00d;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;">Phase 3 · Once you&amp;rsquo;re hooked&lt;/div>
&lt;div style="font-size:13px;color:#8a8aa5;margin:3px 0 12px;">The heavy hitters. Read the docs; plan a weekend.&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;gap:6px;">
&lt;span style="font-size:12px;font-weight:600;background:rgba(229,160,13,0.13);border:1px solid rgba(229,160,13,0.3);color:#e6c583;border-radius:20px;padding:3px 10px;">Nextcloud AIO&lt;/span>
&lt;span style="font-size:12px;font-weight:600;background:rgba(229,160,13,0.13);border:1px solid rgba(229,160,13,0.3);color:#e6c583;border-radius:20px;padding:3px 10px;">Paperless-ngx&lt;/span>
&lt;span style="font-size:12px;font-weight:600;background:rgba(229,160,13,0.13);border:1px solid rgba(229,160,13,0.3);color:#e6c583;border-radius:20px;padding:3px 10px;">n8n&lt;/span>
&lt;span style="font-size:12px;font-weight:600;background:rgba(229,160,13,0.13);border:1px solid rgba(229,160,13,0.3);color:#e6c583;border-radius:20px;padding:3px 10px;">Home Assistant&lt;/span>
&lt;/div>
&lt;div style="font-size:11.5px;color:#928772;margin-top:12px;line-height:1.5;">Real commitments with real upside. Home Assistant especially is a hobby, not a deploy &amp;mdash; run it as a VM, not a container.&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="text-align:right;margin-top:16px;font-size:10px;color:#44445a;">techfuelhq.com · ordering by setup difficulty (see the table above)&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="the-top-5--full-setups">The top 5 — full setups&lt;/h2>
&lt;h3 id="1-immich--the-google-photos-replacement-that-finally-works">1. Immich — the Google Photos replacement that finally works&lt;/h3>
&lt;p>Immich is the reason a lot of people built their first homelab in 2025. The mobile app uploads from iOS and Android in the background, the ML stack identifies faces and objects locally, and the timeline UI beats Google Photos for most operations. The catch is RAM — the ML container alone wants ~2 GB at idle, and library import will pin a couple of cores for hours on a fresh install.&lt;/p>
&lt;p>The official path is the &lt;a href="https://docs.immich.app/install/docker-compose" rel="noopener">Immich docker-compose template&lt;/a> plus the bundled &lt;code>.env&lt;/code> file. Pin the version explicitly — &lt;code>release&lt;/code> is a moving tag and breaking schema changes have happened mid-year before. Per the &lt;a href="https://github.com/immich-app/immich/releases" rel="noopener">Immich releases page&lt;/a> the current stable is &lt;code>v3.0.3&lt;/code> (the &lt;code>v1.x&lt;/code> line older guides pin is long superseded — Immich moved fast in 2026); pin the latest tagged release on install day. One upstream change worth knowing: Immich now ships &lt;strong>Valkey&lt;/strong>, the Redis-compatible fork, in place of Redis — the compose below reflects that.&lt;/p>
&lt;p>Critical detail: &lt;strong>Immich is not a backup&lt;/strong>. The database can corrupt. Use &lt;a href="https://docs.immich.app/administration/backup-and-restore" rel="noopener">Immich&amp;rsquo;s official backup guide&lt;/a> and keep originals on a separate disk from the Immich Postgres.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># docker-compose.yml — Immich, pinned&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Source: https://github.com/immich-app/immich/releases (pin to latest tag on install)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">name&lt;/span>: &lt;span style="color:#ae81ff">immich&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">services&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">immich-server&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">ghcr.io/immich-app/immich-server:v3.0.3&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">extends&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">file&lt;/span>: &lt;span style="color:#ae81ff">hwaccel.transcoding.yml&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">service&lt;/span>: &lt;span style="color:#ae81ff">quicksync&lt;/span> &lt;span style="color:#75715e"># change to &amp;#39;cpu&amp;#39; if no Intel iGPU&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">${UPLOAD_LOCATION}:/usr/src/app/upload&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">/etc/localtime:/etc/localtime:ro&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">env_file&lt;/span>: &lt;span style="color:#ae81ff">.env&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">ports&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">2283&lt;/span>:&lt;span style="color:#ae81ff">2283&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">depends_on&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">redis&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">database&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">always&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">immich-machine-learning&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">ghcr.io/immich-app/immich-machine-learning:v3.0.3&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">model-cache:/cache&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">env_file&lt;/span>: &lt;span style="color:#ae81ff">.env&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">always&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">redis&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># Immich ships Valkey (a drop-in Redis fork) upstream as of the 2026 releases&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">docker.io/valkey/valkey:9@sha256:4963247afc4cd33c7d3b2d2816b9f7f8eeebab148d29056c2ca4d7cbc966f2d9&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">always&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">database&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">environment&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">POSTGRES_PASSWORD&lt;/span>: &lt;span style="color:#ae81ff">${DB_PASSWORD}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">POSTGRES_USER&lt;/span>: &lt;span style="color:#ae81ff">${DB_USERNAME}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">POSTGRES_DB&lt;/span>: &lt;span style="color:#ae81ff">${DB_DATABASE_NAME}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">POSTGRES_INITDB_ARGS&lt;/span>: &lt;span style="color:#e6db74">&amp;#39;--data-checksums&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">${DB_DATA_LOCATION}:/var/lib/postgresql/data&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">always&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">model-cache&lt;/span>:
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="2-nextcloud-aio--file-sync-calendar-contacts-in-one-container">2. Nextcloud AIO — file sync, calendar, contacts, in one container&lt;/h3>
&lt;p>The official &lt;a href="https://github.com/nextcloud/all-in-one" rel="noopener">Nextcloud All-in-One&lt;/a> project ships everything — Apache, PHP, the database, Redis, the office stack, Talk, the backup container — managed by a single mastercontainer that you talk to over a web UI on port 8080. It is the right answer for new self-hosters and for experienced ones who got tired of debugging PHP-FPM at 1 a.m.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># One-liner from the official AIO README&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo docker run &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --init &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --sig-proxy&lt;span style="color:#f92672">=&lt;/span>false &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --name nextcloud-aio-mastercontainer &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --restart always &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --publish 80:80 &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --publish 8080:8080 &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --publish 8443:8443 &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --volume /var/run/docker.sock:/var/run/docker.sock:ro &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> ghcr.io/nextcloud-releases/all-in-one:latest
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The &lt;code>latest&lt;/code> tag here is the AIO mastercontainer, which the project explicitly maintains as the supported entry point — the actual Nextcloud server image &lt;em>underneath&lt;/em> gets pinned by AIO to a tested release. That&amp;rsquo;s the one place I make an exception to the &amp;ldquo;no &lt;code>:latest&lt;/code>&amp;rdquo; rule. If you want full version control, watch the &lt;a href="https://github.com/nextcloud/all-in-one/releases" rel="noopener">Nextcloud AIO releases page&lt;/a> and use a digest pin instead.&lt;/p>
&lt;p>AIO turns on file sync, CalDAV, CardDAV, and Collabora office editing by default. The performance ceiling on a &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">budget mini PC&lt;/a> with 16 GB of RAM is around 4–5 active users on a 2.5 GbE network. Beyond that, tune Redis cache before blaming the box.&lt;/p>
&lt;p>For the complete setup — NPM reverse proxy config, Office activation, CalDAV/CardDAV client setup, and AIO backup — see the &lt;a href="https://techfuelhq.com/tutorials/nextcloud-aio-docker-setup-2026/">Nextcloud AIO Docker setup guide&lt;/a>.&lt;/p>
&lt;h3 id="3-vaultwarden--bitwarden-on-a-potato">3. Vaultwarden — Bitwarden, on a potato&lt;/h3>
&lt;p>Vaultwarden is a Rust reimplementation of the Bitwarden server API by &lt;a href="https://github.com/dani-garcia/vaultwarden" rel="noopener">dani-garcia&lt;/a>. The current stable line is &lt;strong>1.36.x&lt;/strong> as of early 2026, per the &lt;a href="https://github.com/dani-garcia/vaultwarden/releases" rel="noopener">Vaultwarden releases&lt;/a>. It is fully compatible with the official Bitwarden mobile, browser, and desktop clients, which is the whole point — your phone doesn&amp;rsquo;t know it&amp;rsquo;s not talking to Bitwarden&amp;rsquo;s cloud. For the server-choice decision behind that — the official Bitwarden server&amp;rsquo;s eleven-container stack versus this single container, and exactly which features you trade away — see &lt;a href="https://techfuelhq.com/homelab/vaultwarden-vs-bitwarden-2026/">Vaultwarden vs Bitwarden&lt;/a>.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># docker-compose.yml — Vaultwarden, version-pinned&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">services&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">vaultwarden&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">vaultwarden/server:1.36.0-alpine&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">vaultwarden&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">unless-stopped&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">environment&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">DOMAIN&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;https://vault.example.lan&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">SIGNUPS_ALLOWED&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;false&amp;#34;&lt;/span> &lt;span style="color:#75715e"># flip to true for first user, then back&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">ADMIN_TOKEN&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;${ADMIN_TOKEN}&amp;#34;&lt;/span> &lt;span style="color:#75715e"># generate with: openssl rand -base64 48&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">WEBSOCKET_ENABLED&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;true&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">./vw-data:/data&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">ports&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">8222&lt;/span>:&lt;span style="color:#ae81ff">80&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Two things people miss. Vaultwarden needs a real TLS cert for mobile clients — put it behind Caddy or Traefik with Let&amp;rsquo;s Encrypt, or use &lt;a href="https://tailscale.com/kb/1223/funnel" rel="noopener">Tailscale Funnel&lt;/a> for a zero-config TLS path. And &lt;strong>back up &lt;code>./vw-data&lt;/code> somewhere off the host&lt;/strong> — a vault you can&amp;rsquo;t restore is a vault you don&amp;rsquo;t have. The &lt;a href="https://techfuelhq.com/tutorials/vaultwarden-proxmox-2026/">Vaultwarden on Proxmox setup guide&lt;/a> covers Caddy reverse proxy, the Tailscale-only setup path, and an automated SQLite backup script with online backup API support.&lt;/p>
&lt;h3 id="4-jellyfin--plex-without-the-company">4. Jellyfin — Plex without the company&lt;/h3>
&lt;p>Jellyfin is the mature fork of Emby. It does what Plex does — library scanning, transcoding, mobile and TV apps — without phoning home, without watching your viewing history, and without a &amp;ldquo;Pass&amp;rdquo; subscription gating hardware acceleration.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># docker-compose.yml — Jellyfin with Intel Quick Sync transcoding&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">services&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">jellyfin&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">lscr.io/linuxserver/jellyfin:10.11.11&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">jellyfin&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">environment&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">PUID=1000&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">PGID=1000&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">TZ=America/Chicago&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">JELLYFIN_PublishedServerUrl=http://192.168.1.50:8096&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">devices&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">/dev/dri:/dev/dri &lt;/span> &lt;span style="color:#75715e"># Intel iGPU passthrough for QSV&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">./config:/config&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">/srv/media:/data/media:ro&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">ports&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ae81ff">8096&lt;/span>:&lt;span style="color:#ae81ff">8096&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">unless-stopped&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Intel Quick Sync is what makes Jellyfin viable on a &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">budget mini PC&lt;/a>. N100 and 12th-gen-or-newer iGPUs handle 4K HEVC decode without breaking a sweat. AMD GPUs on Linux remain weaker for transcode in 2026 — if your homelab is AMD-only, plan for direct-play clients (NVIDIA Shield, Apple TV, a recent smart TV). The Jellyfin team keeps a clear &lt;a href="https://jellyfin.org/docs/general/post-install/transcoding/hardware-acceleration/" rel="noopener">hardware acceleration matrix&lt;/a>; read it before you buy a box.&lt;/p>
&lt;h3 id="5-home-assistant-os--local-first-smart-home">5. Home Assistant OS — local-first smart home&lt;/h3>
&lt;p>Home Assistant is on this list because it replaces Apple Home, Google Home, and SmartThings simultaneously, and because the cloud-dependency stories from those vendors keep getting worse. It is &lt;strong>not&lt;/strong> on this list because it is easy. It is rated 4/5 on difficulty for a reason: deep automation requires real time investment.&lt;/p>
&lt;p>The recommended path in 2026 is still &lt;strong>Home Assistant OS&lt;/strong> running as a VM, not the Docker container. Per the &lt;a href="https://www.home-assistant.io/installation/" rel="noopener">official installation docs&lt;/a>, the container variant loses the Supervisor and the add-on ecosystem, and the add-on ecosystem (Mosquitto, Zigbee2MQTT, ESPHome, the official Z-Wave stack) is most of what makes HA worth running.&lt;/p>
&lt;p>For a Proxmox host, the &lt;a href="https://tteck.github.io/Proxmox/" rel="noopener">tteck Proxmox Helper Scripts&lt;/a> (now community-maintained at &lt;a href="https://github.com/community-scripts/ProxmoxVE" rel="noopener">community-scripts/ProxmoxVE&lt;/a>) install HA OS as a VM in about three minutes. That&amp;rsquo;s the path. Allocate 2 GB RAM, 2 vCPUs, 32 GB disk, and pass through a USB Zigbee/Z-Wave coordinator if you have one. See the &lt;a href="https://techfuelhq.com/homelab/proxmox-truenas-unraid-storage-backend-2026/">Proxmox vs TrueNAS vs Unraid comparison&lt;/a> for which hypervisor fits your situation.&lt;/p>
&lt;p>The &lt;a href="https://www.home-assistant.io/blog/2026/03/04/release-20263/" rel="noopener">Home Assistant 2026.3 release notes&lt;/a> confirmed the move to zstd-compressed container images, which broke a few older Synology installs but is fine on any modern Docker. Read release notes before every monthly upgrade. HA breaks integrations a few times a year — upgrades are not background tasks.&lt;/p>
&lt;h2 id="the-other-7--short-notes">The other 7 — short notes&lt;/h2>
&lt;h3 id="adguard-home-replaces-pi-hole-nextdns-your-routers-bad-ad-blocker">AdGuard Home (replaces Pi-hole, NextDNS, your router&amp;rsquo;s bad ad blocker)&lt;/h3>
&lt;p>Pin &lt;code>adguard/adguardhome:v0.107.x&lt;/code>. Run it on the same box as Uptime Kuma. Point your router&amp;rsquo;s DHCP DNS at the AdGuard container IP and every device on your network — phones, smart TVs, the IoT garbage — gets DNS-level filtering with zero per-device setup. The DoH/DoT upstream config is in the UI; switch it to Quad9 or Cloudflare 1.1.1.1 and you&amp;rsquo;ve also leaked less DNS to your ISP than you did last week.&lt;/p>
&lt;p>The &lt;a href="https://techfuelhq.com/tutorials/adguard-home-local-dns-proxmox-2026/">AdGuard Home + Local DNS on Proxmox tutorial&lt;/a> covers the LXC setup from scratch: port 53 in an unprivileged container, OISD and Steven Black blocklists, local A records for &lt;code>pve.lan&lt;/code> / &lt;code>nas.lan&lt;/code>, and an optional Unbound recursive resolver that cuts upstream providers out entirely.&lt;/p>
&lt;h3 id="tailscale-replaces-tailscale-zerotier-paid-commercial-vpn">Tailscale (replaces Tailscale, ZeroTier, paid commercial VPN)&lt;/h3>
&lt;p>Yes, Tailscale is technically a SaaS for the coordinator. The free personal tier (6 users and unlimited user devices) is enough for almost every homelab, and the WireGuard data plane runs entirely peer-to-peer once peers are connected. The right way to read this is: Tailscale replaces commercial OpenVPN/WireGuard services and ZeroTier, both of which are also SaaS. If you are choosing between those last two, see &lt;a href="https://techfuelhq.com/networking/zerotier-vs-tailscale-2026/">ZeroTier vs Tailscale&lt;/a>. If you genuinely refuse the coordinator, &lt;a href="https://github.com/juanfont/headscale" rel="noopener">Headscale&lt;/a> is the open-source alternative — but plan for a difficulty score of 4, not 1. And if the real question is how to reach these services from outside your LAN at all, &lt;a href="https://techfuelhq.com/networking/tailscale-vs-cloudflare-tunnel-2026/">Tailscale vs Cloudflare Tunnel&lt;/a> covers the private-network-versus-public-tunnel split and the current free-tier limits, which have moved past the numbers above.&lt;/p>
&lt;h3 id="audiobookshelf-replaces-audible">AudioBookshelf (replaces Audible)&lt;/h3>
&lt;p>If you already own audiobooks (legitimately, ideally), AudioBookshelf gives you per-user progress sync, mobile apps, and podcast support. Single container, no companion services, about 100 MB idle RAM — the lightest useful self-hosted app on this list. The iOS and Android apps are official and free. Podcast RSS auto-download is built in. Pin &lt;code>ghcr.io/advplyr/audiobookshelf:latest&lt;/code>. Full setup with library directory structure, mobile app config, metadata matching, and Tailscale remote access is in the &lt;a href="https://techfuelhq.com/tutorials/audiobookshelf-docker-setup-2026/">AudioBookshelf Docker guide&lt;/a>.&lt;/p>
&lt;h3 id="n8n-replaces-zapier-make-ifttt">n8n (replaces Zapier, Make, IFTTT)&lt;/h3>
&lt;p>400+ integrations, a real queue mode for production workloads, and the ability to drop into JavaScript when the visual builder won&amp;rsquo;t do what you need. Pin to a specific tag — n8n&amp;rsquo;s &lt;code>latest&lt;/code> has shipped breaking workflow changes inside a single major release before. The &lt;a href="https://hub.docker.com/r/n8nio/n8n" rel="noopener">n8n Docker image page&lt;/a> maintains tags per release; pick the current stable on install day.&lt;/p>
&lt;p>For the full setup — PostgreSQL backend, Nginx Proxy Manager HTTPS, queue mode with Redis, and backup strategy — see the &lt;a href="https://techfuelhq.com/tutorials/n8n-self-hosted-docker-2026/">n8n self-hosted Docker guide&lt;/a>.&lt;/p>
&lt;h3 id="bookstack-replaces-notion-as-a-wiki--docs-site">BookStack (replaces Notion as a wiki / docs site)&lt;/h3>
&lt;p>For pure note-taking, Obsidian beats every self-hosted option. For a team or family &lt;strong>wiki&lt;/strong> — recipes, runbooks, &amp;ldquo;how the network is set up&amp;rdquo; — BookStack is the right answer. Outline is also good but the hosting story is harder. The stack is two containers (BookStack + MySQL) with about 180 MB idle RAM — the lightest wiki option on this list. Pin &lt;code>lscr.io/linuxserver/bookstack:latest&lt;/code> and configure LDAP if you&amp;rsquo;re already running &lt;a href="https://techfuelhq.com/homelab/authelia-vs-authentik-2026/">Authentik&lt;/a> or Keycloak for unified auth. Full setup with MySQL, NPM HTTPS, LDAP, and backup is in the &lt;a href="https://techfuelhq.com/tutorials/bookstack-docker-self-hosted-2026/">BookStack Docker guide&lt;/a>.&lt;/p>
&lt;h3 id="uptime-kuma-replaces-uptimerobot-better-stack">Uptime Kuma (replaces UptimeRobot, Better Stack)&lt;/h3>
&lt;p>Already covered in &lt;a href="https://techfuelhq.com/articles/self-hosting-essentials/">the self-hosting essentials guide&lt;/a>. It belongs here because once you have 12 services running, you need to know which one died at 2 a.m. before your family tells you the internet is &amp;ldquo;broken.&amp;rdquo; Pin &lt;code>louislam/uptime-kuma:1.23.x&lt;/code>.&lt;/p>
&lt;h3 id="paperless-ngx-replaces-evernote-scan-dropbox-scan-paper">Paperless-ngx (replaces Evernote scan, Dropbox Scan, paper)&lt;/h3>
&lt;p>Drop a PDF in the consume folder, OCR runs, the document is tagged, you can full-text-search five years of mail in seconds. Pin &lt;code>ghcr.io/paperless-ngx/paperless-ngx:2&lt;/code> and run PostgreSQL next to it — not SQLite, which write-locks under concurrent requests. Add Tika and Gotenberg containers alongside; without them, Word and Excel files ingest silently with no searchable text. The full compose stack with correspondent auto-tagging, subdirectory tag mapping, and NPM HTTPS is in the &lt;a href="https://techfuelhq.com/tutorials/paperless-ngx-docker-setup-2026/">Paperless-ngx setup guide&lt;/a>.&lt;/p>
&lt;h2 id="what-hardware-actually-runs-all-12">What hardware actually runs all 12&lt;/h2>
&lt;p>Rough memory budget: ~24 GB RAM if you run everything simultaneously with realistic headroom. CPU is less of a problem than people think — Immich&amp;rsquo;s ML is the spike, and the rest idle hard.&lt;/p>
&lt;p>The &lt;a href="https://techfuelhq.com/homelab/proxmox-truenas-unraid-storage-backend-2026/">Proxmox vs TrueNAS vs Unraid comparison&lt;/a> covers the OS choice. For hardware, &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">Best Mini PCs for a Homelab in 2026&lt;/a> lands on a 32 GB Ryzen 5825U or Intel 12th-gen-or-newer box, NVMe boot, separate disk for media. If you&amp;rsquo;re starting from a single mini PC and have never set up Proxmox, the &lt;a href="https://techfuelhq.com/articles/proxmox-mini-pc-setup/">Proxmox mini PC setup walkthrough&lt;/a> is the next read. If you have an old gaming PC sitting in a closet, the &lt;a href="https://techfuelhq.com/articles/repurpose-gaming-pc-proxmox-server-2026/">repurpose-as-server guide&lt;/a> skips the hardware purchase entirely. For the complete Docker Compose stack — NPM + Portainer + Uptime Kuma + Watchtower + &lt;a href="https://techfuelhq.com/homelab/forgejo-vs-gitea-2026/">Gitea&lt;/a> with working compose files and a shared proxy network — the &lt;a href="https://techfuelhq.com/tutorials/docker-compose-starter-stack-homelab-2026/">Docker Compose starter stack tutorial&lt;/a> has everything wired together.&lt;/p>
&lt;h2 id="does-it-actually-save-money">Does it actually save money?&lt;/h2>
&lt;p>The &lt;a href="https://techfuelhq.com/tools/selfhost-breakeven/">Self-Hosting Break-Even Calculator&lt;/a> answers this for your specific situation — add your subscriptions, set your hardware budget, and see exactly when self-hosting pays for itself. Spoiler: replacing $30–50/month in SaaS with a $170 mini PC usually breaks even in under 6 months.&lt;/p>
&lt;h2 id="pick-the-box-that-runs-the-stack">Pick the box that runs the stack&lt;/h2>
&lt;p>The 12-app stack needs a real host. The &lt;a href="https://techfuelhq.com/tools/pc-builder/">TechFuelHQ PC Builder&lt;/a> checks socket / RAM / PSU / GPU clearance compatibility for the AM4, AM5, and Intel platforms that pair well with Docker stacks. For mini-PC turnkey picks, the &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">mini-PC homelab guide&lt;/a> covers Minisforum MS-01 (10GbE for storage-heavy stacks) and the cheap used-OptiPlex path. If your stack outgrows a single 2.5GbE link, the &lt;a href="https://techfuelhq.com/networking/10gbe-home-networking-budget-2026/">10GbE homelab networking guide&lt;/a> covers the cheap switch options.&lt;/p>
&lt;h2 id="sources-and-methodology">Sources and methodology&lt;/h2>
&lt;p>App recommendations synthesize maintainer documentation, deployment guides, and the maintained Docker image tags as of 2026-06-10. RAM and CPU footprint figures are taken from each project&amp;rsquo;s published documentation.&lt;/p>
&lt;p>&lt;strong>Primary sources cited:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://immich.app/docs/overview/introduction" rel="noopener">Immich docs&lt;/a> — official Immich documentation&lt;/li>
&lt;li>&lt;a href="https://github.com/nextcloud/all-in-one" rel="noopener">Nextcloud AIO docs&lt;/a> — official Nextcloud All-In-One reference&lt;/li>
&lt;li>&lt;a href="https://github.com/dani-garcia/vaultwarden/wiki" rel="noopener">Vaultwarden wiki&lt;/a> — official documentation&lt;/li>
&lt;li>&lt;a href="https://jellyfin.org/docs/" rel="noopener">Jellyfin docs&lt;/a> — official Jellyfin reference&lt;/li>
&lt;li>&lt;a href="https://github.com/AdguardTeam/AdGuardHome" rel="noopener">AdGuard Home&lt;/a> — project documentation&lt;/li>
&lt;li>&lt;a href="https://tailscale.com/kb/" rel="noopener">Tailscale docs&lt;/a> — official documentation and free-tier limits&lt;/li>
&lt;li>&lt;a href="https://www.home-assistant.io/docs/" rel="noopener">Home Assistant docs&lt;/a> — official OS installation guide&lt;/li>
&lt;li>&lt;a href="https://www.reddit.com/r/selfhosted/" rel="noopener">r/selfhosted community&lt;/a> — community deployment reports&lt;/li>
&lt;/ul>
&lt;p>Email corrections to &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a>.&lt;/p>
&lt;script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Self-Hosted Apps Worth Running in 2026: The 12 That Actually Replace SaaS",
"image": "https://techfuelhq.com/images/og-default.png",
"description": "The best self hosted apps 2026: 12 mature open-source services that genuinely replace Google Photos, Drive, Bitwarden, Plex, Notion, Zapier, and more.",
"datePublished": "2026-05-01T00:00:00-05:00",
"dateModified": "2026-05-01T00:00:00-05:00",
"author": {
"@type": "Person",
"name": "Lowell K. Wood IV",
"alternateName": "LK Wood IV",
"url": "https://techfuelhq.com/about/",
"email": "hello@techfuelhq.com",
"sameAs": ["https://github.com/iBlessi"],
"address": {
"@type": "PostalAddress",
"addressLocality": "St. Louis County",
"addressRegion": "MO",
"addressCountry": "US"
}
},
"publisher": {
"@type": "Organization",
"name": "TechFuel HQ",
"url": "https://techfuelhq.com"
},
"mainEntityOfPage": "https://techfuelhq.com/articles/self-hosted-apps-replace-saas-2026/",
"keywords": "best self hosted apps 2026, self-hosted SaaS alternatives, Immich, Vaultwarden, Jellyfin, Nextcloud AIO, Home Assistant, n8n"
}
&lt;/script>
&lt;script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Person",
"name": "Lowell K. Wood IV",
"alternateName": "LK Wood IV",
"url": "https://techfuelhq.com/about/",
"email": "hello@techfuelhq.com",
"sameAs": ["https://github.com/iBlessi"],
"jobTitle": "Editor, TechFuel HQ",
"address": {
"@type": "PostalAddress",
"addressLocality": "St. Louis County",
"addressRegion": "MO",
"addressCountry": "US"
},
"knowsAbout": [
"Homelab infrastructure",
"Proxmox VE",
"TrueNAS",
"Unraid",
"Self-hosted applications",
"Mini PC hardware",
"Budget networking"
]
}
&lt;/script>
&lt;script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://techfuelhq.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Articles",
"item": "https://techfuelhq.com/articles/"
},
{
"@type": "ListItem",
"position": 3,
"name": "Self-Hosted Apps Worth Running in 2026: The 12 That Actually Replace SaaS",
"item": "https://techfuelhq.com/articles/self-hosted-apps-replace-saas-2026/"
}
]
}
&lt;/script>
&lt;script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What are the best self hosted apps in 2026?",
"acceptedAnswer": {
"@type": "Answer",
"text": "The 12 covered above: Immich, Nextcloud AIO, Vaultwarden, Paperless-ngx, Jellyfin, AdGuard Home, Tailscale, Home Assistant OS, AudioBookshelf, n8n, BookStack, and Uptime Kuma. They were picked for daily-use value, mature documentation, and a clear SaaS counterpart they actually replace, not for being interesting."
}
},
{
"@type": "Question",
"name": "Can a single mini PC run all twelve?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes, with a real budget. A 32 GB Ryzen 5825U or Intel 12th-gen mini PC with a 1 TB NVMe runs the full stack with headroom for a couple of VMs. The bottleneck is almost always RAM — Immich's ML container plus Nextcloud's PHP plus Home Assistant in a VM eats 12 to 14 GB before users touch anything."
}
},
{
"@type": "Question",
"name": "Is Jellyfin really better than Plex in 2026?",
"acceptedAnswer": {
"@type": "Answer",
"text": "For most homelab setups, yes. No subscription, no remote-access gatekeeping, hardware transcoding works on Intel Quick Sync without paywalls, and the apps on Apple TV, Android TV, and Roku have all reached parity with Plex's basic features. Plex still wins on the relatives-friendly install path."
}
},
{
"@type": "Question",
"name": "Should I self-host email?",
"acceptedAnswer": {
"@type": "Answer",
"text": "No, almost certainly not. Outbound deliverability to Gmail and Microsoft 365 is consistently bad from residential IPs in 2026, and inbound on a dynamic IP breaks at the worst times. Use a paid relay like Fastmail, Migadu, or Proton, and self-host everything else. Mailcow and Mail-in-a-Box work, but the operational tax is real."
}
},
{
"@type": "Question",
"name": "How do I back up these self-hosted services?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Treat the data volumes as the backup target, not the containers themselves. A weekly restic or borg job to a second disk plus an offsite copy — a small VPS, an encrypted Backblaze B2 bucket, or a friend's homelab over Tailscale — covers the realistic failure modes for a home setup."
}
},
{
"@type": "Question",
"name": "Is Tailscale really self-hosted?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Strictly no, the coordinator is SaaS. Practically, the data plane (the actual VPN traffic) is peer-to-peer WireGuard and never touches Tailscale's servers. If you need a fully self-hosted control plane, run Headscale. For most readers, Tailscale's free tier of unlimited devices and 6 users is the right call."
}
}
]
}
&lt;/script>
&lt;script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "ItemList",
"name": "12 Self-Hosted Apps That Actually Replace SaaS in 2026",
"itemListOrder": "https://schema.org/ItemListOrderAscending",
"numberOfItems": 12,
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Immich",
"url": "https://immich.app/",
"description": "Self-hosted photo and video backup with on-device ML face and object recognition. Replaces Google Photos and iCloud Photos."
},
{
"@type": "ListItem",
"position": 2,
"name": "Nextcloud AIO",
"url": "https://github.com/nextcloud/all-in-one",
"description": "All-in-one Nextcloud deployment for file sync, calendar, contacts, and office editing. Replaces Google Drive and Dropbox."
},
{
"@type": "ListItem",
"position": 3,
"name": "Vaultwarden",
"url": "https://github.com/dani-garcia/vaultwarden",
"description": "Bitwarden-compatible password manager server in Rust. Replaces Bitwarden cloud and 1Password."
},
{
"@type": "ListItem",
"position": 4,
"name": "Paperless-ngx",
"url": "https://docs.paperless-ngx.com/",
"description": "Document management with OCR and full-text search. Replaces Evernote scan and Dropbox Scan."
},
{
"@type": "ListItem",
"position": 5,
"name": "Jellyfin",
"url": "https://jellyfin.org/",
"description": "Open-source media server with hardware transcoding. Replaces Plex and Netflix-style streaming."
},
{
"@type": "ListItem",
"position": 6,
"name": "AdGuard Home",
"url": "https://adguard.com/en/adguard-home/overview.html",
"description": "Network-wide DNS filtering and ad blocking. Replaces Pi-hole and NextDNS."
},
{
"@type": "ListItem",
"position": 7,
"name": "Tailscale",
"url": "https://tailscale.com/",
"description": "WireGuard-based mesh VPN with automatic NAT traversal. Replaces commercial VPN services and ZeroTier."
},
{
"@type": "ListItem",
"position": 8,
"name": "Home Assistant OS",
"url": "https://www.home-assistant.io/",
"description": "Local-first home automation across Zigbee, Z-Wave, Matter, and Wi-Fi. Replaces Apple Home, Google Home, and SmartThings."
},
{
"@type": "ListItem",
"position": 9,
"name": "AudioBookshelf",
"url": "https://www.audiobookshelf.org/",
"description": "Self-hosted audiobook and podcast server with progress sync. Replaces Audible."
},
{
"@type": "ListItem",
"position": 10,
"name": "n8n",
"url": "https://n8n.io/",
"description": "Workflow automation with 400+ integrations and code escape hatch. Replaces Zapier, Make, and IFTTT."
},
{
"@type": "ListItem",
"position": 11,
"name": "BookStack",
"url": "https://www.bookstackapp.com/",
"description": "Wiki and documentation platform with Books, Chapters, and Pages structure. Replaces Notion and Confluence for read-mostly use."
},
{
"@type": "ListItem",
"position": 12,
"name": "Uptime Kuma",
"url": "https://github.com/louislam/uptime-kuma",
"description": "Self-hostable uptime monitor and status page. Replaces UptimeRobot and Better Stack."
}
]
}
&lt;/script></description></item><item><title>Best Mini PC for a Homelab 2026: MS-01, NUC, SFF</title><link>https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/</link><pubDate>Fri, 01 May 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-05-01 · Updated 2026-07-13 · 14 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence which products get recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;img src="https://techfuelhq.com/images/homelab/best-mini-pcs-homelab-2026.svg" alt="Best mini PCs for a 2026 homelab ranked: MS-01, NUC, and used SFF picks with core counts, RAM ceilings, and idle power draw" width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR · The picks at a glance&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>Networking pick (new, ~$423 barebone):&lt;/strong> &lt;strong>Minisforum MS-01&lt;/strong> with i5-12600H. Dual SFP+ 10GbE + dual 2.5GbE in one box — nothing else at this price matches it. (Read the RAM-tax section before you assume $423 is the real cost.)&lt;/li>
&lt;li>&lt;strong>Low-idle pick (new, ~$690 barebone):&lt;/strong> &lt;strong>ASUS NUC 14 Pro+&lt;/strong> with Core Ultra 7 155H. 8–9W idle, lowest in class under $1k.&lt;/li>
&lt;li>&lt;strong>Value pick (used, ~$150–220):&lt;/strong> &lt;strong>Dell OptiPlex 7060 Micro&lt;/strong>, &lt;strong>HP EliteDesk 800 G4 Mini&lt;/strong>, or &lt;strong>Lenovo ThinkCentre M720q Tiny&lt;/strong> with i5-8500T. Cheap DDR4, six real cores, eBay all day.&lt;/li>
&lt;li>&lt;strong>Entry pick (complete, ~$170):&lt;/strong> a &lt;strong>complete Intel N150 box&lt;/strong> (GMKtec G3 class) sold &lt;em>with&lt;/em> RAM and an SSD. For Pi-hole, Home Assistant, and a light Jellyfin — sips ~6–10W.&lt;/li>
&lt;li>&lt;strong>AMD alternative (~$650):&lt;/strong> &lt;strong>Geekom A8&lt;/strong> with Ryzen 9 8945HS. USB4, 2.5GbE.&lt;/li>
&lt;li>&lt;strong>Skip:&lt;/strong> Anything with a single 1GbE NIC if you plan to cluster or virtualize a firewall. In 2026 that’s a deal-breaker for a growing hypervisor host.&lt;/li>
&lt;/ul>
&lt;p style="margin:0.75rem 0 0 0;font-size:0.9rem;color:#a0a0b8;">All idle figures measured at the wall · Prices verified July 13, 2026 · 32 GB RAM minimum, 64 GB sweet spot · During the DDR5 shortage, a barebone’s sticker is a down payment — see below.&lt;/p>
&lt;/div>
&lt;h2 id="which-one-fits-you-the-whole-field-on-one-map">Which one fits you? The whole field on one map&lt;/h2>
&lt;p>There is no single &amp;ldquo;best&amp;rdquo; mini PC for a homelab — there is the one that matches how hard you&amp;rsquo;ll push it and how much you&amp;rsquo;ll pay to keep it running 24/7. The two axes that actually decide it are &lt;strong>idle power&lt;/strong> (what it costs you every hour of every day) and &lt;strong>capability&lt;/strong> (RAM ceiling, NIC count, expansion). Plot every option on those two axes and the field sorts itself into three honest zones. The bottom-right — power-hungry &lt;em>and&lt;/em> limited — is empty on purpose: nothing good lives there.&lt;/p>
&lt;!-- ========== VISUAL A: 2D POSITIONING MAP (17th distinct grammar - scatter/quadrant tradeoff frontier) ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0b1120;padding:24px 20px 18px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;">
&lt;div style="margin-bottom:10px;">
&lt;div style="font-size:18px;font-weight:700;letter-spacing:-0.3px;">The 2026 homelab mini-PC map&lt;/div>
&lt;div style="font-size:12px;color:#8a96b0;margin-top:4px;">Idle power (24/7 cost) vs capability (RAM ceiling + networking + expansion) · dot size ≈ price · July 2026&lt;/div>
&lt;/div>
&lt;svg viewBox="0 0 720 470" width="100%" role="img" aria-label="A positioning map plotting mini PCs by idle power on the horizontal axis and homelab capability on the vertical axis. The Minisforum MS-01 sits top-right as the high-power, high-capability networking beast. The ASUS NUC 14 Pro Plus and Geekom A8 sit top-left as the low-idle, high-headroom sweet spot. Used OptiPlex and complete N150 boxes sit bottom-left as cheap, efficient starters. The bottom-right, power-hungry and limited, is empty." style="font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
&lt;!-- zone fills -->
&lt;rect x="90" y="44" width="290" height="156" fill="#c8ff00" opacity="0.055"/>
&lt;rect x="380" y="44" width="310" height="156" fill="#6db3ff" opacity="0.06"/>
&lt;rect x="90" y="200" width="290" height="160" fill="#7ddc9a" opacity="0.05"/>
&lt;rect x="380" y="200" width="310" height="160" fill="#e06a6a" opacity="0.03"/>
&lt;!-- quadrant dividers -->
&lt;line x1="380" y1="44" x2="380" y2="360" stroke="#1c2438" stroke-width="1" stroke-dasharray="4 4"/>
&lt;line x1="90" y1="200" x2="690" y2="200" stroke="#1c2438" stroke-width="1" stroke-dasharray="4 4"/>
&lt;!-- axes -->
&lt;line x1="90" y1="44" x2="90" y2="360" stroke="#33405e" stroke-width="1.5"/>
&lt;line x1="90" y1="360" x2="690" y2="360" stroke="#33405e" stroke-width="1.5"/>
&lt;!-- zone labels -->
&lt;text x="104" y="64" fill="#c8ff00" font-size="12.5" font-weight="700">THE SWEET SPOT&lt;/text>
&lt;text x="104" y="80" fill="#8a96b0" font-size="10.5">low idle · real headroom&lt;/text>
&lt;text x="676" y="182" fill="#6db3ff" font-size="12.5" font-weight="700" text-anchor="end">NETWORKING BEAST&lt;/text>
&lt;text x="676" y="197" fill="#8a96b0" font-size="10.5" text-anchor="end">worth the watts for 10GbE&lt;/text>
&lt;text x="104" y="222" fill="#7ddc9a" font-size="12.5" font-weight="700">START HERE&lt;/text>
&lt;text x="104" y="238" fill="#8a96b0" font-size="10.5">cheap · sips power · does the basics&lt;/text>
&lt;text x="676" y="350" fill="#7a5a5a" font-size="10.5" font-style="italic" text-anchor="end">nothing good lives here&lt;/text>
&lt;!-- MS-01 -->
&lt;circle cx="621" cy="53" r="10" fill="#6db3ff" stroke="#0b1120" stroke-width="2"/>
&lt;text x="606" y="50" fill="#e8e8f0" font-size="12.5" font-weight="600" text-anchor="end">Minisforum MS-01&lt;/text>
&lt;text x="606" y="65" fill="#8a96b0" font-size="10.5" text-anchor="end">$423 barebone · 64GB · 2x10GbE · ~27W&lt;/text>
&lt;!-- NUC 14 Pro+ -->
&lt;circle cx="228" cy="98" r="9" fill="#c8ff00" stroke="#0b1120" stroke-width="2"/>
&lt;text x="243" y="94" fill="#e8e8f0" font-size="12.5" font-weight="600">ASUS NUC 14 Pro+&lt;/text>
&lt;text x="243" y="109" fill="#8a96b0" font-size="10.5">~$690 barebone · 96GB · ~10W&lt;/text>
&lt;!-- Geekom A8 -->
&lt;circle cx="275" cy="168" r="8" fill="#b07cd8" stroke="#0b1120" stroke-width="2"/>
&lt;text x="289" y="164" fill="#e8e8f0" font-size="12.5" font-weight="600">Geekom A8 (AMD)&lt;/text>
&lt;text x="289" y="179" fill="#8a96b0" font-size="10.5">~$650 · 64GB · ~12W&lt;/text>
&lt;!-- OptiPlex / M720q -->
&lt;circle cx="182" cy="238" r="8" fill="#7ddc9a" stroke="#0b1120" stroke-width="2"/>
&lt;text x="197" y="234" fill="#e8e8f0" font-size="12.5" font-weight="600">Used OptiPlex 7060 / M720q&lt;/text>
&lt;text x="197" y="249" fill="#8a96b0" font-size="10.5">~$180 · 32GB DDR4 · 1GbE · ~8W&lt;/text>
&lt;!-- N150 -->
&lt;circle cx="136" cy="292" r="6.5" fill="#7ddc9a" stroke="#0b1120" stroke-width="2"/>
&lt;text x="150" y="288" fill="#e8e8f0" font-size="12.5" font-weight="600">Complete N150 box&lt;/text>
&lt;text x="150" y="303" fill="#8a96b0" font-size="10.5">~$170 all-in · 16-32GB · 2.5GbE · ~6W&lt;/text>
&lt;!-- axis captions -->
&lt;text x="95" y="382" fill="#8a96b0" font-size="10.5">&amp;#8592; sips power&lt;/text>
&lt;text x="685" y="382" fill="#8a96b0" font-size="10.5" text-anchor="end">power-hungry &amp;#8594;&lt;/text>
&lt;text x="390" y="398" fill="#c2cbe0" font-size="11.5" font-weight="600" text-anchor="middle">Idle power draw, running 24/7&lt;/text>
&lt;text x="30" y="204" fill="#c2cbe0" font-size="11.5" font-weight="600" text-anchor="middle" transform="rotate(-90 30 204)">Capability &amp;#8594;&lt;/text>
&lt;/svg>
&lt;div style="margin-top:14px;padding-top:12px;border-top:1px solid rgba(255,255,255,0.07);font-size:11.5px;color:#8a96b0;line-height:1.6;">Positions are qualitative — a relative read of the tradeoff, not a benchmark. The point of the map: the &lt;strong style="color:#c8ff00;">sweet spot&lt;/strong> (low idle, high headroom) is where the NUC-class boxes live; the MS-01 earns its higher idle only if you actually need 10GbE; and for most first labs, the honest answer sits in the &lt;strong style="color:#7ddc9a;">bottom-left&lt;/strong> — cheap, efficient, and enough.&lt;/div>
&lt;div style="text-align:right;margin-top:6px;font-size:10px;color:#44506a;">techfuelhq.com · idle figures from third-party reviews (ServeTheHome, VirtualizationHowto); prices verified July 13, 2026&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="the-2026-mini-pc-lineup-ranked-by-what-theyre-for">The 2026 mini-PC lineup, ranked by what they&amp;rsquo;re for&lt;/h2>
&lt;p>Mini PCs aren&amp;rsquo;t picked like desktops. They run 24/7, so idle wattage matters more than peak performance. They host VMs and LXC containers, so RAM ceiling and NIC count matter more than single-thread benchmarks. Most ship as barebones — no RAM, no SSD — so the sticker price is the start of the bill, not the end. The shortlist below is five real options: three new, two used.&lt;/p>
&lt;h3 id="minisforum-ms-01--the-networking-pick">Minisforum MS-01 — the networking pick&lt;/h3>
&lt;p>The MS-01 broke the mini-PC pattern. Two 10Gbps SFP+ ports, two 2.5GbE RJ45 ports, three M.2 NVMe slots, U.2 support, and a half-height PCIe x16 slot — in a chassis you can hide behind a monitor (&lt;a href="https://www.minisforum.com/products/minisforum-ms-01" rel="noopener">Minisforum&lt;/a>). The networking spec is still unmatched at the $423 entry point (&lt;a href="https://forums.servethehome.com/index.php?threads/minisforum-ms-01-review-the-10gbe-with-pcie-slot-mini-pc.42827/" rel="noopener">ServeTheHome forums&lt;/a>).&lt;/p>
&lt;p>CPU options run from i5-12600H to i9-13900H. The i5 barebone is what most people want. Power lands around 27W idle in &lt;a href="https://www.virtualizationhowto.com/2024/01/minisforum-ms-01-review-best-home-server-mini-pc-early-2024/" rel="noopener">VirtualizationHowto&amp;rsquo;s measured configuration&lt;/a>, with peaks near 120W during simultaneous VM boot. Not great. Not terrible. The networking earns the watts. For a first home lab that you expect to grow into a real cluster, it is still the mini PC to beat in 2026.&lt;/p>
&lt;p>If you&amp;rsquo;re weighing whether the newer AMD-based Minisforum MS-A2 is worth the premium over the MS-01, the &lt;a href="https://techfuelhq.com/homelab/2026-homelab-gear-vs-2025-picks/">2026 homelab gear versus 2025&amp;rsquo;s picks breakdown&lt;/a> puts the two side by side on cores, RAM ceiling, and price — and reaches the same conclusion for anyone who already owns an MS-01.&lt;/p>
&lt;p>&lt;strong>Best for&lt;/strong>: Anyone running pfSense or OPNsense as a VM, anyone moving NAS traffic between nodes, anyone who wants real network virtualization without buying a separate switch and second box.&lt;/p>
&lt;h3 id="asus-nuc-14-pro-and-pro--the-nuc-torch-keeps-burning">ASUS NUC 14 Pro and Pro+ — the NUC torch keeps burning&lt;/h3>
&lt;p>Intel sold the NUC line to ASUS in 2023, and ASUS has actually shipped follow-up generations on schedule. The NUC 14 Pro+ runs Core Ultra 5/7/9 ARL-HX-class processors, supports 96GB DDR5-5600 across two SODIMM slots, ships with a 2.5GbE i226 NIC, and uses dual Thunderbolt 4 (&lt;a href="https://www.asus.com/us/displays-desktops/nucs/nuc-mini-pcs/asus-nuc-14-pro-plus/techspec/" rel="noopener">ASUS NUC 14 Pro Plus tech specs&lt;/a>). The base NUC 14 Pro caps at 48GB and uses a Core Ultra or Core 3 processor in a slightly smaller chassis (&lt;a href="https://www.asus.com/us/displays-desktops/nucs/nuc-mini-pcs/asus-nuc-14-pro/" rel="noopener">ASUS NUC 14 Pro&lt;/a>).&lt;/p>
&lt;p>What you get over the MS-01: lower idle power. ServeTheHome &lt;a href="https://www.servethehome.com/asus-nuc-14-pro-review-intel-core/4/" rel="noopener">measured 8–9W idle&lt;/a> on the NUC 14 Pro under load testing, with peaks around 88W. Better thermal headroom and tool-less serviceability come with the territory.&lt;/p>
&lt;p>The trade is SFP+. A single 2.5GbE port is enough for most workloads, but if you wanted dual NICs for a router VM, you&amp;rsquo;re using Thunderbolt-to-2.5GbE adapters or shopping elsewhere.&lt;/p>
&lt;p>&lt;strong>Best for&lt;/strong>: A quiet, low-idle Proxmox host that runs a dozen LXC containers and a handful of VMs without making your office sound like a hair dryer.&lt;/p>
&lt;h3 id="geekom-a8--a8-max--the-amd-compromise">Geekom A8 / A8 Max — the AMD compromise&lt;/h3>
&lt;p>If you want AMD in a NUC-class chassis, the Geekom A8 ships with a Ryzen 9 8945HS or Ryzen 7 8745HS, dual SODIMM up to 64GB DDR5-5600, USB4, 2.5GbE via a Realtek RTL8125BG, and a single M.2 2280 NVMe slot (&lt;a href="https://www.cnx-software.com/2024/05/15/geekom-a8-amd-ryzen-9-8945hs-ai-mini-pc-review-specs-unboxing-teardown-first-boot/" rel="noopener">CNX Software A8 review&lt;/a>). Beelink&amp;rsquo;s SER8 is the closer comparison on idle power, but the A8 is the easier RAM upgrade path and the more honest spec sheet.&lt;/p>
&lt;p>The Realtek 2.5GbE NIC is the one footnote here. It works, but Intel i226 is the part you actually want for a hypervisor — driver maturity matters, and Realtek 2.5GbE chips have a history of needing &lt;code>r8125-dkms&lt;/code> or vendor-out-of-tree modules on Linux. Plan for thirty minutes of friction.&lt;/p>
&lt;p>&lt;strong>Best for&lt;/strong>: AMD-curious homelabbers who want strong multi-core performance and don&amp;rsquo;t need 10GbE.&lt;/p>
&lt;h3 id="the-used-sff-sweet-spot--optiplex--elitedesk--thinkcentre-tiny">The used SFF sweet spot — OptiPlex / EliteDesk / ThinkCentre Tiny&lt;/h3>
&lt;p>This is where the math gets fun — and in 2026, where it quietly wins. The &amp;ldquo;1-litre&amp;rdquo; TinyMiniMicro trio — Dell OptiPlex 7060 Micro, HP EliteDesk 800 G4 Mini, Lenovo ThinkCentre M720q Tiny — all run the same 8th-gen Intel platform (an i5-8500T is six cores at 35W TDP) and all take up to 32GB of DDR4 across two SO-DIMM slots plus one M.2 NVMe (&lt;a href="https://icecat.biz/p/dell/cv3wx/optiplex-pcs-workstations-5397184103111-7060-57861293.html" rel="noopener">icecat datasheet&lt;/a>, &lt;a href="https://www.pcliquidations.com/p118250-dell-optiplex-7060-micro" rel="noopener">PCLiquidations&lt;/a>, &lt;a href="https://www.newegg.com/p/1VK-0003-1HPU0" rel="noopener">Newegg M720q listing&lt;/a>). Pricing has crept up as r/homelab discovered them — a bare unit runs roughly &lt;strong>$150–$220 on eBay in mid-2026&lt;/strong>, and sellers increasingly strip the RAM and drive out of the listing. The M720q is the enthusiast favorite because a PCIe slot option lets you add a quad-port NIC; the OptiPlex 7060 Micro is the quietest.&lt;/p>
&lt;p>Here is the part that matters more than ever in 2026: these boxes take &lt;strong>DDR4, not DDR5&lt;/strong>. With the AI-driven memory shortage having roughly tripled DDR5 SO-DIMM prices, cheap used DDR4 (or a stick that came bundled with the machine) is a genuine cost advantage, not just a nostalgia tax. You give up 2.5GbE and modern USB4, and the honest weakness is gigabit ethernet — for a single-node Proxmox host running &lt;a href="https://techfuelhq.com/articles/proxmox-mini-pc-setup/">a few self-hosted apps&lt;/a>, 1GbE is fine; cluster traffic between nodes wants a USB 2.5GbE dongle. But you get six real cores, a chassis engineered for office reliability, and an all-in price that undercuts a filled barebone by a wide margin (more on that below).&lt;/p>
&lt;p>&lt;strong>Best for&lt;/strong>: Cluster-curious homelabbers, the &amp;ldquo;what does Proxmox feel like&amp;rdquo; crowd, anyone who wants three nodes for HA testing without spending $1,500 — and anyone who would rather not pay 2026 DDR5 prices.&lt;/p>
&lt;h3 id="the-entry-tier--a-complete-intel-n150-box">The entry tier — a complete Intel N150 box&lt;/h3>
&lt;p>For a first homelab that runs Pi-hole, Home Assistant, a couple of Docker containers, and maybe a light Jellyfin instance, you do not need any of the boxes above. A complete Intel &lt;strong>N150&lt;/strong> mini PC — the GMKtec G3 class, or similar from Beelink and others — sells for roughly &lt;strong>$150–$200 with RAM and an SSD already installed&lt;/strong>, and idles around 6–10W. That &amp;ldquo;complete, with RAM&amp;rdquo; detail is the whole point in 2026: because the machine ships populated, you skip the DDR5 tax that turns a cheap barebone into an expensive one (the next section). The N150 (a four-core Alder Lake-N part) is the honest successor to the old N100, with a bump in clocks and, on most boards, a real 2.5GbE port.&lt;/p>
&lt;p>The ceiling is real: single-channel-ish memory bandwidth and four small cores mean you will feel it the moment you ask it to transcode two Plex streams or run a stack of hungry VMs. But for the &amp;ldquo;smart-home hub plus ad blocker plus one media app&amp;rdquo; job that most first labs actually are, it is the right amount of computer — and the community agrees; the running joke on r/homelab is that a $150 mini PC quietly does everything a closet full of enterprise gear was bought to do.&lt;/p>
&lt;p>&lt;strong>Best for&lt;/strong>: First-timers, appliance roles (Pi-hole, AdGuard, Home Assistant), anyone who wants a silent 8W box that costs pennies a year to run.&lt;/p>
&lt;h3 id="whats-missing-on-purpose">What&amp;rsquo;s missing on purpose&lt;/h3>
&lt;p>No Raspberry Pi 5 — different category (ARM, no PCIe-class expansion, and in 2026 often no cheaper than a used x86 SFF once you add storage and a case). No DIY builds either — if you want a discrete GPU or desktop-class RAM, a &lt;a href="https://techfuelhq.com/homelab/mini-itx-homelab-build-2026/">Mini-ITX homelab build&lt;/a> is the next step up. And no tower servers or used enterprise 1U gear: a Dell R730 is a fine way to learn iDRAC, but it idles at 80–120W to do work a 10W mini PC now does in a drawer. Everything in this article is a small, quiet, low-idle x86-64 box — the shape a 2026 homelab actually wants. If you have not settled on that shape yet, the &lt;a href="https://techfuelhq.com/homelab/servers-for-homelab-2026/">homelab server chooser&lt;/a> puts all five classes side by side first.&lt;/p>
&lt;h2 id="the-barebone-trap-what-a-mini-pc-really-costs-in-2026">The barebone trap: what a mini PC really costs in 2026&lt;/h2>
&lt;p>Every &amp;ldquo;$423&amp;rdquo; and &amp;ldquo;$690&amp;rdquo; price above is a &lt;strong>barebone&lt;/strong> — no RAM, no SSD, no operating system. In a normal year that footnote barely mattered; a 32GB DDR5 SO-DIMM kit cost $80–$100 and you rounded up. In 2026 it is the single most important number on the page, because the AI-driven memory shortage has &lt;a href="https://techfuelhq.com/articles/ddr5-ram-buying-guide-2025/">tripled DDR5 prices&lt;/a>: a 32GB DDR5-5600 SO-DIMM kit now runs around &lt;strong>$390&lt;/strong> (verified against Amazon, July 13, 2026), and a 1TB NVMe adds roughly another $80–$100 during the parallel SSD squeeze.&lt;/p>
&lt;p>Do the arithmetic and the &amp;ldquo;cheap&amp;rdquo; barebone stops being cheap. A Minisforum MS-01 is $423 as a bare box — but a &lt;em>working&lt;/em> MS-01 with 32GB of DDR5 and a 1TB NVMe is closer to &lt;strong>$900 all-in&lt;/strong>. Meanwhile a complete Intel N150 box ships for ~$170 &lt;em>with&lt;/em> RAM and storage, and a used OptiPlex 7060 takes cheap DDR4 (or comes with a stick). The shortage has inverted the usual advice: the box you fill yourself is now often the expensive one.&lt;/p>
&lt;!-- ========== VISUAL B: BAREBONE-TAX REVEAL (distinct within-wave grammar - sticker vs real all-in) ========== -->
&lt;div class="visual-block">
&lt;div style="background:#17110a;padding:24px 22px 18px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;">
&lt;div style="margin-bottom:6px;">
&lt;div style="font-size:18px;font-weight:700;letter-spacing:-0.3px;">The barebone tax, drawn to scale&lt;/div>
&lt;div style="font-size:12px;color:#c2a884;margin-top:4px;">What each path &lt;em>really&lt;/em> costs once it can boot · bars share one 0–$950 scale · July 13, 2026&lt;/div>
&lt;/div>
&lt;div style="margin-top:16px;display:flex;flex-direction:column;gap:15px;">
&lt;!-- MS-01 barebone -->
&lt;div>
&lt;div style="display:flex;justify-content:space-between;align-items:baseline;font-size:12.5px;margin-bottom:5px;">
&lt;span style="color:#e8e8f0;font-weight:600;">Minisforum MS-01 &lt;span style="color:#9a8a72;font-weight:500;">barebone + 32GB DDR5 + 1TB NVMe&lt;/span>&lt;/span>
&lt;span style="color:#e0932f;font-weight:700;">All-in ~$913&lt;/span>
&lt;/div>
&lt;div style="display:flex;height:26px;background:rgba(255,255,255,0.05);border-radius:3px;overflow:hidden;">
&lt;div style="width:44.5%;background:#5b6472;display:flex;align-items:center;padding-left:8px;font-size:10.5px;color:#e8e8f0;white-space:nowrap;">$423 box&lt;/div>
&lt;div style="width:51.6%;background:#e0932f;display:flex;align-items:center;padding-left:8px;font-size:10.5px;color:#17110a;font-weight:600;white-space:nowrap;">+$490 RAM &amp;amp; SSD&lt;/div>
&lt;/div>
&lt;/div>
&lt;!-- Complete N150 -->
&lt;div>
&lt;div style="display:flex;justify-content:space-between;align-items:baseline;font-size:12.5px;margin-bottom:5px;">
&lt;span style="color:#e8e8f0;font-weight:600;">Complete Intel N150 box &lt;span style="color:#9a8a72;font-weight:500;">RAM + SSD included&lt;/span>&lt;/span>
&lt;span style="color:#3fae6b;font-weight:700;">All-in ~$170&lt;/span>
&lt;/div>
&lt;div style="display:flex;height:26px;background:rgba(255,255,255,0.05);border-radius:3px;overflow:hidden;">
&lt;div style="width:17.9%;background:#3fae6b;display:flex;align-items:center;padding-left:8px;font-size:10.5px;color:#0a1a0f;font-weight:600;white-space:nowrap;">$170&lt;/div>
&lt;/div>
&lt;/div>
&lt;!-- Used OptiPlex -->
&lt;div>
&lt;div style="display:flex;justify-content:space-between;align-items:baseline;font-size:12.5px;margin-bottom:5px;">
&lt;span style="color:#e8e8f0;font-weight:600;">Used OptiPlex 7060 &lt;span style="color:#9a8a72;font-weight:500;">box + cheap used DDR4&lt;/span>&lt;/span>
&lt;span style="color:#5c9ce0;font-weight:700;">All-in ~$225&lt;/span>
&lt;/div>
&lt;div style="display:flex;height:26px;background:rgba(255,255,255,0.05);border-radius:3px;overflow:hidden;">
&lt;div style="width:18.9%;background:#4b83c4;display:flex;align-items:center;padding-left:8px;font-size:10.5px;color:#f0f5fc;font-weight:600;white-space:nowrap;">$180&lt;/div>
&lt;div style="width:4.7%;background:#8a6a3a;">&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:16px;padding-top:12px;border-top:1px solid rgba(255,255,255,0.08);font-size:11.5px;color:#c2a884;line-height:1.6;">The $423 "cheap" barebone is the &lt;strong style="color:#e0932f;">most expensive&lt;/strong> box here once it can actually boot — the amber is 2026-priced DDR5 and an NVMe. A complete N150 or a used OptiPlex gets you a running homelab for roughly a quarter of the MS-01's all-in cost. Barebones win only when you already own compatible RAM.&lt;/div>
&lt;div style="text-align:right;margin-top:6px;font-size:10px;color:#5a4a34;">techfuelhq.com · component prices verified on Amazon, July 13 2026&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="comparison-table">Comparison table&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Model&lt;/th>
&lt;th scope="col">CPU&lt;/th>
&lt;th scope="col">RAM ceiling&lt;/th>
&lt;th scope="col">NICs&lt;/th>
&lt;th scope="col">Idle (published)&lt;/th>
&lt;th scope="col">Price band&lt;/th>
&lt;th scope="col">Best for&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Minisforum MS-01 (i5-12600H)&lt;/td>
&lt;td>Intel i5-12600H, 12C/16T&lt;/td>
&lt;td>64GB DDR5 SODIMM&lt;/td>
&lt;td>2× SFP+ 10G, 2× 2.5G&lt;/td>
&lt;td>~25–29W per third-party reviews&lt;/td>
&lt;td>$423 barebone (~$900 all-in)&lt;/td>
&lt;td>Network lab, pfSense VM, NAS uplink&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ASUS NUC 14 Pro+ (Ultra 7 155H)&lt;/td>
&lt;td>Intel Ultra 7 155H, 16C/22T&lt;/td>
&lt;td>96GB DDR5-5600&lt;/td>
&lt;td>1× 2.5G (i226)&lt;/td>
&lt;td>~8–15W per third-party reviews&lt;/td>
&lt;td>~$690–$900 barebone&lt;/td>
&lt;td>Quiet always-on Proxmox&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ASUS NUC 14 Pro (Core 3)&lt;/td>
&lt;td>Intel Core 3 100U, 6C/8T&lt;/td>
&lt;td>48GB DDR5-5600&lt;/td>
&lt;td>1× 2.5G&lt;/td>
&lt;td>&amp;lt;10W typical&lt;/td>
&lt;td>~$360–$450 barebone&lt;/td>
&lt;td>Single-node home services&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Geekom A8&lt;/td>
&lt;td>AMD Ryzen 9 8945HS, 8C/16T&lt;/td>
&lt;td>64GB DDR5-5600&lt;/td>
&lt;td>1× 2.5G (Realtek)&lt;/td>
&lt;td>~10–14W per published reviews&lt;/td>
&lt;td>~$650–$850 configured&lt;/td>
&lt;td>AMD homelab, Plex transcoding&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Used Dell OptiPlex 7060 Micro&lt;/td>
&lt;td>Intel i5-8500T, 6C/6T&lt;/td>
&lt;td>32GB DDR4&lt;/td>
&lt;td>1× 1GbE&lt;/td>
&lt;td>~6–10W typical for 35W TDP SFF&lt;/td>
&lt;td>$150–$220 used&lt;/td>
&lt;td>Cluster nodes, learning Proxmox&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Complete Intel N150 box (GMKtec G3 class)&lt;/td>
&lt;td>Intel N150, 4C/4T&lt;/td>
&lt;td>16–32GB DDR4/5&lt;/td>
&lt;td>1× 2.5G (most)&lt;/td>
&lt;td>~6–10W typical&lt;/td>
&lt;td>~$150–$200 with RAM + SSD&lt;/td>
&lt;td>Pi-hole, Home Assistant, appliance roles&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Idle figures above are the published or third-party-measured numbers from the cited sources. Different RAM configurations, different NVMe firmware, and different BIOS power-management defaults can swing wall idle by 5–8W on the same chassis — treat the cited ranges as upper-bound estimates and assume your actual hardware will land somewhere inside the band. The barebone price bands are the &lt;em>bare box&lt;/em>; add roughly $390 for 32GB of DDR5 in 2026 (see the barebone-tax section above).&lt;/p>
&lt;h2 id="top-picks-by-budget-tier">Top picks by budget tier&lt;/h2>
&lt;h3 id="under-200-complete--a-ready-to-run-intel-n150-box">Under $200 (complete) — a ready-to-run Intel N150 box&lt;/h3>
&lt;p>The cheapest legitimate entry: a complete N150 mini PC for roughly $150–$200 with RAM and an SSD already in it. Flash Proxmox or plain Debian, and it will happily host Pi-hole, Home Assistant, AdGuard, and a container or two at ~8W. It ships populated, so it sidesteps the 2026 DDR5 tax entirely. You will outgrow it if you get serious about VMs — but that is a next-year problem, and by then you will know exactly what to buy.&lt;/p>
&lt;h3 id="under-220-used--dell-optiplex-7060-micro-elitedesk-800-g4-or-m720q-tiny">Under $220 (used) — Dell OptiPlex 7060 Micro, EliteDesk 800 G4, or M720q Tiny&lt;/h3>
&lt;p>For $150–$220 on eBay: six real cores at 35W TDP, room for 16–32GB DDR4, a chassis over-engineered for corporate desks. The verdict is an OptiPlex 7060 Micro (or a M720q Tiny if you want the PCIe-NIC option) with an i5-8500T and 16–32GB of cheap DDR4. A 500GB NVMe still puts you near $250–$300 all-in — and crucially, that RAM is DDR4, not shortage-priced DDR5. Pair two and you&amp;rsquo;ve got a small &lt;a href="https://techfuelhq.com/articles/proxmox-mini-pc-setup/">Proxmox cluster&lt;/a> to learn live migration on.&lt;/p>
&lt;h3 id="300500-new--minisforum-ms-01-i5-12600h">$300–$500+ (new) — Minisforum MS-01 (i5-12600H)&lt;/h3>
&lt;p>The networking is the entire argument. Around $423 for a barebone with dual SFP+ 10GbE plus dual 2.5GbE is not a price that exists anywhere else (&lt;a href="https://www.amazon.com/dp/B0D45GCBND?tag=techfuelhq-20" rel="nofollow sponsored">check the MS-01 i5-12600H barebone on Amazon&lt;/a> for current pricing). Just budget honestly: add 32GB of DDR5 (&lt;del>$390 in 2026) and a 1TB NVMe (&lt;/del>$90), and the real all-in lands near &lt;strong>$900&lt;/strong> for a node that out-networks small-business gear from five years ago. It is still the best 10GbE-in-a-box deal on the market — the sticker just is not the whole story anymore.&lt;/p>
&lt;p>If you&amp;rsquo;re going to run &lt;a href="https://techfuelhq.com/homelab/proxmox-truenas-unraid-storage-backend-2026/">Proxmox versus TrueNAS or Unraid as your hypervisor stack&lt;/a>, the MS-01&amp;rsquo;s NICs let you separate management, VM, and storage traffic on physical interfaces — which is a real architectural win, not a benchmark game.&lt;/p>
&lt;h3 id="690-new--asus-nuc-14-pro-with-core-ultra-7-155h">~$690+ (new) — ASUS NUC 14 Pro+ with Core Ultra 7 155H&lt;/h3>
&lt;p>When idle wattage and acoustic profile matter more than dual SFP+, the NUC 14 Pro+ is the recommendation — around $690 barebone for the 155H as of July 2026. 96GB RAM ceiling, low-watt steady-state, tool-less serviceability. Pair it with a managed 2.5GbE switch and the box disappears into a bookshelf. If &lt;a href="https://techfuelhq.com/networking/10gbe-home-networking-budget-2026/">10GbE on a budget&lt;/a> becomes a priority later, Thunderbolt 4 to SFP+ adapters work — don&amp;rsquo;t expect mini-PCIe magic. ASUS has since shipped the &lt;strong>NUC 15 Pro&lt;/strong> (Core Ultra 7 255H, Wi-Fi 7, ~$700 barebone); it is a modest bump and the 14 Pro+ remains the value pick, but if you are buying new anyway the 15 is worth a price check.&lt;/p>
&lt;h2 id="best-mini-pc-for-proxmox-specifically">Best mini PC for Proxmox specifically&lt;/h2>
&lt;p>Proxmox rewards two things a mini PC is often short on: NIC count and RAM headroom. The picks above map cleanly onto how you plan to run it.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>The pick for most builds — Minisforum MS-01.&lt;/strong> For a Proxmox host you expect to grow, the MS-01 is the best mini PC for Proxmox in 2026. Its dual SFP+ 10GbE plus dual 2.5GbE let you split management, VM, and storage traffic across physical interfaces and run a virtualized pfSense or OPNsense firewall without a USB NIC — the limit that bites hardest on single-port boxes. $423 barebone, 64GB DDR5 ceiling.&lt;/li>
&lt;li>&lt;strong>Best quiet, always-on — ASUS NUC 14 Pro+.&lt;/strong> When acoustics and idle watts matter more than SFP+, the NUC 14 Pro+ pairs a 96GB DDR5 ceiling with roughly 8–15W idle — real VM RAM headroom for a stack that never spins a fan up. You trade dual NICs for a single 2.5GbE port.&lt;/li>
&lt;li>&lt;strong>Best budget, learning Proxmox — used OptiPlex 7060 Micro or EliteDesk 800 G4 Mini.&lt;/strong> Under $200 gets six cores that run Proxmox fine for a handful of LXC containers and a light VM or two. The single 1GbE port is fine for one node and limiting once you cluster — add a USB 2.5GbE dongle for node-to-node traffic.&lt;/li>
&lt;/ul>
&lt;p>The one rule that overrides the rest: for a Proxmox host, don&amp;rsquo;t buy a box you can only give a single 1GbE NIC if you intend to virtualize networking or run more than one node. Once you&amp;rsquo;ve picked hardware, the &lt;a href="https://techfuelhq.com/articles/proxmox-mini-pc-setup/">Proxmox mini PC setup guide&lt;/a> walks the install from bare metal to first VM.&lt;/p>
&lt;h2 id="where-to-check-current-prices">Where to check current prices&lt;/h2>
&lt;p>Mini-PC pricing moves week to week. Check before you buy:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Minisforum MS-01&lt;/strong>: &lt;a href="https://www.minisforum.com/products/minisforum-ms-01" rel="noopener">Minisforum store&lt;/a> · &lt;a href="https://www.amazon.com/s?k=Minisforum+MS-01&amp;tag=techfuelhq-20" rel="nofollow sponsored">check price on Amazon&lt;/a>&lt;/li>
&lt;li>&lt;strong>ASUS NUC 14 Pro / Pro+&lt;/strong>: &lt;a href="https://www.asus.com/us/displays-desktops/nucs/nuc-mini-pcs/asus-nuc-14-pro/" rel="noopener">ASUS USA&lt;/a> · &lt;a href="https://www.amazon.com/s?k=ASUS+NUC+14+Pro&amp;tag=techfuelhq-20" rel="nofollow sponsored">check price on Amazon&lt;/a>&lt;/li>
&lt;li>&lt;strong>Geekom A8&lt;/strong>: &lt;a href="https://www.geekompc.com/geekom-a8-mini-pc/" rel="noopener">Geekom direct&lt;/a> · &lt;a href="https://www.amazon.com/s?k=Geekom+A8&amp;tag=techfuelhq-20" rel="nofollow sponsored">check price on Amazon&lt;/a>&lt;/li>
&lt;li>&lt;strong>Complete N150 box (GMKtec G3 class)&lt;/strong>: &lt;a href="https://www.amazon.com/s?k=GMKtec+G3+N150+mini+pc&amp;tag=techfuelhq-20" rel="nofollow sponsored">check N150 mini PCs on Amazon&lt;/a>&lt;/li>
&lt;li>&lt;strong>Used OptiPlex / EliteDesk / ThinkCentre Tiny&lt;/strong>: eBay, ServerSupply, PCLiquidations, r/homelabsales&lt;/li>
&lt;/ul>
&lt;p>If the listed price is more than 20% above the bands above, wait a week.&lt;/p>
&lt;h2 id="what-this-hardware-should-run">What this hardware should run&lt;/h2>
&lt;p>The standard stack: Proxmox VE on bare metal, a few LXC containers for lightweight services, one or two VMs for anything that needs its own kernel. The &lt;a href="https://techfuelhq.com/articles/proxmox-mini-pc-setup/">Proxmox mini PC setup guide&lt;/a> walks through the install. The &lt;a href="https://techfuelhq.com/articles/self-hosted-apps-replace-saas-2026/">self-hosted apps shortlist&lt;/a> covers what to actually run on it once it&amp;rsquo;s up.&lt;/p>
&lt;p>A single NVMe boot drive is fine for hypervisor-only use. For bulk storage, the MS-01&amp;rsquo;s three M.2 slots and the NUC 14 Pro+&amp;rsquo;s two slots both leave room for a ZFS mirror — but for real capacity, run a separate box per the &lt;a href="https://techfuelhq.com/homelab/best-budget-nas-builds-2025/">budget NAS builds guide&lt;/a>. A 2.5GbE switch is the realistic minimum in 2026; SFP+ matters once you&amp;rsquo;re moving VM disks between nodes.&lt;/p>
&lt;script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What is the best mini PC for a homelab in 2026?",
"acceptedAnswer": {
"@type": "Answer",
"text": "For most homelabbers, the Minisforum MS-01 with an i5-12600H is the best new buy at ~$423 barebone — dual SFP+ 10GbE and dual 2.5GbE NICs in one box. For lower idle power without 10GbE, the ASUS NUC 14 Pro+ wins. For under $200, a used Dell OptiPlex 7060 Micro or HP EliteDesk 800 G4 Mini is the value pick."
}
},
{
"@type": "Question",
"name": "Is the Minisforum MS-01 still worth buying in 2026?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes. The MS-01 launched in early 2024 and the networking spec — two SFP+ 10Gbps plus two 2.5GbE ports at $423 barebone — has not been matched at that price point. The i5-12600H is still a capable hypervisor CPU. If 10GbE is on your shortlist, the MS-01 remains the recommendation."
}
},
{
"@type": "Question",
"name": "How much idle power does a mini PC actually draw?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Modern x86 mini PCs draw 7–30W at idle, measured at the wall, depending on chassis, NIC count, and storage. ASUS NUC and Beelink-class boxes land at 8–15W. Multi-NIC machines like the MS-01 idle higher, around 25–29W per third-party measurements, because the SFP+ controllers consume power even with no link."
}
},
{
"@type": "Question",
"name": "Can I run Proxmox on a used OptiPlex Micro?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes. Any Intel 8th-gen or newer OptiPlex Micro, EliteDesk Mini, or ThinkCentre Tiny supports VT-x and VT-d, which is all Proxmox needs for KVM and PCI passthrough. Add 16–32GB of DDR4 and an NVMe SSD. The catch is the single 1GbE port — fine for one node, limiting if you cluster."
}
},
{
"@type": "Question",
"name": "How much RAM do I need for a homelab mini PC?",
"acceptedAnswer": {
"@type": "Answer",
"text": "32GB is the practical minimum for running Proxmox with a few VMs and LXC containers. 64GB is the sweet spot for any serious homelab — Home Assistant, Plex, a couple of databases, monitoring stack. Most current mini PCs cap at 64GB or 96GB DDR5 across two SO-DIMM slots."
}
},
{
"@type": "Question",
"name": "Is a mini PC better than an old gaming PC for a homelab?",
"acceptedAnswer": {
"@type": "Answer",
"text": "For 24/7 use, yes. A mini PC idles at 10–30W. An old gaming PC with a discrete GPU and full ATX PSU idles at 60–120W. At U.S. average electricity rates, the gaming PC costs $80–$160 more per year to run. The mini PC pays for itself in saved electricity within two to three years."
}
},
{
"@type": "Question",
"name": "What is the best mini PC for Proxmox specifically?",
"acceptedAnswer": {
"@type": "Answer",
"text": "The Minisforum MS-01 is the best mini PC for Proxmox in 2026 for most homelabbers — its dual SFP+ 10GbE plus dual 2.5GbE let you separate management, VM, and storage traffic and run a virtualized firewall without a USB NIC, at $423 barebone. For a quiet, low-idle Proxmox host with more RAM headroom, the ASUS NUC 14 Pro+ (96GB DDR5, ~8–15W idle) wins. To learn Proxmox on a budget, a used Dell OptiPlex 7060 Micro or HP EliteDesk 800 G4 Mini under $200 runs it fine for a few containers and light VMs. Avoid single-1GbE boxes if you plan to cluster or virtualize networking."
}
},
{
"@type": "Question",
"name": "Are barebone mini PCs still worth it with 2026 RAM prices?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Often not, in 2026. A barebone mini PC ships with no RAM or SSD, and the AI-driven DDR5 shortage has pushed a 32GB DDR5 SO-DIMM kit to roughly $390 — close to the price of the whole barebone. A Minisforum MS-01 at $423 barebone becomes about $900 all-in once you add 32GB of DDR5 and a 1TB NVMe. A used office mini PC that already includes DDR4, or a complete Intel N150 box sold with RAM and storage, often wins on total cost. Barebones only make sense when you already own compatible RAM or genuinely need the newer platform."
}
},
{
"@type": "Question",
"name": "What is the cheapest mini PC for a homelab in 2026?",
"acceptedAnswer": {
"@type": "Answer",
"text": "For basic services — Pi-hole, Home Assistant, a light Jellyfin instance — a complete Intel N150 mini PC like the GMKtec G3 series runs about $150 to $200 with RAM and an SSD already included, and idles near 6 to 10W. For a real Proxmox host on a budget, a used Dell OptiPlex 7060 Micro, HP EliteDesk 800 G4 Mini, or Lenovo ThinkCentre M720q Tiny with an i5-8500T runs about $150 to $220 and gives you six real cores. Both dodge the 2026 DDR5 tax that makes barebones expensive."
}
}
]
}
&lt;/script>
&lt;script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "ItemList",
"name": "Best Mini PCs for a Homelab in 2026",
"itemListOrder": "https://schema.org/ItemListOrderAscending",
"numberOfItems": 6,
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Minisforum MS-01 (i5-12600H)",
"url": "https://www.minisforum.com/products/minisforum-ms-01"
},
{
"@type": "ListItem",
"position": 2,
"name": "ASUS NUC 14 Pro+ (Core Ultra 7 155H)",
"url": "https://www.asus.com/us/displays-desktops/nucs/nuc-mini-pcs/asus-nuc-14-pro-plus/techspec/"
},
{
"@type": "ListItem",
"position": 3,
"name": "ASUS NUC 14 Pro (Core 3 100U)",
"url": "https://www.asus.com/us/displays-desktops/nucs/nuc-mini-pcs/asus-nuc-14-pro/"
},
{
"@type": "ListItem",
"position": 4,
"name": "Geekom A8 (Ryzen 9 8945HS)",
"url": "https://www.geekompc.com/geekom-a8-mini-pc/"
},
{
"@type": "ListItem",
"position": 5,
"name": "Used Dell OptiPlex 7060 Micro (i5-8500T)",
"url": "https://www.pcliquidations.com/p118250-dell-optiplex-7060-micro"
},
{
"@type": "ListItem",
"position": 6,
"name": "Complete Intel N150 mini PC (GMKtec G3 class)",
"url": "https://www.amazon.com/s?k=GMKtec+G3+N150+mini+pc&amp;tag=techfuelhq-20"
}
]
}
&lt;/script></description></item><item><title>Turn an Old Gaming PC Into a Proxmox Server in 2026: Step-by-Step</title><link>https://techfuelhq.com/articles/repurpose-gaming-pc-proxmox-server-2026/</link><pubDate>Fri, 01 May 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/repurpose-gaming-pc-proxmox-server-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-05-01 · 14 min read&lt;/p>
&lt;img src="https://techfuelhq.com/images/articles/repurpose-gaming-pc-proxmox-server-2026.svg" alt="Build-flow diagram: a 2018-era 65W-class gaming PC with four BIOS toggles (VT-x/AMD-V, VT-d/IOMMU, Above 4G + ReBAR, SR-IOV) boots a Ventoy USB carrying the Proxmox VE 8 ISO, installs Proxmox VE 8 to a 256GB SSD on a static IP, then hosts an Ubuntu 24.04 VM and a Pi-hole LXC on the vmbr0 bridge, with a Kill-A-Watt idle gate: under 55W is a keeper, over 75W headless means part it out for a mini PC." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;h2 id="key-takeaways">Key takeaways&lt;/h2>
&lt;ul>
&lt;li>A &lt;strong>Proxmox gaming server&lt;/strong> is realistic on any 2015-or-newer x86-64 desktop with a 65W-class CPU, 16–32GB of RAM, and a working Intel-chipset NIC.&lt;/li>
&lt;li>The build path: confirm VT-x/AMD-V and VT-d/IOMMU support, flip four BIOS toggles, install Proxmox VE 8 from a Ventoy USB, then pull a Kill-A-Watt idle reading.&lt;/li>
&lt;li>A 65W desktop CPU idles around 25–40W headless with the GPU pulled; under ~55W is a keeper, over ~75W means part it out for a mini PC instead.&lt;/li>
&lt;li>Skip this if your CPU is a 105W+ enthusiast part — idle power cost can exceed a used mini PC inside 18–24 months.&lt;/li>
&lt;li>Keep the GPU only if you want a Plex/Jellyfin transcode VM, a Windows gaming VM, or a local LLM container; otherwise pull it to save 8–25W at idle.&lt;/li>
&lt;/ul>
&lt;h2 id="tldr--verdict">TL;DR — Verdict&lt;/h2>
&lt;p>A 2018-era gaming PC with a 65W-class CPU, 16–32GB of RAM, and a working NIC makes a credible Proxmox server in 2026. Skip it if your CPU is a 105W+ desktop part — idle power will eat the savings inside a year. The path: confirm virtualization flags, flip four BIOS toggles, install Proxmox VE 8 from a Ventoy USB, pull a Kill‑A‑Watt reading, and decide whether to keep the GPU. Over ~55W idle headless? Part it out and read the &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">mini PC homelab guide&lt;/a> instead. And if you want plain storage rather than a hypervisor, the same old box makes a fine &lt;a href="https://techfuelhq.com/homelab/nas-from-old-pc-2026/">dedicated NAS built from an old PC&lt;/a>.&lt;/p>
&lt;h2 id="who-this-is-for">Who this is for&lt;/h2>
&lt;p>You have an old &lt;a href="https://techfuelhq.com/articles/gaming-pc-build-2026/">gaming PC build&lt;/a> — i7‑8700K, Ryzen 3600, 5600X, that class of machine — sitting in a closet. You&amp;rsquo;d rather repurpose it than throw it out, and you&amp;rsquo;ve read the &lt;a href="https://techfuelhq.com/homelab/proxmox-truenas-unraid-storage-backend-2026/">Proxmox vs TrueNAS vs Unraid breakdown&lt;/a> and picked Proxmox over a paid or Windows-licensed hypervisor — the &lt;a href="https://techfuelhq.com/articles/proxmox-vs-esxi-2025/">Proxmox vs ESXi comparison&lt;/a> covers why that is the default call in 2026, and &lt;a href="https://techfuelhq.com/articles/proxmox-vs-hyper-v-2026/">Proxmox vs Hyper-V&lt;/a> does the same on the Microsoft side.&lt;/p>
&lt;p>This guide turns that machine into a working Proxmox VE 8 host. Second-hand cousin of the &lt;a href="https://techfuelhq.com/articles/proxmox-mini-pc-setup/">mini PC Proxmox setup&lt;/a> — same hypervisor, different hardware tradeoffs.&lt;/p>
&lt;h2 id="before-you-start-hardware-sanity-check">Before you start: hardware sanity check&lt;/h2>
&lt;p>Run this list before you flash a single USB drive. Five minutes here saves a wasted weekend.&lt;/p>
&lt;h3 id="cpu-virtualization-support">CPU virtualization support&lt;/h3>
&lt;p>Proxmox VE 8 needs a 64-bit CPU with hardware virtualization — Intel VT-x + VT-d, or AMD-V + AMD-Vi (IOMMU). Almost every desktop CPU shipped after 2015 has these. The K-series Intel chips (8700K, 9900K, 10900K) do support VT-d, despite the old myth. Minimums on the &lt;a href="https://www.proxmox.com/en/products/proxmox-virtual-environment/get-started" rel="noopener">Proxmox VE requirements page&lt;/a>.&lt;/p>
&lt;p>Boot a live Linux USB or run from your existing OS and check:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Intel: look for vmx and (optionally) ept&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>grep -E &lt;span style="color:#e6db74">&amp;#39;vmx|svm&amp;#39;&lt;/span> /proc/cpuinfo | head -1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Confirm CPU model&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>lscpu | grep -E &lt;span style="color:#e6db74">&amp;#39;Model name|Virtualization&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>If &lt;code>vmx&lt;/code> (Intel) or &lt;code>svm&lt;/code> (AMD) is present, you&amp;rsquo;re good. If not, the CPU is too old or virtualization is disabled in firmware — fixed next.&lt;/p>
&lt;h3 id="tdp--idle-power-reality-check">TDP / idle-power reality check&lt;/h3>
&lt;p>Make-or-break number. A homelab server runs 24/7. Idle watts × 8,760 hours × your kWh rate = annual cost of the box.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">CPU class (TDP)&lt;/th>
&lt;th scope="col">Typical idle (headless, GPU pulled)&lt;/th>
&lt;th scope="col">Annual cost @ $0.14/kWh&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>35W mobile (laptop CPU on a desktop board)&lt;/td>
&lt;td>12–20W&lt;/td>
&lt;td>$15–25&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>65W desktop (i5-8400, 5600, 5600X)&lt;/td>
&lt;td>25–40W&lt;/td>
&lt;td>$31–49&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>95W desktop (i7-8700K stock, 9700K)&lt;/td>
&lt;td>40–55W&lt;/td>
&lt;td>$49–67&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>105W+ enthusiast (5800X3D, 7700X, 12700K)&lt;/td>
&lt;td>55–80W&lt;/td>
&lt;td>$67–98&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>125W+ HEDT or 13/14th-gen K-class&lt;/td>
&lt;td>75–110W&lt;/td>
&lt;td>$92–135&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;blockquote>
&lt;p>&lt;strong>Decision callout — when NOT to do this:&lt;/strong> if your gaming PC has a 105W+ TDP CPU, skip this build. The idle wattage gap versus a &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">modern N100/N305 mini PC&lt;/a> is wide enough to pay for a new mini PC inside 18–24 months. Sell the old chip on r/hardwareswap and start there. Realistic idle figures are tracked in the long-running &lt;a href="https://www.servethehome.com/" rel="noopener">ServeTheHome low-power server roundups&lt;/a> and the &lt;a href="https://www.techpowerup.com/cpu-specs/" rel="noopener">TechPowerUp CPU database&lt;/a>.&lt;/p>&lt;/blockquote>
&lt;h3 id="nic-compatibility">NIC compatibility&lt;/h3>
&lt;p>Onboard NICs on most Z370/B450/B550/X570 boards are fine. Two gotchas:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Realtek 2.5GbE (RTL8125)&lt;/strong> — works, but the in-tree driver has had link-flap issues for years. &lt;a href="https://forum.proxmox.com/" rel="noopener">Proxmox forum&lt;/a> has the standing fix (disable EEE, sometimes pin to gigabit). Plan an evening of fiddling, or drop in a $20 used Intel I225/I226.&lt;/li>
&lt;li>&lt;strong>Killer NICs&lt;/strong> — Realtek/Intel rebrands. Usually fine; check the chipset under the marketing name.&lt;/li>
&lt;/ul>
&lt;p>Confirm what you have:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># List every PCI device with vendor/device IDs&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>lspci -nn | grep -iE &lt;span style="color:#e6db74">&amp;#39;ethernet|network&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="gpu-passthrough-viability">GPU passthrough viability&lt;/h3>
&lt;p>Where the gaming PC actually pays off. If you want a Plex/Jellyfin transcode VM, a Windows gaming VM, or a local LLM container, the GPU is the reason you&amp;rsquo;re keeping this box instead of a mini PC. The full step-by-step passthrough setup (IOMMU kernel params, VFIO binding, NVIDIA Error 43 fix, ROM-Bar) is in the &lt;a href="https://techfuelhq.com/tutorials/gpu-passthrough-proxmox-vm-2026/">GPU Passthrough to a Proxmox VM guide&lt;/a>.&lt;/p>
&lt;p>Passthrough requires:&lt;/p>
&lt;ol>
&lt;li>CPU + chipset that exposes IOMMU groups cleanly (most consumer Intel Z-series and AMD X570/B550 boards do; B450 is hit-or-miss)&lt;/li>
&lt;li>UEFI boot, not legacy BIOS&lt;/li>
&lt;li>A GPU with a UEFI vBIOS (anything 2014+ — GTX 900 series and later, RX 400 series and later)&lt;/li>
&lt;li>SR-IOV or above-4G decoding enabled in BIOS for cleaner group separation&lt;/li>
&lt;/ol>
&lt;p>Once Proxmox is installed, you&amp;rsquo;ll verify groups with:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># After install — show how the IOMMU has split your devices&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">for&lt;/span> d in /sys/kernel/iommu_groups/*/devices/*; &lt;span style="color:#66d9ef">do&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> n&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">${&lt;/span>d##*/iommu_groups/*/devices/&lt;span style="color:#e6db74">}&lt;/span>; g&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">${&lt;/span>d%/devices/*&lt;span style="color:#e6db74">}&lt;/span>; g&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">${&lt;/span>g##*/&lt;span style="color:#e6db74">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> printf &lt;span style="color:#e6db74">&amp;#39;IOMMU Group %s: %s\n&amp;#39;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&lt;/span>$g&lt;span style="color:#e6db74">&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&lt;/span>&lt;span style="color:#66d9ef">$(&lt;/span>lspci -nns &lt;span style="color:#e6db74">&amp;#34;&lt;/span>$n&lt;span style="color:#e6db74">&amp;#34;&lt;/span>&lt;span style="color:#66d9ef">)&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">done&lt;/span> | sort -V
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>If the GPU shares a group with the chipset bridge or USB controllers, you&amp;rsquo;ll need the ACS override patch — out of scope here. The &lt;a href="https://pve.proxmox.com/wiki/PCI_Passthrough" rel="noopener">Proxmox PCI passthrough wiki&lt;/a> is canonical.&lt;/p>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;ul>
&lt;li>An old gaming PC with a 65W-class (or smaller) CPU, 16GB+ RAM, working PSU&lt;/li>
&lt;li>A 256GB SATA SSD or NVMe for the Proxmox boot disk (don&amp;rsquo;t reuse a 10-year-old spinning drive)&lt;/li>
&lt;li>A spare 8GB+ USB stick for installer media&lt;/li>
&lt;li>Wired Ethernet to your switch&lt;/li>
&lt;li>A Kill‑A‑Watt or smart plug with wattage telemetry (for the before/after measurement)&lt;/li>
&lt;li>60–90 minutes of uninterrupted time&lt;/li>
&lt;/ul>
&lt;h2 id="step-1--take-your-before-wattage-reading">Step 1 — Take your &amp;ldquo;before&amp;rdquo; wattage reading&lt;/h2>
&lt;p>Plug your gaming PC into the Kill‑A‑Watt with its current OS booted (Windows, idle desktop). Let it settle two minutes, then record the idle wattage along with your CPU and GPU model. This is your baseline.&lt;/p>
&lt;p>If you want a record to compare against later, photograph the PC and the meter together so the digits are legible — but the number itself is what matters. You will take the same reading again in Step 10, and the difference between the two is your real, measured power saving. Don&amp;rsquo;t estimate it; without an actual before-and-after reading, any &amp;ldquo;saved X watts&amp;rdquo; figure is a guess.&lt;/p>
&lt;h2 id="step-2--flip-the-bios-toggles">Step 2 — Flip the BIOS toggles&lt;/h2>
&lt;p>Reboot, mash &lt;kbd>Delete&lt;/kbd> or &lt;kbd>F2&lt;/kbd> to enter UEFI. Menu paths differ per vendor; the toggles don&amp;rsquo;t.&lt;/p>
&lt;h3 id="2a-enable-virtualization-vt-x--amd-v">2a. Enable virtualization (VT-x / AMD-V)&lt;/h3>
&lt;p>Intel: &lt;strong>Advanced → CPU Configuration → Intel Virtualization Technology&lt;/strong> → Enabled. AMD: &lt;strong>Advanced → CPU Configuration → SVM Mode&lt;/strong> → Enabled. Without this, KVM won&amp;rsquo;t start. If your board&amp;rsquo;s menu labels differ, capture the full menu path on screen so you can confirm you found the right toggle.&lt;/p>
&lt;h3 id="2b-enable-vt-d--iommu-amd-vi">2b. Enable VT-d / IOMMU (AMD-Vi)&lt;/h3>
&lt;p>Most-skipped setting. VT-x runs VMs; VT-d passes real hardware (GPU, NIC, USB controller) into a VM. Intel: &lt;strong>Advanced → System Agent (SA) Configuration → VT-d&lt;/strong> → Enabled. AMD: &lt;strong>Advanced → AMD CBS → IOMMU&lt;/strong> → Enabled (sometimes under NBIO). Different vendors bury this in different submenus, so note the breadcrumb at the top of the screen to be sure you&amp;rsquo;re on the right page.&lt;/p>
&lt;h3 id="2c-above-4g-decoding--resizable-bar">2c. Above 4G Decoding + Resizable BAR&lt;/h3>
&lt;p>Required for GPU passthrough. &lt;strong>Advanced → PCI Subsystem → Above 4G Decoding&lt;/strong> → Enabled. Re-Size BAR → Enabled (if available). On pre-2019 boards, Above 4G may be hidden until you flash a recent BIOS.&lt;/p>
&lt;h3 id="2d-sr-iov-if-your-nic-supports-it">2d. SR-IOV (if your NIC supports it)&lt;/h3>
&lt;p>Intel I350/X550 add-in cards expose SR-IOV — virtual functions that let multiple VMs share the same NIC at near-line-rate. &lt;strong>Advanced → PCI Subsystem → SR-IOV Support&lt;/strong> → Enabled. Consumer Realtek NICs don&amp;rsquo;t have it. Skip if missing.&lt;/p>
&lt;h3 id="2e-boot-mode--secure-boot">2e. Boot mode + Secure Boot&lt;/h3>
&lt;p>Boot mode: &lt;strong>UEFI only&lt;/strong> (CSM disabled). Secure Boot: &lt;strong>Disabled&lt;/strong> — Proxmox doesn&amp;rsquo;t ship pre-signed shim binaries for every kernel. Save and exit.&lt;/p>
&lt;h2 id="step-3--build-the-ventoy-usb">Step 3 — Build the Ventoy USB&lt;/h2>
&lt;ol>
&lt;li>Install &lt;a href="https://www.ventoy.net/" rel="noopener">Ventoy&lt;/a> to the USB stick (wipes it once).&lt;/li>
&lt;li>Download the &lt;a href="https://www.proxmox.com/en/downloads" rel="noopener">Proxmox VE 8 ISO&lt;/a>.&lt;/li>
&lt;li>Drag the ISO onto the USB partition. Done.&lt;/li>
&lt;/ol>
&lt;p>Next month you&amp;rsquo;ll want to boot Memtest86+ or a &lt;a href="https://techfuelhq.com/homelab/proxmox-truenas-unraid-storage-backend-2026/">TrueNAS or Unraid&lt;/a> installer to compare. Ventoy means no re-flash.&lt;/p>
&lt;h2 id="step-4--install-proxmox-ve-8">Step 4 — Install Proxmox VE 8&lt;/h2>
&lt;p>Use a rear USB 3 port (front-panel sometimes drops during install). Boot menu (&lt;kbd>F11&lt;/kbd>/&lt;kbd>F12&lt;/kbd>), pick USB, Ventoy menu → Proxmox ISO → &amp;ldquo;Boot in normal mode.&amp;rdquo;&lt;/p>
&lt;p>Decisions that matter:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Target disk&lt;/strong>: the SSD/NVMe you bought for this. Don&amp;rsquo;t install on a drive you care about.&lt;/li>
&lt;li>&lt;strong>Filesystem&lt;/strong>: &lt;code>ext4&lt;/code> for a single-disk first install. ZFS only with two identical SSDs in mirror. ARC eats RAM — not worth it here unless you&amp;rsquo;ve already capped it. (DDR5 buyers see the &lt;a href="https://techfuelhq.com/articles/ddr5-ram-buying-guide-2025/">DDR5 buying guide&lt;/a>; this box is almost certainly DDR4.)&lt;/li>
&lt;li>&lt;strong>Network&lt;/strong>: hostname &lt;code>pve.lan&lt;/code>, static IP outside DHCP (e.g., &lt;code>192.168.1.50&lt;/code>), gateway, DNS. Static is mandatory.&lt;/li>
&lt;/ul>
&lt;p>Install. Five to eight minutes later it reboots to a console showing &lt;code>https://192.168.1.50:8006&lt;/code>.&lt;/p>
&lt;h2 id="step-5--post-install-fix-the-repos">Step 5 — Post-install: fix the repos&lt;/h2>
&lt;p>Open &lt;code>https://192.168.1.50:8006&lt;/code>. Accept the self-signed cert. Log in as &lt;code>root&lt;/code>.&lt;/p>
&lt;p>Proxmox ships pointing at the enterprise repo, which 401s without a paid subscription. Open Shell and run:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Disable enterprise repo&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sed -i &lt;span style="color:#e6db74">&amp;#39;s/^deb/#deb/&amp;#39;&lt;/span> /etc/apt/sources.list.d/pve-enterprise.list
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Disable enterprise Ceph repo (same problem)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sed -i &lt;span style="color:#e6db74">&amp;#39;s/^deb/#deb/&amp;#39;&lt;/span> /etc/apt/sources.list.d/ceph.list 2&amp;gt;/dev/null
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Add the no-subscription community repo&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>echo &lt;span style="color:#e6db74">&amp;#34;deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription&amp;#34;&lt;/span> &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> &amp;gt; /etc/apt/sources.list.d/pve-no-subscription.list
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Update and upgrade&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>apt update &lt;span style="color:#f92672">&amp;amp;&amp;amp;&lt;/span> apt full-upgrade -y
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Same fix as the &lt;a href="https://techfuelhq.com/articles/proxmox-mini-pc-setup/">mini PC build&lt;/a>. Most-asked question on the Proxmox subreddit.&lt;/p>
&lt;h2 id="step-6--verify-iommu-is-actually-live">Step 6 — Verify IOMMU is actually live&lt;/h2>
&lt;p>Reboot the host. Then:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Should print a non-empty list of groups&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dmesg | grep -e DMAR -e IOMMU
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ls /sys/kernel/iommu_groups/ | wc -l
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>If &lt;code>dmesg&lt;/code> shows &lt;code>IOMMU enabled&lt;/code> and group count &amp;gt; 1, you&amp;rsquo;re good. Common miss: VT-d on, but CSM also on — which blocks IOMMU init on some boards.&lt;/p>
&lt;h2 id="step-7--configure-the-network-bridge">Step 7 — Configure the network bridge&lt;/h2>
&lt;p>Proxmox auto-creates &lt;code>vmbr0&lt;/code> bound to your first NIC. For most builds that&amp;rsquo;s all you need. Second NIC? Add &lt;code>vmbr1&lt;/code> via &lt;strong>Datacenter → node → System → Network → Create → Linux Bridge&lt;/strong>. Don&amp;rsquo;t overthink day one.&lt;/p>
&lt;p>Verify:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Show bridges and IPs&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ip -br a
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Show the running bridge config&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cat /etc/network/interfaces
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="step-8--create-your-first-vm">Step 8 — Create your first VM&lt;/h2>
&lt;p>Upload an ISO (Ubuntu 24.04 LTS is a fine first guest) via &lt;strong>local → ISO Images → Upload&lt;/strong>. Either click &amp;ldquo;Create VM,&amp;rdquo; or run it from the shell to see the moving parts:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Create VM 100: 4 GB RAM, 2 cores, virtio NIC, 32 GB disk on local-lvm&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>qm create &lt;span style="color:#ae81ff">100&lt;/span> &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --name ubuntu-test &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --memory &lt;span style="color:#ae81ff">4096&lt;/span> &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --cores &lt;span style="color:#ae81ff">2&lt;/span> &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --cpu host &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --net0 virtio,bridge&lt;span style="color:#f92672">=&lt;/span>vmbr0 &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --scsihw virtio-scsi-single &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --ostype l26
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Attach the ISO and a fresh disk&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>qm set &lt;span style="color:#ae81ff">100&lt;/span> --ide2 local:iso/ubuntu-24.04.1-live-server-amd64.iso,media&lt;span style="color:#f92672">=&lt;/span>cdrom
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>qm set &lt;span style="color:#ae81ff">100&lt;/span> --scsi0 local-lvm:32,discard&lt;span style="color:#f92672">=&lt;/span>on,ssd&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>qm set &lt;span style="color:#ae81ff">100&lt;/span> --boot order&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#39;ide2;scsi0&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Start it&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>qm start &lt;span style="color:#ae81ff">100&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Open Console. Install Ubuntu. Once up, install the QEMU guest agent (&lt;code>apt install qemu-guest-agent&lt;/code>) and toggle the agent option in the UI.&lt;/p>
&lt;p>LXC containers are lighter — kernel-shared, ideal for Pi‑hole, Uptime Kuma, a Tailscale exit node. The &lt;a href="https://techfuelhq.com/articles/proxmox-mini-pc-setup/">mini PC Proxmox guide&lt;/a> covers the same &lt;code>pct&lt;/code> commands; nothing changes for a gaming-PC host.&lt;/p>
&lt;h2 id="step-9--pull-the-gpu-or-dont">Step 9 — Pull the GPU (or don&amp;rsquo;t)&lt;/h2>
&lt;p>This is the fork in the road.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Pull the GPU&lt;/strong> if your CPU has integrated graphics (Intel F-suffix chips don&amp;rsquo;t; most other 8th-gen+ Intel and AMD G-suffix do) and no VM needs GPU acceleration. Save 8–25W idle. Confirm with &lt;code>lspci -nn | grep -i vga&lt;/code> after pulling.&lt;/li>
&lt;li>&lt;strong>Keep the GPU&lt;/strong> if you want Plex/Jellyfin transcode, a Windows gaming VM via Looking Glass, or a local LLM container. The kit is already in the box.&lt;/li>
&lt;/ul>
&lt;p>Passthrough wiring: follow the &lt;a href="https://pve.proxmox.com/wiki/PCI_Passthrough" rel="noopener">Proxmox PCI Passthrough wiki&lt;/a> — kernel-version-sensitive, wiki tracks current syntax.&lt;/p>
&lt;h2 id="step-10--take-the-after-measurement">Step 10 — Take the &amp;ldquo;after&amp;rdquo; measurement&lt;/h2>
&lt;p>Boot the machine headless — no monitor, no keyboard. Let Proxmox idle five minutes (the first couple of minutes have post-boot housekeeping that inflates the reading), then take the Kill‑A‑Watt reading. Record the watts, whether the GPU is still installed, and whether any VMs or containers are running, so your comparison is apples-to-apples with the Step 1 baseline.&lt;/p>
&lt;p>Compare your after-reading to Step 1. Two outcomes:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Under ~55W idle.&lt;/strong> Good build. Annual power cost in the $50–70 range. Keep going. Run the exact number through the &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">Power &amp;amp; Cost Calculator&lt;/a> to model your specific electricity rate and 3-year TCO.&lt;/li>
&lt;li>&lt;strong>Over ~75W idle, even with GPU pulled.&lt;/strong> The CPU is the floor. Re-read the decision callout and consider a &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">low-idle mini PC&lt;/a> instead. The repurpose math doesn&amp;rsquo;t always win.&lt;/li>
&lt;/ul>
&lt;h2 id="expected-outcome">Expected outcome&lt;/h2>
&lt;p>When this is done you have:&lt;/p>
&lt;ul>
&lt;li>Proxmox VE 8 on a static IP, web UI reachable&lt;/li>
&lt;li>Community repo configured, &lt;code>apt full-upgrade&lt;/code> clean&lt;/li>
&lt;li>IOMMU groups verified&lt;/li>
&lt;li>One Linux VM running with the QEMU guest agent&lt;/li>
&lt;li>A measured before/after wattage delta&lt;/li>
&lt;li>A known annual dollar cost to run the box, instead of an unknown one&lt;/li>
&lt;/ul>
&lt;p>That&amp;rsquo;s a working homelab host. Scale by adding LXC containers, more VMs, and — if storage becomes the next problem — re-evaluating against &lt;a href="https://techfuelhq.com/homelab/proxmox-truenas-unraid-storage-backend-2026/">TrueNAS or Unraid for the NAS role&lt;/a>.&lt;/p>
&lt;h2 id="troubleshooting">Troubleshooting&lt;/h2>
&lt;p>&lt;strong>&lt;code>KVM virtualisation not available&lt;/code>.&lt;/strong> VT-x/AMD-V off. Reboot, fix Step 2a.&lt;/p>
&lt;p>&lt;strong>&lt;code>No IOMMU detected&lt;/code>.&lt;/strong> VT-d/AMD-Vi off, or CSM still on. Step 2b. Some boards also need &lt;code>intel_iommu=on&lt;/code> or &lt;code>amd_iommu=on&lt;/code> appended to the kernel cmdline in &lt;code>/etc/kernel/cmdline&lt;/code> (systemd-boot) or &lt;code>/etc/default/grub&lt;/code> (GRUB).&lt;/p>
&lt;p>&lt;strong>Realtek 2.5GbE link-flaps under load.&lt;/strong> Drop in an Intel I225/I226 card, or follow the disable-EEE workarounds on the Proxmox forum.&lt;/p>
&lt;p>&lt;strong>GPU passthrough boots black screen.&lt;/strong> GPU shares an IOMMU group with the chipset. Move it to a different PCIe slot wired to a different root port, or apply the ACS override patch (security-relevant — read the wiki first).&lt;/p>
&lt;p>&lt;strong>Idle wattage way higher than expected.&lt;/strong> Likely culprits, in order: GPU still installed, C-states disabled, RGB hardware drawing standby power, a 1000W+ PSU running at 3% load (PSUs are most efficient in the 30–60% band).&lt;/p>
&lt;h2 id="build-the-system-around-it">Build the system around it&lt;/h2>
&lt;p>The &lt;a href="https://techfuelhq.com/tools/pc-builder/">TechFuelHQ PC Builder&lt;/a> is a free, open-source picker with real socket / RAM / PSU / GPU clearance checks and a CC BY 4.0 parts dataset. Use it to size a host that actually fits the gear in this article.&lt;/p>
&lt;p>Once Proxmox is running: set up &lt;a href="https://techfuelhq.com/tutorials/zfs-proxmox-pool-setup-arc-tuning-2026/">ZFS storage pools&lt;/a> to get checksummed, snapshot-capable storage for your VMs. The &lt;a href="https://techfuelhq.com/tutorials/docker-compose-starter-stack-homelab-2026/">Docker Compose starter stack&lt;/a> gets NPM, Portainer, and Uptime Kuma running in an LXC. The &lt;a href="https://techfuelhq.com/tutorials/proxmox-backup-server-3-2-1-2026/">Proxmox Backup Server guide&lt;/a> covers off-site VM backups. If you&amp;rsquo;re keeping the GPU for AI or gaming passthrough, the &lt;a href="https://techfuelhq.com/tutorials/gpu-passthrough-proxmox-vm-2026/">GPU passthrough tutorial&lt;/a> covers IOMMU grouping and the NVIDIA Error 43 fix.&lt;/p>
&lt;h2 id="sources-and-methodology">Sources and methodology&lt;/h2>
&lt;p>Procedure validated against Proxmox VE 8 documentation and IOMMU/VFIO documentation as of 2026-06-10. TDP and idle figures attributed inline to ServeTheHome and TechPowerUp.&lt;/p>
&lt;p>&lt;strong>Primary sources cited:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://pve.proxmox.com/wiki/PCI_Passthrough" rel="noopener">Proxmox VE 8 GPU passthrough wiki&lt;/a> — official documentation&lt;/li>
&lt;li>&lt;a href="https://pve.proxmox.com/wiki/Installation" rel="noopener">Proxmox VE 8 installation docs&lt;/a> — official install reference&lt;/li>
&lt;li>&lt;a href="https://wiki.archlinux.org/title/PCI_passthrough_via_OVMF" rel="noopener">Arch Wiki: PCI passthrough via OVMF&lt;/a> — IOMMU/VFIO reference&lt;/li>
&lt;li>&lt;a href="https://www.reddit.com/r/VFIO/" rel="noopener">VFIO subreddit&lt;/a> — community passthrough troubleshooting&lt;/li>
&lt;li>&lt;a href="https://www.phoronix.com/" rel="noopener">Phoronix virtualization benchmarks&lt;/a> — Linux KVM performance data&lt;/li>
&lt;/ul>
&lt;p>Email corrections to &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a>.&lt;/p>
&lt;script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Repurpose an Old Gaming PC as a Proxmox Server in 2026: Step-by-Step",
"image": "https://techfuelhq.com/images/og-default.png",
"description": "Turn an old gaming PC into a Proxmox VE 8 server in 2026. BIOS settings, install, first VM, idle wattage tradeoffs, and when to skip this path.",
"datePublished": "2026-05-01T00:00:00-05:00",
"dateModified": "2026-06-08T00:00:00-05:00",
"author": {
"@type": "Person",
"name": "Lowell K. Wood IV",
"alternateName": "LK Wood IV",
"url": "https://techfuelhq.com/about/",
"email": "hello@techfuelhq.com",
"sameAs": ["https://github.com/iBlessi"],
"address": {
"@type": "PostalAddress",
"addressLocality": "St. Louis County",
"addressRegion": "MO",
"addressCountry": "US"
}
},
"publisher": {
"@type": "Organization",
"name": "TechFuel HQ",
"url": "https://techfuelhq.com"
},
"mainEntityOfPage": "https://techfuelhq.com/articles/repurpose-gaming-pc-proxmox-server-2026/",
"keywords": "repurpose gaming pc as server, old gaming pc proxmox, gaming pc homelab 2026, proxmox 8 install gaming pc"
}
&lt;/script>
&lt;script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Person",
"name": "Lowell K. Wood IV",
"alternateName": "LK Wood IV",
"url": "https://techfuelhq.com/about/",
"email": "hello@techfuelhq.com",
"sameAs": ["https://github.com/iBlessi"],
"jobTitle": "Homelab and budget-PC infrastructure writer",
"address": {
"@type": "PostalAddress",
"addressLocality": "St. Louis County",
"addressRegion": "MO",
"addressCountry": "US"
},
"worksFor": {
"@type": "Organization",
"name": "TechFuel HQ",
"url": "https://techfuelhq.com"
}
}
&lt;/script>
&lt;script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{"@type": "ListItem", "position": 1, "name": "Home", "item": "https://techfuelhq.com/"},
{"@type": "ListItem", "position": 2, "name": "Articles", "item": "https://techfuelhq.com/articles/"},
{"@type": "ListItem", "position": 3, "name": "Repurpose an Old Gaming PC as a Proxmox Server in 2026", "item": "https://techfuelhq.com/articles/repurpose-gaming-pc-proxmox-server-2026/"}
]
}
&lt;/script>
&lt;script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "Repurpose an Old Gaming PC as a Proxmox Server",
"description": "Convert a 2015-or-newer gaming PC into a Proxmox VE 8 hypervisor host. Covers hardware sanity check, BIOS settings, Proxmox install, network config, first VM, and an idle-wattage measurement to validate the build.",
"totalTime": "PT90M",
"estimatedCost": {
"@type": "MonetaryAmount",
"currency": "USD",
"value": "25"
},
"supply": [
{"@type": "HowToSupply", "name": "Old gaming PC with 65W-class CPU and 16GB+ RAM"},
{"@type": "HowToSupply", "name": "256GB SATA SSD or NVMe boot drive"},
{"@type": "HowToSupply", "name": "8GB+ USB stick"},
{"@type": "HowToSupply", "name": "Wired Ethernet connection"}
],
"tool": [
{"@type": "HowToTool", "name": "Kill-A-Watt or smart plug with wattage telemetry"},
{"@type": "HowToTool", "name": "Ventoy USB tool"},
{"@type": "HowToTool", "name": "Proxmox VE 8 ISO"}
],
"step": [
{"@type": "HowToStep", "position": 1, "name": "Take the before photo and wattage reading", "text": "Plug the gaming PC into a Kill-A-Watt running its current OS at idle. Photograph the unit and meter together as the baseline."},
{"@type": "HowToStep", "position": 2, "name": "Flip the BIOS toggles", "text": "Enable VT-x/AMD-V, VT-d/IOMMU, Above 4G Decoding, and SR-IOV (if available). Set boot to UEFI-only and disable Secure Boot."},
{"@type": "HowToStep", "position": 3, "name": "Build the Ventoy USB", "text": "Install Ventoy to a USB stick, then drag the Proxmox VE 8 ISO onto it."},
{"@type": "HowToStep", "position": 4, "name": "Install Proxmox VE 8", "text": "Boot the USB, run the installer, choose ext4 on the new SSD, set a static IP, and complete setup."},
{"@type": "HowToStep", "position": 5, "name": "Fix the repos", "text": "Disable the enterprise repo and add the no-subscription community repo, then run apt update and full-upgrade."},
{"@type": "HowToStep", "position": 6, "name": "Verify IOMMU is live", "text": "Reboot and confirm via dmesg and /sys/kernel/iommu_groups that IOMMU is enabled."},
{"@type": "HowToStep", "position": 7, "name": "Configure the network bridge", "text": "Use the auto-created vmbr0; add vmbr1 only if you have a second NIC with a real reason to split."},
{"@type": "HowToStep", "position": 8, "name": "Create your first VM", "text": "Upload an Ubuntu ISO and create a VM with 4GB RAM, 2 cores, virtio NIC, and a 32GB disk on local-lvm."},
{"@type": "HowToStep", "position": 9, "name": "Pull the GPU (or don't)", "text": "Remove the discrete GPU if your CPU has iGPU and you don't need GPU acceleration in a VM. Keep it if you want transcode or LLM workloads."},
{"@type": "HowToStep", "position": 10, "name": "Take the after measurement", "text": "Boot headless, let it idle five minutes, and record the new Kill-A-Watt reading. Compare to the Step 1 baseline."}
]
}
&lt;/script>
&lt;script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Can I really use any old gaming PC as a server?",
"acceptedAnswer": {"@type": "Answer", "text": "Mostly. Any 2015-or-newer x86-64 desktop with VT-x/AMD-V and at least 8GB of RAM will run Proxmox VE 8. The real constraint is idle wattage. A 65W-class CPU is fine; a 105W+ enthusiast CPU usually loses on power cost versus a modern N100/N305 mini PC inside two years."}
},
{
"@type": "Question",
"name": "Do I need to buy a server CPU like a Xeon to do this?",
"acceptedAnswer": {"@type": "Answer", "text": "No. Consumer Intel 8th-gen-and-later and AMD Ryzen 1000-and-later CPUs all support VT-x and VT-d. Xeons and EPYCs add ECC RAM support and more PCIe lanes, which matter for big NAS or 10GbE workloads, not for a starter Proxmox host on repurposed kit."}
},
{
"@type": "Question",
"name": "Will Proxmox damage my gaming PC?",
"acceptedAnswer": {"@type": "Answer", "text": "No. Proxmox is Debian Linux with a hypervisor on top. It writes to the boot drive you tell it to and nothing else. Pull the boot SSD, plug a Windows SSD back in, and you have a gaming PC again."}
},
{
"@type": "Question",
"name": "Should I leave the GPU in or pull it?",
"acceptedAnswer": {"@type": "Answer", "text": "Pull it if you don't need GPU acceleration in a VM and your CPU has integrated graphics — you'll save 8 to 25W at idle. Keep it if you want a Plex/Jellyfin transcode VM, a Windows gaming VM, or a local LLM inference container. Don't keep it 'just in case' — the wattage adds up over a year."}
},
{
"@type": "Question",
"name": "How much RAM do I really need?",
"acceptedAnswer": {"@type": "Answer", "text": "16GB is the working minimum for a Proxmox host running 3–5 small services. 32GB is comfortable and lets you run a Windows VM plus several LXC containers without juggling. The host itself uses about 2GB; everything else goes to guests."}
},
{
"@type": "Question",
"name": "What's the difference versus running Proxmox on a mini PC?",
"acceptedAnswer": {"@type": "Answer", "text": "Idle wattage and noise. A mini PC like an MS-01 or N100 box idles at 8–25W, fits on a shelf, and is silent. A repurposed gaming PC idles at 25–55W, has a fan curve, and takes a tower-sized footprint. Gaming PC wins on raw RAM ceiling, PCIe slots, and zero-cost; mini PC wins on power and form factor."}
},
{
"@type": "Question",
"name": "When should I just give up and buy a mini PC?",
"acceptedAnswer": {"@type": "Answer", "text": "Three signals: idle wattage stays above ~75W after pulling the GPU, the box is too loud for the room, or the CPU is a 105W+ enthusiast part where power cost will exceed the price of a used mini PC inside 18 to 24 months. Any one of those, sell the platform and start fresh."}
}
]
}
&lt;/script></description></item><item><title>RTX 4080 vs RTX 4090: Is the Flagship Tax Worth $700 More?</title><link>https://techfuelhq.com/gpu-reviews/rtx-4080-vs-rtx-4090/</link><pubDate>Sun, 26 Apr 2026 00:00:00 -0500</pubDate><guid>https://techfuelhq.com/gpu-reviews/rtx-4080-vs-rtx-4090/</guid><description>&lt;!-- INTRO -->
&lt;section>
&lt;p>The RTX 50-series is on shelves, which means the 40-series is now the smart-money tier. The 4080 and 4090 went from "halo product flexes" to "the cards used builders actually buy when they want flagship-class performance without paying flagship-class taxes." And right now, on the used and clearance market, that gap between them is where the real conversation lives.&lt;/p>
&lt;p>The 4090 is still the faster card. Nobody is arguing that. The question is whether it's faster &lt;em>enough&lt;/em> to justify a price tag that is, depending on where you look, $500 to $700 above what an RTX 4080 Super costs. For most people, the answer is no. For a small slice of buyers, the answer is absolutely yes. This is the breakdown.&lt;/p>
&lt;/section>
&lt;img src="https://techfuelhq.com/images/gpu-reviews/hero-rtx-4080-vs-4090.svg" alt="RTX 4080 vs RTX 4090 spec comparison: 9,728 vs 16,384 CUDA cores, 16GB vs 24GB GDDR6X, and 320W vs 450W board power" width="1200" height="630" loading="eager" fetchpriority="high" />
&lt;!-- SPECS SECTION -->
&lt;section>
&lt;h2>The Specs That Actually Matter&lt;/h2>
&lt;p>The &lt;strong>RTX 4080&lt;/strong> ships with 9,728 CUDA cores, 16GB of GDDR6X on a 256-bit bus, and a 320W board power target. The 4080 Super (functionally the same card with a 5% core bump and a $200 MSRP cut) sits at the same TBP. New retail is around &lt;strong>$999–$1,199&lt;/strong> when you can find one. Used 4080 Supers on eBay run &lt;strong>$700–$880&lt;/strong>.&lt;/p>
&lt;p>The &lt;strong>RTX 4090&lt;/strong> packs 16,384 CUDA cores — that's 68% more shader hardware — paired with 24GB of GDDR6X on a 384-bit bus. Power draw jumps to 450W. New 4090s, where they exist, run &lt;strong>$1,599 MSRP and up&lt;/strong> (street pricing has been brutal). Used 4090s have stayed weirdly expensive — &lt;strong>$1,400–$1,700&lt;/strong> — because the 5090 is even more expensive and the used 4090 became the "I need 24GB of VRAM but won't pay 5090 money" card.&lt;/p>
&lt;p>That VRAM number is the single most important spec on this page. 16GB vs 24GB doesn't matter for any current game at 4K. It matters enormously if you're touching local AI, large-scale 3D work, or any workload where your model has to fit in memory or it doesn't run at all. If you're a gamer, this spec is irrelevant for the next 2–3 years. If you're not just a gamer, this spec is the reason the 4090 still costs what it costs.&lt;/p>
&lt;/section>
&lt;!-- SPEC COMPARISON CARD -->
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;padding:28px 24px 20px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;border-radius:8px;">
&lt;div style="text-align:center;margin-bottom:24px;">
&lt;div style="font-size:18px;font-weight:600;letter-spacing:-0.3px;">RTX 4080 vs RTX 4090 — specs at a glance&lt;/div>
&lt;div style="font-size:12px;color:#9a9ab5;margin-top:5px;">Street pricing as of April 2026&lt;/div>
&lt;/div>
&lt;div style="display:grid;grid-template-columns:1fr 40px 1fr;gap:0;align-items:start;max-width:680px;margin:0 auto;">
&lt;!-- 4080 COLUMN -->
&lt;div>
&lt;div style="text-align:center;margin-bottom:18px;">
&lt;div style="font-size:15px;font-weight:600;color:#76b900;">RTX 4080 / Super&lt;/div>
&lt;div style="font-size:11px;color:#555570;margin-top:2px;">NVIDIA · Ada Lovelace&lt;/div>
&lt;/div>
&lt;div style="background:rgba(118,185,0,0.06);border:1px solid rgba(118,185,0,0.15);border-radius:10px;padding:14px 16px;">
&lt;div style="display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid rgba(255,255,255,0.04);">&lt;span style="font-size:12px;color:#7a7a96;">CUDA cores&lt;/span>&lt;span style="font-size:13px;font-weight:500;color:#c8c8dc;">9,728&lt;/span>&lt;/div>
&lt;div style="display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid rgba(255,255,255,0.04);">&lt;span style="font-size:12px;color:#7a7a96;">VRAM&lt;/span>&lt;span style="font-size:13px;font-weight:500;color:#c8c8dc;">16 GB GDDR6X&lt;/span>&lt;/div>
&lt;div style="display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid rgba(255,255,255,0.04);">&lt;span style="font-size:12px;color:#7a7a96;">Memory bus&lt;/span>&lt;span style="font-size:13px;font-weight:500;color:#c8c8dc;">256-bit&lt;/span>&lt;/div>
&lt;div style="display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid rgba(255,255,255,0.04);">&lt;span style="font-size:12px;color:#7a7a96;">Bandwidth&lt;/span>&lt;span style="font-size:13px;font-weight:500;color:#c8c8dc;">717 GB/s&lt;/span>&lt;/div>
&lt;div style="display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid rgba(255,255,255,0.04);">&lt;span style="font-size:12px;color:#7a7a96;">TDP&lt;/span>&lt;span style="font-size:13px;font-weight:500;color:#76b900;">320W&lt;/span>&lt;/div>
&lt;div style="display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid rgba(255,255,255,0.04);">&lt;span style="font-size:12px;color:#7a7a96;">PCIe&lt;/span>&lt;span style="font-size:13px;font-weight:500;color:#c8c8dc;">4.0 x16&lt;/span>&lt;/div>
&lt;div style="display:flex;justify-content:space-between;padding:9px 0;">&lt;span style="font-size:12px;color:#7a7a96;">Used street&lt;/span>&lt;span style="font-size:15px;font-weight:600;color:#76b900;">~$800&lt;/span>&lt;/div>
&lt;/div>
&lt;/div>
&lt;!-- VS DIVIDER -->
&lt;div style="display:flex;flex-direction:column;align-items:center;padding-top:58px;">
&lt;div style="width:1px;height:100%;min-height:320px;background:linear-gradient(180deg,transparent 0%,rgba(255,255,255,0.08) 15%,rgba(255,255,255,0.08) 85%,transparent 100%);position:relative;">
&lt;div style="position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#0a0a23;border:1px solid rgba(255,255,255,0.12);border-radius:50%;width:32px;height:32px;display:flex;align-items:center;justify-content:center;">
&lt;span style="font-size:11px;font-weight:700;color:#9a9ab5;letter-spacing:0.5px;">VS&lt;/span>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;!-- 4090 COLUMN -->
&lt;div>
&lt;div style="text-align:center;margin-bottom:18px;">
&lt;div style="font-size:15px;font-weight:600;color:#c8ff00;">RTX 4090&lt;/div>
&lt;div style="font-size:11px;color:#555570;margin-top:2px;">NVIDIA · Ada Lovelace&lt;/div>
&lt;/div>
&lt;div style="background:rgba(200,255,0,0.06);border:1px solid rgba(200,255,0,0.18);border-radius:10px;padding:14px 16px;">
&lt;div style="display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid rgba(255,255,255,0.04);">&lt;span style="font-size:12px;color:#7a7a96;">CUDA cores&lt;/span>&lt;span style="font-size:13px;font-weight:500;color:#c8ff00;">16,384&lt;/span>&lt;/div>
&lt;div style="display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid rgba(255,255,255,0.04);">&lt;span style="font-size:12px;color:#7a7a96;">VRAM&lt;/span>&lt;span style="font-size:13px;font-weight:500;color:#c8ff00;">24 GB GDDR6X&lt;/span>&lt;/div>
&lt;div style="display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid rgba(255,255,255,0.04);">&lt;span style="font-size:12px;color:#7a7a96;">Memory bus&lt;/span>&lt;span style="font-size:13px;font-weight:500;color:#c8ff00;">384-bit&lt;/span>&lt;/div>
&lt;div style="display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid rgba(255,255,255,0.04);">&lt;span style="font-size:12px;color:#7a7a96;">Bandwidth&lt;/span>&lt;span style="font-size:13px;font-weight:500;color:#c8ff00;">1,008 GB/s&lt;/span>&lt;/div>
&lt;div style="display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid rgba(255,255,255,0.04);">&lt;span style="font-size:12px;color:#7a7a96;">TDP&lt;/span>&lt;span style="font-size:13px;font-weight:500;color:#c8c8dc;">450W&lt;/span>&lt;/div>
&lt;div style="display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid rgba(255,255,255,0.04);">&lt;span style="font-size:12px;color:#7a7a96;">PCIe&lt;/span>&lt;span style="font-size:13px;font-weight:500;color:#c8c8dc;">4.0 x16&lt;/span>&lt;/div>
&lt;div style="display:flex;justify-content:space-between;padding:9px 0;">&lt;span style="font-size:12px;color:#7a7a96;">Used street&lt;/span>&lt;span style="font-size:15px;font-weight:600;color:#c8ff00;">~$1,500&lt;/span>&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;!-- BENCHMARKS -->
&lt;section>
&lt;h2>Performance: The Numbers Are What They Are&lt;/h2>
&lt;p>Aggregated across a 20-game benchmark suite, the &lt;strong>RTX 4090 is roughly 27–28% faster than the RTX 4080 at 4K&lt;/strong> (broader review aggregates put the 4K average closer to 30–34%). That figure is consistent across published third-party testing — &lt;a href="https://www.pcworld.com/article/1441779/nvidia-rtx-4090-vs-rtx-4080.html" rel="noopener nofollow">PCWorld&lt;/a>, Technical City, and NanoReview all land in the same range. It is not a controversial number. To be clear about sourcing: neither card is on the TechFuelHQ bench, so every performance figure on this page is aggregated from named third-party testing rather than first-party measurement.&lt;/p>
&lt;p>What changes is which games get hit hardest by that gap:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>4K, max settings, no upscaling:&lt;/strong> 4090 is 25–40% faster, depending on title. Cyberpunk 2077 with path tracing on, Alan Wake 2, MSFS 2024 — all show the 4090 stretching its legs. The 4080 is hitting 100 FPS, the 4090 is hitting 130.&lt;/li>
&lt;li>&lt;strong>1440p, max settings:&lt;/strong> The gap collapses to 12–18%. The 4080 is already so fast at 1440p that the 4090's extra silicon spends a chunk of its time waiting on the CPU. If you have a high-refresh 1440p monitor, the 4090's premium is mostly invisible.&lt;/li>
&lt;li>&lt;strong>1080p:&lt;/strong> Don't buy either of these for 1080p. You're CPU-bound by frame 2.&lt;/li>
&lt;li>&lt;strong>Ray tracing, 4K:&lt;/strong> Biggest 4090 wins. The 24GB VRAM headroom and the 191 RT cores (vs the 4080's 113) mean the 4090 can sustain RT at 4K in titles where the 4080 has to drop settings or lean on DLSS Performance.&lt;/li>
&lt;/ul>
&lt;p>The math nobody likes: at 4K with DLSS Quality on, the 4080 is fast enough for everything currently shipped. The 4090 is fast enough for everything currently shipped, with a buffer for whatever lands in the next 24 months. That buffer is the entire pitch.&lt;/p>
&lt;/section>
&lt;img src="https://techfuelhq.com/images/gpu-reviews/benchmark-fps-4080-vs-4090.svg" alt="RTX 4080 vs RTX 4090 benchmark FPS chart across 6 games at 4K resolution showing 25-40% performance gap" width="1100" height="520" loading="lazy" style="display:block;margin:1.5rem auto;max-width:100%;" />
&lt;!-- VALUE -->
&lt;section>
&lt;h2>Cost Per Frame Is the Most Honest Metric&lt;/h2>
&lt;p>Hardware Times' 4K benchmark suite worked out to &lt;strong>0.089 FPS per dollar for the 4080 Super&lt;/strong> (at $999) and &lt;strong>0.066 FPS per dollar for the 4090&lt;/strong> (at $1,699). The 4080 Super is roughly 35% better value per frame.&lt;/p>
&lt;p>Used market shifts the math but doesn't flip it. Used 4080 Super at $800 lands around 0.111 FPS/$. Used 4090 at $1,500 lands around 0.075 FPS/$. The 4090's premium narrows on the used market, but it doesn't disappear.&lt;/p>
&lt;p>Power costs add insult. Over a 3-year ownership window with 4 hours/day of gaming load at average US electricity rates, the 4090 will burn roughly &lt;strong>$130–$170 more in electricity&lt;/strong> than the 4080. That's not life-changing money, but it's a meaningful chunk of the price gap if you measure it.&lt;/p>
&lt;/section>
&lt;img src="https://techfuelhq.com/images/gpu-reviews/cost-per-frame-4080-vs-4090.svg" alt="RTX 4080 vs RTX 4090 cost per frame analysis showing 4080 Super delivers 35% better value per frame" width="1100" height="520" loading="lazy" style="display:block;margin:1.5rem auto;max-width:100%;" />
&lt;!-- VERDICT -->
&lt;section>
&lt;h2>The Verdict&lt;/h2>
&lt;p>&lt;strong>Buy the RTX 4080 (or 4080 Super) if:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>You game at 1440p, even high-refresh 1440p — the 4090 is wasted on you&lt;/li>
&lt;li>You game at 4K and you're fine with DLSS Quality being part of your playbook&lt;/li>
&lt;li>You don't run local AI workloads, large-scale 3D, or 8K video timelines&lt;/li>
&lt;li>You want lower temps, less noise, and a power budget under 700W PSU territory&lt;/li>
&lt;li>You found a clean used 4080 Super under $800&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Buy the RTX 4090 if:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>You run local LLMs, Stable Diffusion at scale, or Blender renders that need 24GB&lt;/li>
&lt;li>You game at native 4K, max settings, no upscaling, and you refuse to touch DLSS&lt;/li>
&lt;li>You're a content creator where render time directly trades against billable hours&lt;/li>
&lt;li>You already own a 1000W+ PSU and a case that can dissipate 450W comfortably&lt;/li>
&lt;li>You want a card that won't feel slow for 3+ years and the price gap doesn't change your life&lt;/li>
&lt;/ul>
&lt;p>Everyone else: the 4080 is the answer. The 4090 is faster, but it's not 60% more card for 60% more money. It's about 28% more frames for double the price, and that math only works if VRAM, AI workloads, or "I need the best, period" is part of your buying criteria.&lt;/p>
&lt;p>Both cards aged into a sweet spot. The 4080 Super is the smart-money flagship. The 4090 is the prosumer card that happens to also game. Pick the one that matches your actual use case, not your wishlist.&lt;/p>
&lt;p>If 1440p is your target resolution, the newer generation has moved the budget options forward considerably — see the &lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5060-ti-vs-rx-9060-xt-1440p-showdown-2026/">RTX 5060 Ti vs RX 9060 XT — 1440p showdown 2026&lt;/a> for the current contenders at that tier. And if you're ready to build around the 5060 Ti class, the &lt;a href="https://techfuelhq.com/pc-builds/1500-dollar-rtx-5060-ti-1440p-build-2026/">$1500 RTX 5060 Ti 1440p build (2026)&lt;/a> covers a complete system at that budget.&lt;/p>
&lt;/section></description></item><item><title>Best Homelab Networking Gear Under $200 (2026): Routers &amp; APs</title><link>https://techfuelhq.com/articles/best-homelab-networking-gear-under-200/</link><pubDate>Mon, 06 Apr 2026 00:00:00 -0500</pubDate><guid>https://techfuelhq.com/articles/best-homelab-networking-gear-under-200/</guid><description>&lt;img src="https://techfuelhq.com/images/articles/hero-networking-gear-under-200.svg" alt="Budget homelab networking gear under $200 for 2026: 10GbE switches, routers, and Wi-Fi 7 access points compared on price and power draw" width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;" />
&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-04-06 · Updated 2026-07-13 · ~13 min read · St. Louis County, MO&lt;/p>
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR · The under-$200 picks&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>Best homelab router:&lt;/strong> &lt;strong>MikroTik RB5009UG+S+IN&lt;/strong> (~$199–$219) — 7× 1GbE + 2.5GbE + 10G SFP+ on RouterOS. The one to grow into.&lt;/li>
&lt;li>&lt;strong>Best router if you want polish:&lt;/strong> &lt;strong>UniFi Cloud Gateway Max&lt;/strong> ($199, 2.3 Gbps IPS) for the UniFi stack, or the &lt;strong>UCG Ultra&lt;/strong> ($129) for a gigabit connection.&lt;/li>
&lt;li>&lt;strong>Best OpenWrt / VPN router:&lt;/strong> &lt;strong>GL.iNet Flint 2&lt;/strong> ($170) — ~900 Mbps WireGuard out of the box; the &lt;strong>Flint 3e&lt;/strong> (~$180) adds Wi-Fi 7.&lt;/li>
&lt;li>&lt;strong>4-port 10GbE switch:&lt;/strong> &lt;strong>MikroTik CRS305&lt;/strong> (~$140 SFP+) or &lt;strong>CRS304-4XG-IN&lt;/strong> (~$199 RJ45). Fanless.&lt;/li>
&lt;li>&lt;strong>Wi-Fi 7 AP:&lt;/strong> &lt;strong>Ubiquiti U7 Lite&lt;/strong> ($99) — the cheapest real Wi-Fi 7 with a 2.5G uplink (needs a UniFi controller).&lt;/li>
&lt;/ul>
&lt;p style="margin:0.75rem 0 0 0;font-size:0.9rem;color:#a0a0b8;">Prices snapshot 2026-07-13 from MikroTik, the Ubiquiti store, GL.iNet, Amazon and B&amp;amp;H. Pair with the [10GbE homelab networking guide](/networking/10gbe-home-networking-budget-2026/) and the [homelab firewall / router stack comparison](/networking/homelab-firewall-router-stack-2026/) for the full edge story.&lt;/p>
&lt;/div>
&lt;section>
&lt;p>Two years ago, "enterprise-grade" homelab networking meant a used rackmount switch that screamed like a hair dryer and a router that needed a certification to configure. That trade is over. In 2026 you can buy a genuinely enterprise-capable edge — VLANs, IDS/IPS, 10-gigabit uplinks, line-rate multi-gig routing — that is silent, sips under 20 watts, and fits under $200 a box. "Enterprise" stopped meaning "loud and second-hand." It means the feature set, and you can get it new.&lt;/p>
&lt;p>This guide is organized the way people actually shop for it: &lt;strong>routers first&lt;/strong> (the single most-asked homelab networking question), then switches, then access points. Every pick has real throughput numbers, a specific job, and honest compromises. And if your answer to "best homelab router" turns out to be "a mini PC running OPNsense" — a completely valid path — the &lt;a href="https://techfuelhq.com/networking/homelab-firewall-router-stack-2026/">firewall / router stack comparison&lt;/a> covers that build in full. This page is about turnkey appliances.&lt;/p>
&lt;/section>
&lt;!-- ROUTERS -->
&lt;section>
&lt;h2>Routers: Start Here&lt;/h2>
&lt;p>The router is the one box every homelab needs, and it's where the "under $200" category changed the most. You no longer choose between "cheap and gigabit" or "expensive and multi-gig." Four appliances cover essentially every homelab, and they win on genuinely different axes — raw ports, dashboard polish, open-source control, or pure routing speed. Pick the one shaped like your priorities.&lt;/p>
&lt;h3>MikroTik RB5009UG+S+IN — The One to Grow Into&lt;/h3>
&lt;p>&lt;strong>Price:&lt;/strong> ~$199–$219 &amp;nbsp;|&amp;nbsp; &lt;strong>Ports:&lt;/strong> 7× 1GbE + 1× 2.5GbE + 1× 10G SFP+ &amp;nbsp;|&amp;nbsp; &lt;strong>CPU:&lt;/strong> Quad-core ARM 1.4 GHz, 1GB RAM &amp;nbsp;|&amp;nbsp; &lt;strong>Power:&lt;/strong> ~12–20W fanless&lt;/p>
&lt;p>MikroTik literally markets this as "the ultimate heavy-duty home lab router," and for once the marketing is right. The port layout is the reason to buy it: seven gigabit ports for your everyday devices, a 2.5GbE port for a fast WAN or a NAS trunk, and — the part that matters as you grow — a 10G SFP+ cage for a fiber uplink to a 10-gigabit switch. Most routers at this price give you two or three ports and call it a day. The RB5009 gives you a real distribution layer in one fanless brick.&lt;/p>
&lt;p>It's the router the r/homelab crowd reaches for when they want to &lt;em>learn&lt;/em> networking rather than click through a wizard. RouterOS 7 exposes firewall chains, bridge VLAN filtering, BGP/OSPF, containers, and scripting — the same tooling MikroTik ships in gear that costs ten times as much. The quad-core CPU with hardware fast-path forwards multi-gig traffic without breaking a sweat; the practical ceiling with a real firewall ruleset lands in the low-multi-gig range, plenty for any residential WAN.&lt;/p>
&lt;p>The honest tradeoff is the same one every MikroTik carries: &lt;strong>RouterOS has a steep learning curve, and there is no built-in Wi-Fi.&lt;/strong> Budget an evening with the documentation and plan to add an access point. If you want a router you can rack (four fit in 1U with the K-79 kit), script, and never outgrow, this is the pick.&lt;/p>
&lt;p>&lt;strong>Best for:&lt;/strong> Homelabbers who want the most ports and the most room to grow, and don't mind a CLI. The default recommendation.&lt;/p>
&lt;h3>UniFi Cloud Gateway Max — $199 Multi-Gig, Zero CLI&lt;/h3>
&lt;p>&lt;strong>Price:&lt;/strong> $199 &amp;nbsp;|&amp;nbsp; &lt;strong>Throughput:&lt;/strong> 2.3 Gbps IPS rated (Dong Knows Tech measured 2 Gbps+ sustained) &amp;nbsp;|&amp;nbsp; &lt;strong>Ports:&lt;/strong> 1× 2.5G WAN + 1× 2.5G LAN + 2× GbE LAN&lt;/p>
&lt;p>If the RB5009 is the enthusiast's router, the UCG Max is the one you buy when you want it to &lt;em>just work&lt;/em> — and when a family member might one day have to touch it. A 2.5G WAN port handles the 2 Gbps ISP plans that are increasingly common, and Dong Knows Tech measured sustained throughput above 2 Gbps with IDS/IPS active — the official 2.3 Gbps figure is conservative, which is unusual for Ubiquiti. Everything runs through the UniFi controller built into the box: VLANs, firewall rules, threat detection, even selectable NVR storage for cameras.&lt;/p>
&lt;p>The single 2.5G LAN port is the main limit — for multiple 2.5G downlinks you'll trunk it to a switch like the Flex 2.5G PoE below. If your budget stretches past this guide, the newer &lt;strong>UCG Fiber&lt;/strong> ($279) pushes 5 Gbps IDS/IPS over a 10G SFP+ port; but at $199 the Max is the sweet spot for a 2 Gbps UniFi build. Prefer the polished path but only have a gigabit connection? The &lt;strong>UCG Ultra&lt;/strong> ($129) does the same job at 1 Gbps with no 2.5G ports — the right entry point for a gigabit UniFi network.&lt;/p>
&lt;p>&lt;strong>Best for:&lt;/strong> Anyone who values a clean dashboard over configurability, or shares the network with non-technical people.&lt;/p>
&lt;h3>GL.iNet Flint 2 (GL-MT6000) — The OpenWrt Workhorse&lt;/h3>
&lt;p>&lt;strong>Price:&lt;/strong> $170 &amp;nbsp;|&amp;nbsp; &lt;strong>Ports:&lt;/strong> 2× 2.5G + 4× 1G &amp;nbsp;|&amp;nbsp; &lt;strong>Power:&lt;/strong> Under 20W &amp;nbsp;|&amp;nbsp; &lt;strong>VPN:&lt;/strong> WireGuard at ~900 Mbps&lt;/p>
&lt;p>The Flint 2 runs OpenWrt out of the box — that's the whole pitch. If you want a router you can SSH into, install packages on, write custom firewall rules for, and treat like a Linux box that happens to route packets, this is the best option at the price. WireGuard throughput measured around 900 Mbps is exceptional for a $170 router; most consumer routers can't push 300 Mbps through a tunnel. Two 2.5GbE ports plus four gigabit ports cover most topologies without a separate switch, and it draws under 20W running 24/7.&lt;/p>
&lt;p>New for 2026: GL.iNet's &lt;strong>Flint 3e (GL-BE6500, ~$180)&lt;/strong> is the successor and still sneaks under $200 — it swaps Wi-Fi 6 for &lt;strong>Wi-Fi 7&lt;/strong> and gives you &lt;strong>five 2.5GbE ports&lt;/strong>. The Flint 2 remains the safer buy today (Wi-Fi 6, thousands of reviews, rock-solid firmware); the Flint 3e is the pick if you specifically want Wi-Fi 7 and more multi-gig ports and don't mind newer firmware. Either way, the built-in Wi-Fi is functional but not the reason to buy — pair it with a real AP.&lt;/p>
&lt;p>&lt;strong>Best for:&lt;/strong> Homelabbers who want full OpenWrt control and the fastest VPN throughput per dollar.&lt;/p>
&lt;h3>MikroTik hAP ax3 — Fast-Path Monster&lt;/h3>
&lt;p>&lt;strong>Price:&lt;/strong> $139 &amp;nbsp;|&amp;nbsp; &lt;strong>Ports:&lt;/strong> 1× 2.5G + 4× 1G &amp;nbsp;|&amp;nbsp; &lt;strong>Wi-Fi:&lt;/strong> AX1800 (Wi-Fi 6) &amp;nbsp;|&amp;nbsp; &lt;strong>Routing:&lt;/strong> 2,657.8 Mbps fast-path&lt;/p>
&lt;p>That fast-path number — 2,657.8 Mbps, straight from MikroTik's own test data — is not a typo. Hardware fast-path offloads packet forwarding to dedicated silicon, so the hAP ax3 routes at nearly 2.7 Gbps when traffic qualifies (unfirewalled, basic routing). Turn on a real firewall ruleset and expect real-world throughput closer to 1.5–2 Gbps depending on complexity — still remarkable for $139. The 2.5G port is your WAN; four gigabit ports handle downstream. Unlike the RB5009, it includes Wi-Fi 6, acceptable for light use.&lt;/p>
&lt;p>Same RouterOS tradeoff as its bigger sibling: powerful, scriptable, and a learning curve. If you already know MikroTik — or want to — the hAP ax3 delivers absurd routing throughput and built-in wireless for the price of a mid-range consumer router.&lt;/p>
&lt;p>&lt;strong>Best for:&lt;/strong> MikroTik-curious builders who want raw routing throughput and a bit of Wi-Fi in one cheap box.&lt;/p>
&lt;/section>
&lt;!-- ========== VISUAL 1 (SIGNATURE): ROUTER SPEC RADAR FINGERPRINTS ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0c1120;padding:26px 22px 20px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
&lt;div style="margin-bottom:6px;">
&lt;div style="font-size:18px;font-weight:600;color:#e8e8f0;letter-spacing:-0.3px;">There's no best homelab router — there's the one shaped like your priorities&lt;/div>
&lt;div style="font-size:12px;color:#8f96b3;margin-top:4px;line-height:1.5;">Each router's &lt;em>shape&lt;/em> is its personality. Bigger toward an axis = stronger there. Relative fit across six axes that matter for homelab use — an at-a-glance read, not a benchmark table.&lt;/div>
&lt;/div>
&lt;div style="display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:16px;">
&lt;!-- CARD: RB5009 -->
&lt;div style="background:rgba(255,255,255,0.02);border:1px solid rgba(255,107,74,0.25);border-radius:10px;padding:10px 8px 6px;min-width:0;">
&lt;div style="text-align:center;font-size:13px;font-weight:700;color:#ff6b4a;">MikroTik RB5009&lt;/div>
&lt;div style="text-align:center;font-size:10px;color:#7a819c;margin-bottom:2px;">ports + routing spike · CLI cost&lt;/div>
&lt;svg viewBox="0 0 200 200" width="100%" style="max-width:230px;display:block;margin:0 auto;" role="img" aria-label="RB5009 radar: high on routing and ports, low on ease of setup">
&lt;polygon points="100.0,36.0 155.4,68.0 155.4,132.0 100.0,164.0 44.6,132.0 44.6,68.0" fill="none" stroke="rgba(255,255,255,0.10)" stroke-width="1"/>
&lt;polygon points="100.0,48.8 144.3,74.4 144.3,125.6 100.0,151.2 55.7,125.6 55.7,74.4" fill="none" stroke="rgba(255,255,255,0.06)" stroke-width="1"/>
&lt;polygon points="100.0,74.4 122.2,87.2 122.2,112.8 100.0,125.6 77.8,112.8 77.8,87.2" fill="none" stroke="rgba(255,255,255,0.05)" stroke-width="1"/>
&lt;line x1="100" y1="100" x2="100" y2="36" stroke="rgba(255,255,255,0.07)"/>&lt;line x1="100" y1="100" x2="155.4" y2="68" stroke="rgba(255,255,255,0.07)"/>&lt;line x1="100" y1="100" x2="155.4" y2="132" stroke="rgba(255,255,255,0.07)"/>&lt;line x1="100" y1="100" x2="100" y2="164" stroke="rgba(255,255,255,0.07)"/>&lt;line x1="100" y1="100" x2="44.6" y2="132" stroke="rgba(255,255,255,0.07)"/>&lt;line x1="100" y1="100" x2="44.6" y2="68" stroke="rgba(255,255,255,0.07)"/>
&lt;polygon points="100.0,36.0 133.3,80.8 155.4,132.0 100.0,151.2 77.8,112.8 55.7,74.4" fill="rgba(255,107,74,0.28)" stroke="#ff6b4a" stroke-width="2" stroke-linejoin="round"/>
&lt;text x="100" y="20" text-anchor="middle" font-size="9" fill="#6a7a99">ROUTE&lt;/text>&lt;text x="172" y="60" text-anchor="middle" font-size="9" fill="#6a7a99">VPN&lt;/text>&lt;text x="172" y="142" text-anchor="middle" font-size="9" fill="#6a7a99">PORTS&lt;/text>&lt;text x="100" y="184" text-anchor="middle" font-size="9" fill="#6a7a99">OPEN&lt;/text>&lt;text x="28" y="142" text-anchor="middle" font-size="9" fill="#6a7a99">EASY&lt;/text>&lt;text x="28" y="60" text-anchor="middle" font-size="9" fill="#6a7a99">VALUE&lt;/text>
&lt;/svg>
&lt;/div>
&lt;!-- CARD: UCG Max -->
&lt;div style="background:rgba(255,255,255,0.02);border:1px solid rgba(74,158,255,0.25);border-radius:10px;padding:10px 8px 6px;min-width:0;">
&lt;div style="text-align:center;font-size:13px;font-weight:700;color:#4a9eff;">UniFi Cloud Gateway Max&lt;/div>
&lt;div style="text-align:center;font-size:10px;color:#7a819c;margin-bottom:2px;">easy spike · closed ecosystem&lt;/div>
&lt;svg viewBox="0 0 200 200" width="100%" style="max-width:230px;display:block;margin:0 auto;" role="img" aria-label="UCG Max radar: high on ease of setup and routing, low on openness">
&lt;polygon points="100.0,36.0 155.4,68.0 155.4,132.0 100.0,164.0 44.6,132.0 44.6,68.0" fill="none" stroke="rgba(255,255,255,0.10)" stroke-width="1"/>
&lt;polygon points="100.0,48.8 144.3,74.4 144.3,125.6 100.0,151.2 55.7,125.6 55.7,74.4" fill="none" stroke="rgba(255,255,255,0.06)" stroke-width="1"/>
&lt;polygon points="100.0,74.4 122.2,87.2 122.2,112.8 100.0,125.6 77.8,112.8 77.8,87.2" fill="none" stroke="rgba(255,255,255,0.05)" stroke-width="1"/>
&lt;line x1="100" y1="100" x2="100" y2="36" stroke="rgba(255,255,255,0.07)"/>&lt;line x1="100" y1="100" x2="155.4" y2="68" stroke="rgba(255,255,255,0.07)"/>&lt;line x1="100" y1="100" x2="155.4" y2="132" stroke="rgba(255,255,255,0.07)"/>&lt;line x1="100" y1="100" x2="100" y2="164" stroke="rgba(255,255,255,0.07)"/>&lt;line x1="100" y1="100" x2="44.6" y2="132" stroke="rgba(255,255,255,0.07)"/>&lt;line x1="100" y1="100" x2="44.6" y2="68" stroke="rgba(255,255,255,0.07)"/>
&lt;polygon points="100.0,48.8 133.3,80.8 133.3,119.2 100.0,125.6 44.6,132.0 55.7,74.4" fill="rgba(74,158,255,0.26)" stroke="#4a9eff" stroke-width="2" stroke-linejoin="round"/>
&lt;text x="100" y="20" text-anchor="middle" font-size="9" fill="#6a7a99">ROUTE&lt;/text>&lt;text x="172" y="60" text-anchor="middle" font-size="9" fill="#6a7a99">VPN&lt;/text>&lt;text x="172" y="142" text-anchor="middle" font-size="9" fill="#6a7a99">PORTS&lt;/text>&lt;text x="100" y="184" text-anchor="middle" font-size="9" fill="#6a7a99">OPEN&lt;/text>&lt;text x="28" y="142" text-anchor="middle" font-size="9" fill="#6a7a99">EASY&lt;/text>&lt;text x="28" y="60" text-anchor="middle" font-size="9" fill="#6a7a99">VALUE&lt;/text>
&lt;/svg>
&lt;/div>
&lt;!-- CARD: Flint 2 -->
&lt;div style="background:rgba(255,255,255,0.02);border:1px solid rgba(56,193,114,0.25);border-radius:10px;padding:10px 8px 6px;min-width:0;">
&lt;div style="text-align:center;font-size:13px;font-weight:700;color:#38c172;">GL.iNet Flint 2&lt;/div>
&lt;div style="text-align:center;font-size:10px;color:#7a819c;margin-bottom:2px;">VPN + openness + value&lt;/div>
&lt;svg viewBox="0 0 200 200" width="100%" style="max-width:230px;display:block;margin:0 auto;" role="img" aria-label="Flint 2 radar: high on VPN, openness and value">
&lt;polygon points="100.0,36.0 155.4,68.0 155.4,132.0 100.0,164.0 44.6,132.0 44.6,68.0" fill="none" stroke="rgba(255,255,255,0.10)" stroke-width="1"/>
&lt;polygon points="100.0,48.8 144.3,74.4 144.3,125.6 100.0,151.2 55.7,125.6 55.7,74.4" fill="none" stroke="rgba(255,255,255,0.06)" stroke-width="1"/>
&lt;polygon points="100.0,74.4 122.2,87.2 122.2,112.8 100.0,125.6 77.8,112.8 77.8,87.2" fill="none" stroke="rgba(255,255,255,0.05)" stroke-width="1"/>
&lt;line x1="100" y1="100" x2="100" y2="36" stroke="rgba(255,255,255,0.07)"/>&lt;line x1="100" y1="100" x2="155.4" y2="68" stroke="rgba(255,255,255,0.07)"/>&lt;line x1="100" y1="100" x2="155.4" y2="132" stroke="rgba(255,255,255,0.07)"/>&lt;line x1="100" y1="100" x2="100" y2="164" stroke="rgba(255,255,255,0.07)"/>&lt;line x1="100" y1="100" x2="44.6" y2="132" stroke="rgba(255,255,255,0.07)"/>&lt;line x1="100" y1="100" x2="44.6" y2="68" stroke="rgba(255,255,255,0.07)"/>
&lt;polygon points="100.0,48.8 155.4,68.0 144.3,125.6 100.0,164.0 55.7,125.6 44.6,68.0" fill="rgba(56,193,114,0.26)" stroke="#38c172" stroke-width="2" stroke-linejoin="round"/>
&lt;text x="100" y="20" text-anchor="middle" font-size="9" fill="#6a7a99">ROUTE&lt;/text>&lt;text x="172" y="60" text-anchor="middle" font-size="9" fill="#6a7a99">VPN&lt;/text>&lt;text x="172" y="142" text-anchor="middle" font-size="9" fill="#6a7a99">PORTS&lt;/text>&lt;text x="100" y="184" text-anchor="middle" font-size="9" fill="#6a7a99">OPEN&lt;/text>&lt;text x="28" y="142" text-anchor="middle" font-size="9" fill="#6a7a99">EASY&lt;/text>&lt;text x="28" y="60" text-anchor="middle" font-size="9" fill="#6a7a99">VALUE&lt;/text>
&lt;/svg>
&lt;/div>
&lt;!-- CARD: hAP ax3 -->
&lt;div style="background:rgba(255,255,255,0.02);border:1px solid rgba(244,185,66,0.28);border-radius:10px;padding:10px 8px 6px;min-width:0;">
&lt;div style="text-align:center;font-size:13px;font-weight:700;color:#f4b942;">MikroTik hAP ax3&lt;/div>
&lt;div style="text-align:center;font-size:10px;color:#7a819c;margin-bottom:2px;">routing + value · fewer ports&lt;/div>
&lt;svg viewBox="0 0 200 200" width="100%" style="max-width:230px;display:block;margin:0 auto;" role="img" aria-label="hAP ax3 radar: high on routing and value, low on ports and ease">
&lt;polygon points="100.0,36.0 155.4,68.0 155.4,132.0 100.0,164.0 44.6,132.0 44.6,68.0" fill="none" stroke="rgba(255,255,255,0.10)" stroke-width="1"/>
&lt;polygon points="100.0,48.8 144.3,74.4 144.3,125.6 100.0,151.2 55.7,125.6 55.7,74.4" fill="none" stroke="rgba(255,255,255,0.06)" stroke-width="1"/>
&lt;polygon points="100.0,74.4 122.2,87.2 122.2,112.8 100.0,125.6 77.8,112.8 77.8,87.2" fill="none" stroke="rgba(255,255,255,0.05)" stroke-width="1"/>
&lt;line x1="100" y1="100" x2="100" y2="36" stroke="rgba(255,255,255,0.07)"/>&lt;line x1="100" y1="100" x2="155.4" y2="68" stroke="rgba(255,255,255,0.07)"/>&lt;line x1="100" y1="100" x2="155.4" y2="132" stroke="rgba(255,255,255,0.07)"/>&lt;line x1="100" y1="100" x2="100" y2="164" stroke="rgba(255,255,255,0.07)"/>&lt;line x1="100" y1="100" x2="44.6" y2="132" stroke="rgba(255,255,255,0.07)"/>&lt;line x1="100" y1="100" x2="44.6" y2="68" stroke="rgba(255,255,255,0.07)"/>
&lt;polygon points="100.0,36.0 133.3,80.8 122.2,112.8 100.0,151.2 77.8,112.8 44.6,68.0" fill="rgba(244,185,66,0.26)" stroke="#f4b942" stroke-width="2" stroke-linejoin="round"/>
&lt;text x="100" y="20" text-anchor="middle" font-size="9" fill="#6a7a99">ROUTE&lt;/text>&lt;text x="172" y="60" text-anchor="middle" font-size="9" fill="#6a7a99">VPN&lt;/text>&lt;text x="172" y="142" text-anchor="middle" font-size="9" fill="#6a7a99">PORTS&lt;/text>&lt;text x="100" y="184" text-anchor="middle" font-size="9" fill="#6a7a99">OPEN&lt;/text>&lt;text x="28" y="142" text-anchor="middle" font-size="9" fill="#6a7a99">EASY&lt;/text>&lt;text x="28" y="60" text-anchor="middle" font-size="9" fill="#6a7a99">VALUE&lt;/text>
&lt;/svg>
&lt;/div>
&lt;/div>
&lt;div style="font-size:10.5px;color:#6a7088;margin-top:12px;line-height:1.5;">Axes: &lt;strong>ROUTE&lt;/strong> raw routing throughput · &lt;strong>VPN&lt;/strong> WireGuard speed · &lt;strong>PORTS&lt;/strong> count + multi-gig / SFP+ · &lt;strong>OPEN&lt;/strong> hackability (SSH, packages, scripting) · &lt;strong>EASY&lt;/strong> setup polish / low learning curve · &lt;strong>VALUE&lt;/strong> capability per dollar.&lt;/div>
&lt;div style="text-align:right;margin-top:4px;font-size:10px;color:#44485e;">techfuelhq.com · July 2026&lt;/div>
&lt;/div>
&lt;/div>
&lt;!-- SWITCHES -->
&lt;section>
&lt;h2>Switches: Multi-Gig on a Budget&lt;/h2>
&lt;h3>MikroTik CRS304-4XG-IN — 10GbE for $199&lt;/h3>
&lt;p>&lt;strong>Price:&lt;/strong> $199 &amp;nbsp;|&amp;nbsp; &lt;strong>Ports:&lt;/strong> 4× 10G RJ45 + 1× 1G management &amp;nbsp;|&amp;nbsp; &lt;strong>Power:&lt;/strong> 15W max &amp;nbsp;|&amp;nbsp; &lt;strong>Cooling:&lt;/strong> Passive (fanless)&lt;/p>
&lt;p>Four 10GbE copper ports in a passively cooled box for $199. A year ago this didn't exist at this price. The CRS304 is the fastest way to connect your &lt;a href="https://techfuelhq.com/homelab/">homelab mini PCs&lt;/a> at 10 gigabit without buying enterprise switches off eBay and praying the fans don't wake your neighbors.&lt;/p>
&lt;p>The tradeoffs are real but manageable. Four ports means this is a spine switch or a cluster interconnect, not your entire network. The 1G management port is useful but you'll want a separate switch for your 1G/2.5G devices. And RouterOS has a learning curve — powerful, but not UniFi-pretty. If you've never touched MikroTik, expect to spend an evening with the docs (the same evening the RB5009 asks for — buy both and learn once).&lt;/p>
&lt;p>Passive cooling means zero noise. Fifteen watts max means you can power it from a small UPS without thinking about it. For connecting two to four SFP+-equipped mini PCs (the MS-01, MS-A2, and MS-02 Ultra all have 10G ports), this is the switch to buy. Note: those mini PCs have SFP+ ports while this switch is RJ45 — you'll need 10G RJ45 cables, or grab the SFP+ CRS305 instead and run DACs.&lt;/p>
&lt;p>&lt;strong>Best for:&lt;/strong> Dedicated 10GbE backbone between homelab nodes. Not for whole-network switching.&lt;/p>
&lt;h3>Ubiquiti Flex 2.5G PoE — The Everything Switch&lt;/h3>
&lt;p>&lt;strong>Price:&lt;/strong> $199 &amp;nbsp;|&amp;nbsp; &lt;strong>Ports:&lt;/strong> 8× 2.5GbE PoE++ (60W budget) + 10GbE combo uplink &amp;nbsp;|&amp;nbsp; &lt;strong>Management:&lt;/strong> UniFi controller&lt;/p>
&lt;p>Eight 2.5GbE ports with PoE++ and a 10GbE uplink for $199. This is the switch that makes a full 2.5GbE home network possible at a reasonable price. Plug in your access points (PoE powered), your NAS, your workstation, and your homelab node — all at 2.5 gigabit — with a single 10G uplink to your core switch or router.&lt;/p>
&lt;p>The 60W PoE budget is the main constraint. That's enough for two or three access points and a couple of PoE cameras, but not eight PoE devices simultaneously at full power. Plan your PoE load before buying — the &lt;a href="https://techfuelhq.com/tools/poe-budget-calculator/">PoE power budget calculator&lt;/a> sums your APs, cameras, and cable loss so you size a switch with enough headroom. If you need more PoE wattage, you're looking at the Enterprise line and a much higher price.&lt;/p>
&lt;p>UniFi management is the draw for people who want a slick dashboard. If you're already in the UniFi ecosystem — running a Cloud Gateway, managing VLANs through the controller — the Flex 2.5G integrates perfectly. If you're not in the ecosystem and don't plan to be, the MikroTik gives you more raw speed per dollar.&lt;/p>
&lt;p>&lt;strong>Best for:&lt;/strong> Full 2.5GbE home network with PoE for APs. The general-purpose switch pick.&lt;/p>
&lt;/section>
&lt;!-- ========== VISUAL 2: SELF-CONTAINED THROUGHPUT BARS (replaces Chart.js CDN) ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;padding:26px 22px 18px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;">
&lt;div style="margin-bottom:6px;">
&lt;div style="font-size:18px;font-weight:600;letter-spacing:-0.3px;">Speed, to scale&lt;/div>
&lt;div style="font-size:12px;color:#9a9ab5;margin-top:4px;">Every device on one 0→10 Gbps ruler. Switch = port speed · Router = IPS / fast-path throughput · AP = close-range wireless.&lt;/div>
&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;gap:14px;margin:12px 0 14px;font-size:11px;">
&lt;span style="display:flex;align-items:center;gap:5px;color:#a0a0b8;">&lt;span style="width:10px;height:10px;border-radius:2px;background:#5dca7a;display:inline-block;">&lt;/span>Switches&lt;/span>
&lt;span style="display:flex;align-items:center;gap:5px;color:#a0a0b8;">&lt;span style="width:10px;height:10px;border-radius:2px;background:#5090e0;display:inline-block;">&lt;/span>Routers&lt;/span>
&lt;span style="display:flex;align-items:center;gap:5px;color:#a0a0b8;">&lt;span style="width:10px;height:10px;border-radius:2px;background:#c880e0;display:inline-block;">&lt;/span>Access points&lt;/span>
&lt;/div>
&lt;div style="display:flex;flex-direction:column;gap:9px;">
&lt;!-- each row: label | track(bar) | value -->
&lt;div style="display:flex;align-items:center;gap:10px;">&lt;div style="flex:0 0 128px;min-width:0;font-size:11.5px;color:#c5c5d8;">CRS304 &lt;span style="color:#6f6f88;">switch&lt;/span>&lt;/div>&lt;div style="flex:1 1 auto;min-width:0;background:rgba(255,255,255,0.04);border-radius:3px;height:20px;">&lt;div style="width:100%;height:100%;background:#5dca7a;border-radius:3px;">&lt;/div>&lt;/div>&lt;div style="flex:0 0 62px;text-align:right;font-size:11px;color:#e0e0f0;font-weight:600;">10G&lt;/div>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:10px;">&lt;div style="flex:0 0 128px;min-width:0;font-size:11.5px;color:#c5c5d8;">Flex 2.5G &lt;span style="color:#6f6f88;">switch&lt;/span>&lt;/div>&lt;div style="flex:1 1 auto;min-width:0;background:rgba(255,255,255,0.04);border-radius:3px;height:20px;">&lt;div style="width:25%;height:100%;background:#5dca7a;border-radius:3px;">&lt;/div>&lt;/div>&lt;div style="flex:0 0 62px;text-align:right;font-size:11px;color:#e0e0f0;font-weight:600;">2.5G&lt;/div>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:10px;">&lt;div style="flex:0 0 128px;min-width:0;font-size:11.5px;color:#c5c5d8;">hAP ax3 &lt;span style="color:#6f6f88;">router&lt;/span>&lt;/div>&lt;div style="flex:1 1 auto;min-width:0;background:rgba(255,255,255,0.04);border-radius:3px;height:20px;">&lt;div style="width:26.6%;height:100%;background:#5090e0;border-radius:3px;">&lt;/div>&lt;/div>&lt;div style="flex:0 0 62px;text-align:right;font-size:11px;color:#e0e0f0;font-weight:600;">2.66G*&lt;/div>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:10px;">&lt;div style="flex:0 0 128px;min-width:0;font-size:11.5px;color:#c5c5d8;">RB5009 &lt;span style="color:#6f6f88;">router&lt;/span>&lt;/div>&lt;div style="flex:1 1 auto;min-width:0;background:rgba(255,255,255,0.04);border-radius:3px;height:20px;">&lt;div style="width:25%;height:100%;background:#5090e0;border-radius:3px;">&lt;/div>&lt;/div>&lt;div style="flex:0 0 62px;text-align:right;font-size:11px;color:#e0e0f0;font-weight:600;">2.5G+&lt;/div>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:10px;">&lt;div style="flex:0 0 128px;min-width:0;font-size:11.5px;color:#c5c5d8;">Flint 2 &lt;span style="color:#6f6f88;">router&lt;/span>&lt;/div>&lt;div style="flex:1 1 auto;min-width:0;background:rgba(255,255,255,0.04);border-radius:3px;height:20px;">&lt;div style="width:25%;height:100%;background:#5090e0;border-radius:3px;">&lt;/div>&lt;/div>&lt;div style="flex:0 0 62px;text-align:right;font-size:11px;color:#e0e0f0;font-weight:600;">2.5G&lt;/div>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:10px;">&lt;div style="flex:0 0 128px;min-width:0;font-size:11.5px;color:#c5c5d8;">UCG Max &lt;span style="color:#6f6f88;">router&lt;/span>&lt;/div>&lt;div style="flex:1 1 auto;min-width:0;background:rgba(255,255,255,0.04);border-radius:3px;height:20px;">&lt;div style="width:23%;height:100%;background:#5090e0;border-radius:3px;">&lt;/div>&lt;/div>&lt;div style="flex:0 0 62px;text-align:right;font-size:11px;color:#e0e0f0;font-weight:600;">2.3G IPS&lt;/div>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:10px;">&lt;div style="flex:0 0 128px;min-width:0;font-size:11.5px;color:#c5c5d8;">EAP773 &lt;span style="color:#6f6f88;">AP&lt;/span>&lt;/div>&lt;div style="flex:1 1 auto;min-width:0;background:rgba(255,255,255,0.04);border-radius:3px;height:20px;">&lt;div style="width:20%;height:100%;background:#c880e0;border-radius:3px;">&lt;/div>&lt;/div>&lt;div style="flex:0 0 62px;text-align:right;font-size:11px;color:#e0e0f0;font-weight:600;">~2G&lt;/div>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:10px;">&lt;div style="flex:0 0 128px;min-width:0;font-size:11.5px;color:#c5c5d8;">U7 Lite &lt;span style="color:#6f6f88;">AP&lt;/span>&lt;/div>&lt;div style="flex:1 1 auto;min-width:0;background:rgba(255,255,255,0.04);border-radius:3px;height:20px;">&lt;div style="width:15%;height:100%;background:#c880e0;border-radius:3px;">&lt;/div>&lt;/div>&lt;div style="flex:0 0 62px;text-align:right;font-size:11px;color:#e0e0f0;font-weight:600;">~1.5G&lt;/div>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:10px;">&lt;div style="flex:0 0 128px;min-width:0;font-size:11.5px;color:#c5c5d8;">UCG Ultra &lt;span style="color:#6f6f88;">router&lt;/span>&lt;/div>&lt;div style="flex:1 1 auto;min-width:0;background:rgba(255,255,255,0.04);border-radius:3px;height:20px;">&lt;div style="width:10%;height:100%;background:#5090e0;border-radius:3px;">&lt;/div>&lt;/div>&lt;div style="flex:0 0 62px;text-align:right;font-size:11px;color:#e0e0f0;font-weight:600;">1G&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="font-size:10px;color:#555570;margin-top:10px;">*hAP ax3 fast-path (unfirewalled); ~1.5–2 Gbps with a real ruleset. RB5009 routes at multi-gig with a 10G SFP+ uplink for the fabric beyond 2.5G.&lt;/div>
&lt;div style="text-align:right;margin-top:4px;font-size:10px;color:#44445a;">techfuelhq.com · July 2026&lt;/div>
&lt;/div>
&lt;/div>
&lt;!-- ACCESS POINTS -->
&lt;section>
&lt;h2>Access Points: Wi-Fi 7 Under $200&lt;/h2>
&lt;h3>UniFi U7 Lite — $99 Wi-Fi 7 That Actually Delivers&lt;/h3>
&lt;p>&lt;strong>Price:&lt;/strong> $99 &amp;nbsp;|&amp;nbsp; &lt;strong>Standard:&lt;/strong> Wi-Fi 7, 4 streams &amp;nbsp;|&amp;nbsp; &lt;strong>Uplink:&lt;/strong> 2.5GbE &amp;nbsp;|&amp;nbsp; &lt;strong>Throughput:&lt;/strong> ~1.5 Gbps close range &amp;nbsp;|&amp;nbsp; &lt;strong>Coverage:&lt;/strong> ~1,500 sq ft&lt;/p>
&lt;p>A Wi-Fi 7 access point with a 2.5GbE uplink for $99 — the price of a decent consumer Wi-Fi 6 router. The U7 Lite delivers roughly 1.5 Gbps at close range, enough to saturate the 2.5G uplink and give every device genuinely fast wireless. Want the third band for more capacity in a busy house? The &lt;strong>U7 Pro ($189)&lt;/strong> adds 6 GHz tri-band and still lands under $200.&lt;/p>
&lt;p>Coverage is rated around 1,500 square feet. For a house or apartment, one U7 Lite handles the main living area; a second covers the rest — and at $99 each, two APs cost less than a single premium consumer mesh system.&lt;/p>
&lt;p>The catch: it requires a UniFi controller (software or hardware). If you're running a Cloud Gateway, the controller is built in. If not, you'll run the UniFi Network Application in a &lt;a href="https://techfuelhq.com/tutorials/">Docker container&lt;/a> or on a dedicated machine — free software, but a dependency.&lt;/p>
&lt;p>PoE powered (802.3af). Pair it with the Flex 2.5G PoE switch and you get power and data over one cable with a 2.5G backhaul. That's a clean deployment.&lt;/p>
&lt;p>&lt;strong>Best for:&lt;/strong> UniFi users who want the cheapest path to Wi-Fi 7 with a 2.5G backhaul. The obvious pick.&lt;/p>
&lt;h3>TP-Link Omada EAP773 — Tri-Band With a 10G Port&lt;/h3>
&lt;p>&lt;strong>Price:&lt;/strong> ~$189 &amp;nbsp;|&amp;nbsp; &lt;strong>Standard:&lt;/strong> Wi-Fi 7 tri-band &amp;nbsp;|&amp;nbsp; &lt;strong>Uplink:&lt;/strong> 10GbE &amp;nbsp;|&amp;nbsp; &lt;strong>Cooling:&lt;/strong> Runs hot&lt;/p>
&lt;p>The EAP773 is the high-end option: tri-band Wi-Fi 7 with a 10GbE uplink, so your wireless backhaul won't bottleneck on a 2.5G link when several clients saturate the radios at once. For a busy network with a lot of wireless devices, that 10G uplink matters.&lt;/p>
&lt;p>The tradeoffs are meaningful. The EAP773 runs hot — users report noticeably higher surface temperatures than competing APs. It doesn't include a PoE injector, so you'll need a PoE switch or a separate injector (add $20–30). And it needs the Omada controller (hardware OC200/OC300 or the free software controller). If you're in the Omada ecosystem this is fine; if you're mixing vendors, it's another management plane.&lt;/p>
&lt;p>&lt;strong>Best for:&lt;/strong> High-density wireless or Omada-ecosystem users who need tri-band Wi-Fi 7 with a 10G wired backhaul.&lt;/p>
&lt;/section>
&lt;!-- ========== VISUAL 3: FEATURE COMPARISON TABLES ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;padding:28px 16px 20px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;">
&lt;div style="text-align:center;margin-bottom:20px;">
&lt;div style="font-size:18px;font-weight:600;letter-spacing:-0.3px;">Every pick, compared by category&lt;/div>
&lt;div style="font-size:12px;color:#9a9ab5;margin-top:4px;">Specs that matter for homelab use · July 2026 pricing&lt;/div>
&lt;/div>
&lt;!-- ROUTERS TABLE -->
&lt;div style="margin-bottom:20px;">
&lt;div style="font-size:13px;font-weight:600;color:#5090e0;margin-bottom:8px;padding-left:10px;">ROUTERS&lt;/div>
&lt;div style="overflow-x:auto;">
&lt;table style="width:100%;max-width:820px;margin:0 auto;border-collapse:collapse;font-size:12px;">
&lt;thead>&lt;tr>
&lt;th style="text-align:left;padding:9px;border-bottom:1.5px solid rgba(80,144,224,0.3);color:#7a7a96;font-weight:500;font-size:11px;">&lt;/th>
&lt;th style="text-align:center;padding:9px;border-bottom:1.5px solid rgba(80,144,224,0.3);color:#5090e0;font-weight:600;font-size:11px;">RB5009&lt;/th>
&lt;th style="text-align:center;padding:9px;border-bottom:1.5px solid rgba(80,144,224,0.3);color:#5090e0;font-weight:600;font-size:11px;">UCG Max&lt;/th>
&lt;th style="text-align:center;padding:9px;border-bottom:1.5px solid rgba(80,144,224,0.3);color:#5090e0;font-weight:600;font-size:11px;">UCG Ultra&lt;/th>
&lt;th style="text-align:center;padding:9px;border-bottom:1.5px solid rgba(80,144,224,0.3);color:#5090e0;font-weight:600;font-size:11px;">Flint 2&lt;/th>
&lt;th style="text-align:center;padding:9px;border-bottom:1.5px solid rgba(80,144,224,0.3);color:#5090e0;font-weight:600;font-size:11px;">hAP ax3&lt;/th>
&lt;/tr>&lt;/thead>
&lt;tbody>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">&lt;td style="padding:8px 9px;color:#9090a8;">Price&lt;/td>&lt;td style="padding:8px;text-align:center;color:#e0e0f0;">~$210&lt;/td>&lt;td style="padding:8px;text-align:center;color:#e0e0f0;">$199&lt;/td>&lt;td style="padding:8px;text-align:center;color:#e0e0f0;">$129&lt;/td>&lt;td style="padding:8px;text-align:center;color:#e0e0f0;">$170&lt;/td>&lt;td style="padding:8px;text-align:center;color:#e0e0f0;">$139&lt;/td>&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">&lt;td style="padding:8px 9px;color:#9090a8;">Routing&lt;/td>&lt;td style="padding:8px;text-align:center;color:#5090e0;font-weight:500;">Multi-gig&lt;/td>&lt;td style="padding:8px;text-align:center;color:#e0e0f0;">2.3G IPS&lt;/td>&lt;td style="padding:8px;text-align:center;color:#e0e0f0;">1G IPS&lt;/td>&lt;td style="padding:8px;text-align:center;color:#e0e0f0;">~2.5G&lt;/td>&lt;td style="padding:8px;text-align:center;color:#5090e0;font-weight:500;">2.66G*&lt;/td>&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">&lt;td style="padding:8px 9px;color:#9090a8;">2.5G ports&lt;/td>&lt;td style="padding:8px;text-align:center;color:#e0e0f0;">1&lt;/td>&lt;td style="padding:8px;text-align:center;color:#e0e0f0;">2&lt;/td>&lt;td style="padding:8px;text-align:center;color:#ed6a5a;">0&lt;/td>&lt;td style="padding:8px;text-align:center;color:#e0e0f0;">2&lt;/td>&lt;td style="padding:8px;text-align:center;color:#e0e0f0;">1&lt;/td>&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">&lt;td style="padding:8px 9px;color:#9090a8;">10G uplink&lt;/td>&lt;td style="padding:8px;text-align:center;color:#5090e0;font-weight:500;">SFP+&lt;/td>&lt;td style="padding:8px;text-align:center;color:#ed6a5a;">No&lt;/td>&lt;td style="padding:8px;text-align:center;color:#ed6a5a;">No&lt;/td>&lt;td style="padding:8px;text-align:center;color:#ed6a5a;">No&lt;/td>&lt;td style="padding:8px;text-align:center;color:#ed6a5a;">No&lt;/td>&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">&lt;td style="padding:8px 9px;color:#9090a8;">Wi-Fi&lt;/td>&lt;td style="padding:8px;text-align:center;color:#ed6a5a;">None&lt;/td>&lt;td style="padding:8px;text-align:center;color:#ed6a5a;">None&lt;/td>&lt;td style="padding:8px;text-align:center;color:#ed6a5a;">None&lt;/td>&lt;td style="padding:8px;text-align:center;color:#e0e0f0;">Wi-Fi 6&lt;/td>&lt;td style="padding:8px;text-align:center;color:#e0e0f0;">Wi-Fi 6&lt;/td>&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">&lt;td style="padding:8px 9px;color:#9090a8;">VPN (WG)&lt;/td>&lt;td style="padding:8px;text-align:center;color:#e0e0f0;">Yes&lt;/td>&lt;td style="padding:8px;text-align:center;color:#e0e0f0;">Built-in&lt;/td>&lt;td style="padding:8px;text-align:center;color:#e0e0f0;">Built-in&lt;/td>&lt;td style="padding:8px;text-align:center;color:#5090e0;font-weight:500;">~900 Mbps&lt;/td>&lt;td style="padding:8px;text-align:center;color:#e0e0f0;">Yes&lt;/td>&lt;/tr>
&lt;tr>&lt;td style="padding:8px 9px;color:#9090a8;">Ecosystem&lt;/td>&lt;td style="padding:8px;text-align:center;color:#e0e0f0;">RouterOS&lt;/td>&lt;td style="padding:8px;text-align:center;color:#e0e0f0;">UniFi&lt;/td>&lt;td style="padding:8px;text-align:center;color:#e0e0f0;">UniFi&lt;/td>&lt;td style="padding:8px;text-align:center;color:#e0e0f0;">OpenWrt&lt;/td>&lt;td style="padding:8px;text-align:center;color:#e0e0f0;">RouterOS&lt;/td>&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;div style="font-size:10px;color:#555570;padding:6px 10px 0;">*hAP ax3 fast-path, unfirewalled. Flint 2's Wi-Fi 7 successor, the Flint 3e (~$180), adds five 2.5G ports.&lt;/div>
&lt;/div>
&lt;!-- SWITCHES TABLE -->
&lt;div style="margin-bottom:20px;">
&lt;div style="font-size:13px;font-weight:600;color:#5dca7a;margin-bottom:8px;padding-left:10px;">SWITCHES&lt;/div>
&lt;div style="overflow-x:auto;">
&lt;table style="width:100%;max-width:720px;margin:0 auto;border-collapse:collapse;font-size:12.5px;">
&lt;thead>&lt;tr>
&lt;th style="text-align:left;padding:10px;border-bottom:1.5px solid rgba(93,202,122,0.3);color:#7a7a96;font-weight:500;font-size:11px;">&lt;/th>
&lt;th style="text-align:center;padding:10px;border-bottom:1.5px solid rgba(93,202,122,0.3);color:#5dca7a;font-weight:600;">MikroTik CRS304&lt;/th>
&lt;th style="text-align:center;padding:10px;border-bottom:1.5px solid rgba(93,202,122,0.3);color:#5dca7a;font-weight:600;">Ubiquiti Flex 2.5G PoE&lt;/th>
&lt;/tr>&lt;/thead>
&lt;tbody>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">&lt;td style="padding:8px 10px;color:#9090a8;">Price&lt;/td>&lt;td style="padding:8px;text-align:center;color:#e0e0f0;">$199&lt;/td>&lt;td style="padding:8px;text-align:center;color:#e0e0f0;">$199&lt;/td>&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">&lt;td style="padding:8px 10px;color:#9090a8;">Ports&lt;/td>&lt;td style="padding:8px;text-align:center;color:#5dca7a;font-weight:500;">4× 10G RJ45&lt;/td>&lt;td style="padding:8px;text-align:center;color:#e0e0f0;">8× 2.5G PoE++&lt;/td>&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">&lt;td style="padding:8px 10px;color:#9090a8;">Uplink&lt;/td>&lt;td style="padding:8px;text-align:center;color:#e0e0f0;">1× 1G mgmt&lt;/td>&lt;td style="padding:8px;text-align:center;color:#5dca7a;font-weight:500;">10G combo&lt;/td>&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">&lt;td style="padding:8px 10px;color:#9090a8;">PoE&lt;/td>&lt;td style="padding:8px;text-align:center;color:#ed6a5a;">No&lt;/td>&lt;td style="padding:8px;text-align:center;color:#5dca7a;font-weight:500;">60W budget&lt;/td>&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">&lt;td style="padding:8px 10px;color:#9090a8;">Cooling&lt;/td>&lt;td style="padding:8px;text-align:center;color:#5dca7a;font-weight:500;">Passive (silent)&lt;/td>&lt;td style="padding:8px;text-align:center;color:#e0e0f0;">Fan&lt;/td>&lt;/tr>
&lt;tr>&lt;td style="padding:8px 10px;color:#9090a8;">Best for&lt;/td>&lt;td style="padding:8px;text-align:center;color:#8a8a9e;font-size:11px;">10G node backbone&lt;/td>&lt;td style="padding:8px;text-align:center;color:#8a8a9e;font-size:11px;">Full 2.5G + PoE network&lt;/td>&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;/div>
&lt;!-- APs TABLE -->
&lt;div>
&lt;div style="font-size:13px;font-weight:600;color:#c880e0;margin-bottom:8px;padding-left:10px;">ACCESS POINTS&lt;/div>
&lt;div style="overflow-x:auto;">
&lt;table style="width:100%;max-width:720px;margin:0 auto;border-collapse:collapse;font-size:12.5px;">
&lt;thead>&lt;tr>
&lt;th style="text-align:left;padding:10px;border-bottom:1.5px solid rgba(200,128,224,0.3);color:#7a7a96;font-weight:500;font-size:11px;">&lt;/th>
&lt;th style="text-align:center;padding:10px;border-bottom:1.5px solid rgba(200,128,224,0.3);color:#c880e0;font-weight:600;">UniFi U7 Lite&lt;/th>
&lt;th style="text-align:center;padding:10px;border-bottom:1.5px solid rgba(200,128,224,0.3);color:#c880e0;font-weight:600;">Omada EAP773&lt;/th>
&lt;/tr>&lt;/thead>
&lt;tbody>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">&lt;td style="padding:8px 10px;color:#9090a8;">Price&lt;/td>&lt;td style="padding:8px;text-align:center;color:#c880e0;font-weight:500;">$99&lt;/td>&lt;td style="padding:8px;text-align:center;color:#e0e0f0;">~$189&lt;/td>&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">&lt;td style="padding:8px 10px;color:#9090a8;">Wi-Fi&lt;/td>&lt;td style="padding:8px;text-align:center;color:#e0e0f0;">Wi-Fi 7, 4-stream&lt;/td>&lt;td style="padding:8px;text-align:center;color:#c880e0;font-weight:500;">Wi-Fi 7, tri-band&lt;/td>&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">&lt;td style="padding:8px 10px;color:#9090a8;">Uplink&lt;/td>&lt;td style="padding:8px;text-align:center;color:#e0e0f0;">2.5GbE&lt;/td>&lt;td style="padding:8px;text-align:center;color:#c880e0;font-weight:500;">10GbE&lt;/td>&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">&lt;td style="padding:8px 10px;color:#9090a8;">Close-range&lt;/td>&lt;td style="padding:8px;text-align:center;color:#e0e0f0;">~1.5 Gbps&lt;/td>&lt;td style="padding:8px;text-align:center;color:#e0e0f0;">Higher (tri-band)&lt;/td>&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">&lt;td style="padding:8px 10px;color:#9090a8;">PoE injector&lt;/td>&lt;td style="padding:8px;text-align:center;color:#c880e0;font-weight:500;">Not needed (af)&lt;/td>&lt;td style="padding:8px;text-align:center;color:#ed6a5a;">Not included&lt;/td>&lt;/tr>
&lt;tr>&lt;td style="padding:8px 10px;color:#9090a8;">Thermals&lt;/td>&lt;td style="padding:8px;text-align:center;color:#e0e0f0;">Normal&lt;/td>&lt;td style="padding:8px;text-align:center;color:#ed6a5a;">Runs hot&lt;/td>&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;/div>
&lt;div style="text-align:right;margin-top:12px;font-size:10px;color:#44445a;">techfuelhq.com · July 2026&lt;/div>
&lt;/div>
&lt;/div>
&lt;!-- ========== VISUAL 4: STACK BUILDER ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;padding:28px 24px 20px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;">
&lt;div style="text-align:center;margin-bottom:20px;">
&lt;div style="font-size:18px;font-weight:600;letter-spacing:-0.3px;">Build your networking stack&lt;/div>
&lt;div style="font-size:12px;color:#9a9ab5;margin-top:4px;">Pick one from each category — see your total and compatibility&lt;/div>
&lt;/div>
&lt;div style="max-width:520px;margin:0 auto;">
&lt;!-- ROUTER SELECT -->
&lt;div style="margin-bottom:14px;">
&lt;div style="font-size:11px;color:#5090e0;font-weight:600;letter-spacing:0.5px;margin-bottom:6px;">ROUTER&lt;/div>
&lt;div style="display:grid;grid-template-columns:1fr 1fr;gap:6px;" id="rSel">
&lt;button onclick="setR(0)" id="r0" class="sb" style="background:rgba(80,144,224,0.12);border:1.5px solid #5090e0;border-radius:8px;padding:10px;cursor:pointer;text-align:left;font-family:inherit;color:#e0e0f0;">
&lt;div style="font-size:12px;font-weight:600;color:#5090e0;">RB5009&lt;/div>&lt;div style="font-size:10px;color:#7a7a96;">$210 · 10G SFP+&lt;/div>
&lt;/button>
&lt;button onclick="setR(1)" id="r1" class="sb" style="background:rgba(255,255,255,0.03);border:1.5px solid rgba(255,255,255,0.1);border-radius:8px;padding:10px;cursor:pointer;text-align:left;font-family:inherit;color:#e0e0f0;">
&lt;div style="font-size:12px;font-weight:600;color:#8a8a9e;">UCG Max&lt;/div>&lt;div style="font-size:10px;color:#7a7a96;">$199 · 2G+ IPS&lt;/div>
&lt;/button>
&lt;button onclick="setR(2)" id="r2" class="sb" style="background:rgba(255,255,255,0.03);border:1.5px solid rgba(255,255,255,0.1);border-radius:8px;padding:10px;cursor:pointer;text-align:left;font-family:inherit;color:#e0e0f0;">
&lt;div style="font-size:12px;font-weight:600;color:#8a8a9e;">UCG Ultra&lt;/div>&lt;div style="font-size:10px;color:#7a7a96;">$129 · 1G IPS&lt;/div>
&lt;/button>
&lt;button onclick="setR(3)" id="r3" class="sb" style="background:rgba(255,255,255,0.03);border:1.5px solid rgba(255,255,255,0.1);border-radius:8px;padding:10px;cursor:pointer;text-align:left;font-family:inherit;color:#e0e0f0;">
&lt;div style="font-size:12px;font-weight:600;color:#8a8a9e;">Flint 2&lt;/div>&lt;div style="font-size:10px;color:#7a7a96;">$170 · OpenWrt&lt;/div>
&lt;/button>
&lt;button onclick="setR(4)" id="r4" class="sb" style="background:rgba(255,255,255,0.03);border:1.5px solid rgba(255,255,255,0.1);border-radius:8px;padding:10px;cursor:pointer;text-align:left;font-family:inherit;color:#e0e0f0;">
&lt;div style="font-size:12px;font-weight:600;color:#8a8a9e;">hAP ax3&lt;/div>&lt;div style="font-size:10px;color:#7a7a96;">$139 · RouterOS&lt;/div>
&lt;/button>
&lt;/div>
&lt;/div>
&lt;!-- SWITCH SELECT -->
&lt;div style="margin-bottom:14px;">
&lt;div style="font-size:11px;color:#5dca7a;font-weight:600;letter-spacing:0.5px;margin-bottom:6px;">SWITCH&lt;/div>
&lt;div style="display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px;" id="sSel">
&lt;button onclick="setS(0)" id="s0" class="sb" style="background:rgba(93,202,122,0.12);border:1.5px solid #5dca7a;border-radius:8px;padding:10px;cursor:pointer;text-align:left;font-family:inherit;color:#e0e0f0;">
&lt;div style="font-size:12px;font-weight:600;color:#5dca7a;">CRS304&lt;/div>&lt;div style="font-size:10px;color:#7a7a96;">$199 · 4× 10G&lt;/div>
&lt;/button>
&lt;button onclick="setS(1)" id="s1" class="sb" style="background:rgba(255,255,255,0.03);border:1.5px solid rgba(255,255,255,0.1);border-radius:8px;padding:10px;cursor:pointer;text-align:left;font-family:inherit;color:#e0e0f0;">
&lt;div style="font-size:12px;font-weight:600;color:#8a8a9e;">Flex 2.5G PoE&lt;/div>&lt;div style="font-size:10px;color:#7a7a96;">$199 · 8× 2.5G&lt;/div>
&lt;/button>
&lt;button onclick="setS(2)" id="s2" class="sb" style="background:rgba(255,255,255,0.03);border:1.5px solid rgba(255,255,255,0.1);border-radius:8px;padding:10px;cursor:pointer;text-align:left;font-family:inherit;color:#e0e0f0;">
&lt;div style="font-size:12px;font-weight:600;color:#8a8a9e;">None&lt;/div>&lt;div style="font-size:10px;color:#7a7a96;">$0 · Router only&lt;/div>
&lt;/button>
&lt;/div>
&lt;/div>
&lt;!-- AP SELECT -->
&lt;div style="margin-bottom:16px;">
&lt;div style="font-size:11px;color:#c880e0;font-weight:600;letter-spacing:0.5px;margin-bottom:6px;">ACCESS POINT&lt;/div>
&lt;div style="display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px;" id="aSel">
&lt;button onclick="setA(0)" id="a0" class="sb" style="background:rgba(200,128,224,0.12);border:1.5px solid #c880e0;border-radius:8px;padding:10px;cursor:pointer;text-align:left;font-family:inherit;color:#e0e0f0;">
&lt;div style="font-size:12px;font-weight:600;color:#c880e0;">U7 Lite&lt;/div>&lt;div style="font-size:10px;color:#7a7a96;">$99 · Wi-Fi 7&lt;/div>
&lt;/button>
&lt;button onclick="setA(1)" id="a1" class="sb" style="background:rgba(255,255,255,0.03);border:1.5px solid rgba(255,255,255,0.1);border-radius:8px;padding:10px;cursor:pointer;text-align:left;font-family:inherit;color:#e0e0f0;">
&lt;div style="font-size:12px;font-weight:600;color:#8a8a9e;">EAP773&lt;/div>&lt;div style="font-size:10px;color:#7a7a96;">$189 · Tri-band&lt;/div>
&lt;/button>
&lt;button onclick="setA(2)" id="a2" class="sb" style="background:rgba(255,255,255,0.03);border:1.5px solid rgba(255,255,255,0.1);border-radius:8px;padding:10px;cursor:pointer;text-align:left;font-family:inherit;color:#e0e0f0;">
&lt;div style="font-size:12px;font-weight:600;color:#8a8a9e;">None&lt;/div>&lt;div style="font-size:10px;color:#7a7a96;">$0 · Router Wi-Fi&lt;/div>
&lt;/button>
&lt;/div>
&lt;/div>
&lt;!-- RESULTS -->
&lt;div style="background:rgba(255,255,255,0.04);border:1px solid rgba(255,255,255,0.08);border-radius:10px;padding:16px 20px;">
&lt;div style="display:flex;justify-content:space-between;align-items:baseline;margin-bottom:12px;">
&lt;span style="font-size:12px;color:#7a7a96;">TOTAL STACK COST&lt;/span>
&lt;span style="font-size:32px;font-weight:700;color:#5dca7a;" id="stackTotal">$508&lt;/span>
&lt;/div>
&lt;div id="stackItems" style="font-size:12px;color:#8a8a9e;line-height:1.8;margin-bottom:10px;">&lt;/div>
&lt;div id="stackNotes" style="font-size:11px;color:#ffa040;line-height:1.6;border-top:1px solid rgba(255,255,255,0.06);padding-top:10px;">&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;!-- WHO SHOULD BUY WHAT -->
&lt;section>
&lt;h2>Who Should Buy What&lt;/h2>
&lt;h3>The Grow-Into-It Stack ($508)&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>RB5009 (~$210) + CRS304 ($199) + U7 Lite ($99) = $508&lt;/strong> — a 10G SFP+ router uplinked to a 10G switch, with Wi-Fi 7 on top&lt;/li>
&lt;li>Best for: builders who want a real distribution layer they'll never outgrow and don't mind RouterOS&lt;/li>
&lt;li>Add mini PCs with SFP+ later and you've got a 10-gigabit core&lt;/li>
&lt;/ul>
&lt;h3>The UniFi Full Stack ($497)&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>UCG Max ($199) + Flex 2.5G PoE ($199) + U7 Lite ($99) = $497&lt;/strong>&lt;/li>
&lt;li>Best for: users who want a unified dashboard, 2.5GbE everywhere, Wi-Fi 7, and PoE for APs&lt;/li>
&lt;li>The most polished experience with the least CLI time&lt;/li>
&lt;/ul>
&lt;h3>The Budget OpenWrt Stack ($259)&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Flint 2 ($170) + no switch + U7 Lite ($99) = $259&lt;/strong> — or add the CRS304 for a 10G backbone at $458&lt;/li>
&lt;li>Best for: homelabbers who want OpenWrt control, strong VPN throughput, and the lowest entry cost&lt;/li>
&lt;li>The Flint 2's built-in ports handle most topologies without a switch&lt;/li>
&lt;/ul>
&lt;/section>
&lt;!-- VERDICT -->
&lt;section>
&lt;h2>The Verdict&lt;/h2>
&lt;p>Two years ago, "homelab networking under $200" meant an unmanaged gigabit switch and a consumer router. The category now includes a 10G-SFP+ router that racks four-to-1U, multi-gig gateways with IPS, Wi-Fi 7 access points with 2.5G uplinks, and OpenWrt boxes that push 900 Mbps through a WireGuard tunnel. The compromises are honest — port-count limits, PoE budgets, RouterOS learning curves — but the capability is genuinely enterprise-grade, and it's silent.&lt;/p>
&lt;p>If you're not sure, start with the router. The &lt;strong>MikroTik RB5009 (~$210)&lt;/strong> is the pick I'd hand most homelabbers who want room to grow; the &lt;strong>UCG Max ($199)&lt;/strong> is the one for anyone who'd rather have a dashboard than a shell; and the &lt;strong>Flint 2 ($170)&lt;/strong> is the value play if OpenWrt and VPN throughput are what you're after. Add a switch and an AP when the bottleneck actually appears.&lt;/p>
&lt;p>Buy the gear that matches your current ISP speed and your &lt;a href="https://techfuelhq.com/homelab/">homelab topology&lt;/a>. Don't overbuild — a $199 10GbE switch does nothing if everything plugged into it runs at 1G. Upgrade the bottleneck first, then expand from there.&lt;/p>
&lt;/section>
&lt;footer style="margin-top:40px;padding-top:24px;border-top:1px solid rgba(255,255,255,0.06);">
&lt;p>&lt;em>Prices verified July 13, 2026 from manufacturer stores and Amazon. UCG Max throughput independently tested by Dong Knows Tech. MikroTik fast-path and RB5009 specs from vendor datasheets. GL.iNet WireGuard throughput from independent reviews. For hardware to plug into your new network, see &lt;a href="https://techfuelhq.com/homelab/">Homelab&lt;/a>. Setup guides at &lt;a href="https://techfuelhq.com/tutorials/">Tutorials&lt;/a>. GPU and build recommendations at &lt;a href="https://techfuelhq.com/gpu-reviews/">GPU Reviews&lt;/a> and &lt;a href="https://techfuelhq.com/pc-builds/">PC Builds&lt;/a>.&lt;/em>&lt;/p>
&lt;/footer>
&lt;!-- Interactive stack-builder (self-contained, no external dependencies) -->
&lt;script>
// ===== STACK BUILDER =====
var routers=[
{name:'MikroTik RB5009',price:210,eco:'mikrotik',multigWan:true,has25g:true,wifi:false},
{name:'UCG Max',price:199,eco:'unifi',multigWan:true,has25g:true,wifi:false},
{name:'UCG Ultra',price:129,eco:'unifi',multigWan:false,has25g:false,wifi:false},
{name:'GL.iNet Flint 2',price:170,eco:'openwrt',multigWan:true,has25g:true,wifi:true},
{name:'MikroTik hAP ax3',price:139,eco:'mikrotik',multigWan:true,has25g:true,wifi:true}
];
var switches=[
{name:'MikroTik CRS304',price:199,eco:'mikrotik',poe:false,speed:'10G'},
{name:'Ubiquiti Flex 2.5G PoE',price:199,eco:'unifi',poe:true,speed:'2.5G'},
{name:'None',price:0,eco:'any',poe:false,speed:'none'}
];
var aps=[
{name:'UniFi U7 Lite',price:99,eco:'unifi',poeNeeded:true},
{name:'TP-Link EAP773',price:189,eco:'omada',poeNeeded:true},
{name:'None (use router Wi-Fi)',price:0,eco:'any',poeNeeded:false}
];
var sel={r:0,s:0,a:0};
function setR(i){sel.r=i;updateStack();}
function setS(i){sel.s=i;updateStack();}
function setA(i){sel.a=i;updateStack();}
function updateStack(){
// Button styling
for(var i=0;i&lt;5;i++){
var b=document.getElementById('r'+i);
if(i===sel.r){b.style.background='rgba(80,144,224,0.12)';b.style.borderColor='#5090e0';b.querySelector('div').style.color='#5090e0';}
else{b.style.background='rgba(255,255,255,0.03)';b.style.borderColor='rgba(255,255,255,0.1)';b.querySelector('div').style.color='#8a8a9e';}
}
for(var i=0;i&lt;3;i++){
var b=document.getElementById('s'+i);
if(i===sel.s){b.style.background='rgba(93,202,122,0.12)';b.style.borderColor='#5dca7a';b.querySelector('div').style.color='#5dca7a';}
else{b.style.background='rgba(255,255,255,0.03)';b.style.borderColor='rgba(255,255,255,0.1)';b.querySelector('div').style.color='#8a8a9e';}
}
for(var i=0;i&lt;3;i++){
var b=document.getElementById('a'+i);
if(i===sel.a){b.style.background='rgba(200,128,224,0.12)';b.style.borderColor='#c880e0';b.querySelector('div').style.color='#c880e0';}
else{b.style.background='rgba(255,255,255,0.03)';b.style.borderColor='rgba(255,255,255,0.1)';b.querySelector('div').style.color='#8a8a9e';}
}
var r=routers[sel.r],s=switches[sel.s],a=aps[sel.a];
var total=r.price+s.price+a.price;
document.getElementById('stackTotal').textContent='$'+total;
var items=[];
items.push(r.name+' — $'+r.price);
if(s.price>0) items.push(s.name+' — $'+s.price);
if(a.price>0) items.push(a.name+' — $'+a.price);
document.getElementById('stackItems').innerHTML=items.join('&lt;br>');
var notes=[];
// Ecosystem mismatch
var ecos=new Set();
ecos.add(r.eco);
if(s.eco!=='any')ecos.add(s.eco);
if(a.eco!=='any')ecos.add(a.eco);
if(ecos.size>1){
var arr=Array.from(ecos);
notes.push('Mixed ecosystems ('+arr.join(', ')+') — you\'ll manage each vendor\'s UI separately.');
}
// Router has no Wi-Fi and no AP selected
if(!r.wifi &amp;&amp; a.price===0){
notes.push('The '+r.name+' has no built-in Wi-Fi — add an access point or you\'ll be wired-only.');
}
// PoE for AP
if(a.poeNeeded &amp;&amp; !s.poe &amp;&amp; s.price>0){
notes.push('Your AP needs PoE but the '+s.name+' doesn\'t provide it. You\'ll need a PoE injector (~$20).');
}
if(a.poeNeeded &amp;&amp; s.price===0){
notes.push('No switch selected — your AP needs PoE. Use a PoE injector (~$20) or add a PoE switch.');
}
// 1G router + 2.5G switch
if(!r.multigWan &amp;&amp; s.speed==='2.5G'){
notes.push('The UCG Ultra is 1G only — it\'ll bottleneck the 2.5G switch for WAN traffic. Consider the UCG Max for multi-gig WAN.');
}
// CRS304 without router 2.5G
if(s.speed==='10G' &amp;&amp; !r.has25g){
notes.push('The CRS304 is 10G — make sure your connected devices have 10G ports (SFP+ mini PCs, etc.).');
}
// All UniFi
if(ecos.size===1 &amp;&amp; ecos.has('unifi') &amp;&amp; total>0){
notes.push('Full UniFi stack — single dashboard manages everything. Clean setup.');
}
document.getElementById('stackNotes').innerHTML=notes.length?notes.join('&lt;br>'):'&lt;span style="color:#5dca7a;">No compatibility issues. Good stack.&lt;/span>';
}
updateStack();
&lt;/script>
&lt;h2 id="key-takeaways-best-homelab-router-under-200">Key takeaways: best homelab router under $200&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Top pick:&lt;/strong> MikroTik RB5009UG+S+IN (~$199–$219) — 7× 1GbE + 2.5GbE + a 10G SFP+ cage on RouterOS 7. The most ports and the most room to grow, if you&amp;rsquo;ll live with a CLI.&lt;/li>
&lt;li>&lt;strong>Best multi-gig with polish:&lt;/strong> UniFi Cloud Gateway Max ($199) routes 2.3 Gbps with IPS (Dong Knows Tech measured 2+ Gbps sustained) over a 2.5G WAN — the default for 2 Gbps ISP plans in a UniFi stack.&lt;/li>
&lt;li>&lt;strong>Best gigabit / UniFi entry:&lt;/strong> UCG Ultra ($129) handles a 1 Gbps connection with full IDS/IPS, VLANs and firewall rules, but has no 2.5G ports.&lt;/li>
&lt;li>&lt;strong>Best OpenWrt / VPN router:&lt;/strong> GL.iNet Flint 2 ($170) ships OpenWrt, two 2.5GbE ports and &lt;del>900 Mbps WireGuard under 20W; the Flint 3e (&lt;/del>$180) is the Wi-Fi 7 successor, still under $200.&lt;/li>
&lt;li>&lt;strong>Fastest routing per dollar:&lt;/strong> MikroTik hAP ax3 ($139) hits 2,657.8 Mbps fast-path (around 1.5–2 Gbps with a firewall ruleset), with Wi-Fi 6 built in — RouterOS learning curve applies.&lt;/li>
&lt;/ul>
&lt;h2 id="build-the-system-around-it">Build the system around it&lt;/h2>
&lt;p>The &lt;a href="https://techfuelhq.com/tools/pc-builder/">TechFuelHQ PC Builder&lt;/a> is a free, open-source picker with real socket / RAM / PSU / GPU clearance checks and a CC BY 4.0 parts dataset. Use it to size a host that actually fits the gear in this article.&lt;/p>
&lt;h2 id="sources-and-methodology">Sources and methodology&lt;/h2>
&lt;p>Pricing snapshots dated 2026-07-13 from manufacturer stores and live Amazon listings. Throughput figures come from manufacturer datasheets and the published third-party benchmarks cited inline. No first-party bench numbers are invented.&lt;/p>
&lt;p>&lt;strong>Primary sources cited:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://mikrotik.com/products" rel="noopener">MikroTik product pages&lt;/a> — manufacturer specifications for RB5009UG+S+IN, CRS305, CRS304, CRS309, hAP ax3, CSS610&lt;/li>
&lt;li>&lt;a href="https://store.ui.com/" rel="noopener">Ubiquiti store&lt;/a> — Cloud Gateway Ultra / Max / Fiber and U7 Lite / U7 Pro specifications and pricing&lt;/li>
&lt;li>&lt;a href="https://www.gl-inet.com/" rel="noopener">GL.iNet&lt;/a> — Flint 2 (GL-MT6000) and Flint 3e (GL-BE6500) specifications&lt;/li>
&lt;li>&lt;a href="https://www.tp-link.com/us/business-networking/" rel="noopener">TP-Link Omada documentation&lt;/a> — EAP773 and TL-SG108E specifications&lt;/li>
&lt;li>&lt;a href="https://www.servethehome.com/category/networking/" rel="noopener">ServeTheHome network reviews&lt;/a> — third-party MikroTik and Ubiquiti benchmarks&lt;/li>
&lt;li>&lt;a href="https://www.lawrencesystems.com/" rel="noopener">Lawrence Systems&lt;/a> — third-party throughput testing on MikroTik gear&lt;/li>
&lt;li>Amazon and &lt;a href="https://www.bhphotovideo.com/" rel="noopener">B&amp;amp;H Photo&lt;/a> — retailer pricing snapshots&lt;/li>
&lt;/ul>
&lt;p>Email corrections to &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a>.&lt;/p></description></item><item><title>Proxmox vs ESXi in 2026: Free ESXi Is Back, But Does It Matter?</title><link>https://techfuelhq.com/articles/proxmox-vs-esxi-2025/</link><pubDate>Sat, 04 Apr 2026 00:00:00 -0500</pubDate><guid>https://techfuelhq.com/articles/proxmox-vs-esxi-2025/</guid><description>&lt;img src="https://techfuelhq.com/images/articles/hero-proxmox-vs-esxi.svg" alt="Proxmox vs ESXi 2026 comparison hero image showing feature differences and pricing for homelab hypervisors" width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;" />
&lt;!-- INTRO -->
&lt;section>
&lt;p>Proxmox vs ESXi in 2026 comes down to one question that has almost nothing to do with raw speed: after the Broadcom licensing shake-up, which hypervisor is actually worth building on? Broadcom removed the free ESXi tier in early 2024, the homelab world rebuilt on Proxmox, and then — quietly — Broadcom brought free ESXi back.&lt;/p>
&lt;p>Free ESXi is available again, specifically as &lt;strong>ESXi 8.0 Update 3e (Build 24677879)&lt;/strong>, per &lt;a href="https://knowledge.broadcom.com/external/article/399823/vmware-esxi-80-update-3e-now-available-a.html">Broadcom's own KB&lt;/a>. So the natural question returns: should you go back? The short answer for most people is no — but the long answer involves the real feature caps, the current Proxmox release, actual migration experience, and a few scenarios where ESXi still wins. Here's the breakdown.&lt;/p>
&lt;/section>
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR &amp;middot; The 2026 hypervisor call&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>Fresh homelab or small-server build, 2026:&lt;/strong> &lt;strong>Proxmox VE 9.2&lt;/strong>. Free, no caps, clusters out of the box, KVM + LXC, and the post-Broadcom community owns the playbook.&lt;/li>
&lt;li>&lt;strong>On a working paid vSphere license until renewal:&lt;/strong> Stay put, then re-evaluate against the per-core VCF/VVF math below.&lt;/li>
&lt;li>&lt;strong>Paying Broadcom renewal sticker shock:&lt;/strong> &lt;strong>Migrate to Proxmox&lt;/strong>. The built-in VMware import wizard makes it a few-step job — just read the migration gotchas first.&lt;/li>
&lt;li>&lt;strong>VMware certification practice / ESXi muscle memory:&lt;/strong> Free ESXi 8.0U3e is fine — just know the 2-CPU-per-host and 8-vCPU-per-VM caps and that there is no vCenter.&lt;/li>
&lt;li>&lt;strong>Don't:&lt;/strong> Try to cluster free ESXi hosts. The free tier has no vCenter, no vMotion, no HA.&lt;/li>
&lt;/ul>
&lt;p style="margin:0.75rem 0 0 0;font-size:0.9rem;color:#a0a0b8;">Free ESXi 8.0U3e: unlimited VMs, max 2 physical CPUs/host, 8 vCPU/VM cap, no vCenter/vMotion/HA/API &amp;middot; Proxmox VE 9.2: no caps, free clustering, KVM + LXC, full API &amp;middot; Paid VMware: per-core with a 16-core-per-socket minimum.&lt;/p>
&lt;/div>
&lt;!-- THE 2026 REALITY -->
&lt;section>
&lt;h2>The 2026 Reality: Licensing Changed Everything&lt;/h2>
&lt;p>The reason "Proxmox vs ESXi" reads completely differently in 2026 than it did two years ago is licensing, not technology. After Broadcom acquired VMware, perpetual licenses ended and the a-la-carte catalog collapsed into two bundles: VMware vSphere Foundation (VVF) and the fuller VMware Cloud Foundation (VCF).&lt;/p>
&lt;p>Both are priced &lt;strong>per physical core with a mandatory 16-core-per-CPU minimum&lt;/strong>. As &lt;a href="https://knowledge.broadcom.com/external/article/313548/counting-cores-for-vmware-cloud-foundati.html">Broadcom's "Counting Cores" KB&lt;/a> states, "you must license a minimum of 16 physical cores for each CPU in your ESXi hosts, even if a CPU has fewer than 16 cores." A dual-socket host with 8-core CPUs is billed as 2 &amp;times; 16 = 32 cores. The two bundles differ mainly in bundled vSAN storage — VCF grants 1 TiB of vSAN per core, VVF grants 0.25 TiB per core.&lt;/p>
&lt;p>What that does to renewals is the whole story. Practitioners on Hacker News self-report the damage in hard numbers: one Broadcom customer's renewal &lt;a href="https://news.ycombinator.com/item?id=39841363">jumped from 8 million dollars to 100 million&lt;/a>, and another commenter reported going from 66 dollars last year to 3,600 this year. Those specific figures are self-reported anecdotes, not audited. At enterprise scale the pattern is documented on the record: &lt;a href="https://www.theregister.com/software/2024/10/01/att_claims_vmware_offered_it_a_1050_percent_price_rise/511969">AT&amp;T's court filing claimed&lt;/a> Broadcom offered it a 1,050 percent increase. The direction is unambiguous, and it is the single biggest reason shops are evaluating Proxmox at all.&lt;/p>
&lt;p>Proxmox flips the model. The software is free and open source; the optional subscription is per CPU &lt;em>socket&lt;/em> (not per core) and buys the stable enterprise repository plus support, not a license to run. Per the &lt;a href="https://www.proxmox.com/en/products/proxmox-virtual-environment/pricing">official pricing page&lt;/a>, tiers are Community EUR120, Basic EUR370, Standard EUR550, and Premium EUR1,100 per socket per year. Every feature works without any subscription.&lt;/p>
&lt;/section>
&lt;!-- WHAT FREE ESXi GIVES YOU -->
&lt;section>
&lt;h2>What Free ESXi Actually Gives You (and What It Doesn't)&lt;/h2>
&lt;p>Free ESXi 8.0 Update 3e is a real type-1 hypervisor. Unlimited VMs, no time limit, no license fee. For a single-host lab that just needs to run VMs, that is a legitimate offering.&lt;/p>
&lt;p>The caps are where it bites. Per &lt;a href="https://knowledge.broadcom.com/external/article/399823/vmware-esxi-80-update-3e-now-available-a.html">Broadcom's KB&lt;/a>, the free build is limited to a &lt;strong>maximum of 2 physical CPUs per host&lt;/strong> and a &lt;strong>maximum of 8 vCPUs per virtual machine&lt;/strong>. It cannot be managed by vCenter Server. There is no vMotion, no DRS, no HA, and no VADP-based backups. API-based host management is not supported — which kills Terraform, Ansible, and most automation. There is no Broadcom support. Broadcom positions it explicitly for home labs and dev/test, not production.&lt;/p>
&lt;p>The 8-vCPU-per-VM ceiling is the one that bites hardest in practice. A domain-controller test VM is fine on 8 vCPUs. A Plex transcoding VM or a build server that wants 16+ threads hits a hard wall the free tier will not bend on. And because there is no free ESXi 9 tier, the free path dead-ends at 8.0U3e.&lt;/p>
&lt;p>Proxmox VE, by comparison, has no VM limits, no vCPU caps, and no feature lockouts on the free tier. The subscription buys the enterprise repo and support — nothing functional is gated behind it.&lt;/p>
&lt;/section>
&lt;!-- CURRENT PROXMOX -->
&lt;section>
&lt;h2>What You Get With Current Proxmox VE 9.2&lt;/h2>
&lt;p>The current release is &lt;strong>Proxmox VE 9.2, dated May 21, 2026&lt;/strong>, per the &lt;a href="https://pve.proxmox.com/wiki/Roadmap">official roadmap&lt;/a>. It is built on Debian 13.5 "Trixie" with Linux kernel 7.0 as the new stable default, QEMU 11.0, LXC 7.0, and ZFS 2.4, and it ships Ceph Squid 19.2.3 (with Ceph Tentacle 20.2.1 available as a stable option).&lt;/p>
&lt;p>The headline 9.2 features close some of the historical gaps against vSphere: a Dynamic Load Balancer via the Cluster Resource Scheduler that auto-migrates HA-managed guests to reduce node imbalance; software-defined-networking additions including WireGuard and BGP fabric protocols, route maps, and prefix lists; management of custom CPU models from the web UI; and the ability to disarm and re-arm the HA Manager cluster-wide for safer planned maintenance.&lt;/p>
&lt;p>None of that is behind a paywall. Clustering, live migration, HA, the full REST API, and LXC containers alongside KVM VMs are all in the free edition — the exact set of capabilities the free ESXi tier withholds. (New to running both? Our &lt;a href="https://techfuelhq.com/homelab/lxc-vs-vm-proxmox-2026/">LXC vs VM in Proxmox guide&lt;/a> has the decision tree for picking one per workload.)&lt;/p>
&lt;/section>
&lt;!-- ========== FEATURE COMPARISON GRID ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;padding:28px 16px 20px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;">
&lt;div style="text-align:center;margin-bottom:20px;">
&lt;div style="font-size:18px;font-weight:600;letter-spacing:-0.3px;">Feature comparison — free tiers and paid options&lt;/div>
&lt;div style="font-size:12px;color:#9a9ab5;margin-top:4px;">What you actually get at each price point&lt;/div>
&lt;/div>
&lt;div style="overflow-x:auto;">
&lt;table style="width:100%;max-width:820px;margin:0 auto;border-collapse:collapse;font-size:13px;">
&lt;thead>
&lt;tr>
&lt;th style="text-align:left;padding:12px 10px;border-bottom:2px solid rgba(255,255,255,0.1);color:#7a7a96;font-weight:500;font-size:11px;min-width:140px;">&lt;/th>
&lt;th style="text-align:center;padding:12px 10px;border-bottom:2px solid rgba(50,120,220,0.4);color:#5090e0;font-weight:600;min-width:130px;">Free ESXi 8.0U3e&lt;/th>
&lt;th style="text-align:center;padding:12px 10px;border-bottom:2px solid rgba(93,202,122,0.4);color:#5dca7a;font-weight:600;min-width:130px;">Proxmox VE 9.2 (free)&lt;/th>
&lt;th style="text-align:center;padding:12px 10px;border-bottom:2px solid rgba(200,160,60,0.4);color:#c8a03c;font-weight:600;min-width:130px;">Paid VMware (VVF/VCF)&lt;/th>
&lt;th style="text-align:center;padding:12px 10px;border-bottom:2px solid rgba(160,120,220,0.4);color:#a080e0;font-weight:600;min-width:130px;">Proxmox (subscribed)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">
&lt;td style="padding:10px;color:#9090a8;">Price&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#5090e0;font-weight:500;">$0&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#5dca7a;font-weight:500;">$0&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#c8a03c;font-weight:500;">Per-core, 16-core/socket min&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#a080e0;font-weight:500;">EUR120-1,100/yr/socket&lt;/td>
&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">
&lt;td style="padding:10px;color:#9090a8;">Physical CPUs/host&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#ed6a5a;font-weight:500;">Max 2&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#5dca7a;font-weight:500;">No cap&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#e0e0f0;">No cap&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#5dca7a;font-weight:500;">No cap&lt;/td>
&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">
&lt;td style="padding:10px;color:#9090a8;">vCPU cap per VM&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#ed6a5a;font-weight:500;">8 vCPUs&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#5dca7a;font-weight:500;">No cap&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#e0e0f0;">No cap&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#5dca7a;font-weight:500;">No cap&lt;/td>
&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">
&lt;td style="padding:10px;color:#9090a8;">LXC containers&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#ed6a5a;">No&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#5dca7a;font-weight:500;">Yes&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#ed6a5a;">No&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#5dca7a;font-weight:500;">Yes&lt;/td>
&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">
&lt;td style="padding:10px;color:#9090a8;">Centralized mgmt&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#ed6a5a;">No vCenter&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#5dca7a;font-weight:500;">Built-in cluster UI&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#e0e0f0;">vCenter included&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#5dca7a;font-weight:500;">Built-in cluster UI&lt;/td>
&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">
&lt;td style="padding:10px;color:#9090a8;">Live migration&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#ed6a5a;">No&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#5dca7a;font-weight:500;">Yes (free)&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#e0e0f0;">vMotion&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#5dca7a;font-weight:500;">Yes&lt;/td>
&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">
&lt;td style="padding:10px;color:#9090a8;">API / automation&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#ed6a5a;">Not supported&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#5dca7a;font-weight:500;">Full REST API&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#e0e0f0;">Full API&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#5dca7a;font-weight:500;">Full REST API&lt;/td>
&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">
&lt;td style="padding:10px;color:#9090a8;">HA / clustering&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#ed6a5a;">No&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#5dca7a;font-weight:500;">Yes (3+ nodes)&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#e0e0f0;">vSphere HA&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#5dca7a;font-weight:500;">Yes (3+ nodes)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="padding:10px;color:#9090a8;">Vendor support&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#ed6a5a;">None&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#9090a8;">Community only&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#e0e0f0;">Broadcom&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#a080e0;">Proxmox GmbH&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;div style="text-align:right;margin-top:10px;font-size:10px;color:#44445a;">techfuelhq.com &amp;middot; July 2026&lt;/div>
&lt;/div>
&lt;/div>
&lt;!-- PERFORMANCE -->
&lt;section>
&lt;h2>Does Proxmox Actually Run Faster Than ESXi?&lt;/h2>
&lt;p>For most homelab workloads, no meaningful difference — and that is the honest answer. If you are running Jellyfin, Home Assistant, Pi-hole, Nextcloud, and a stack of Docker containers on a &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">mini PC&lt;/a>, the hypervisor overhead is invisible next to your disk, RAM, and the applications themselves.&lt;/p>
&lt;p>Where a real gap shows up is storage throughput on the Linux stack. The most-cited data point is from storage vendor Blockbridge, whose &lt;a href="https://kb.blockbridge.com/technote/proxmox-vs-vmware-nvmetcp">published NVMe/TCP testing&lt;/a> had Proxmox VE beat VMware ESXi in &lt;strong>56 of 57 individual tests&lt;/strong>, with roughly 50 percent IOPS gains. Read that with the obvious caveat: it is vendor-authored testing with a Proxmox integration, so the scenarios favor Linux's storage path. Take it as a genuine signal about Linux NVMe/TCP performance, not a universal hypervisor verdict. If you are building a &lt;a href="https://techfuelhq.com/homelab/proxmox-truenas-unraid-storage-backend-2026/">storage-focused node&lt;/a> serving fast NFS over a &lt;a href="https://techfuelhq.com/networking/10gbe-home-networking-budget-2026/">2.5GbE or 10GbE network&lt;/a>, that advantage is real and measurable.&lt;/p>
&lt;p>One structural note that matters more than benchmark percentages: Proxmox ships with conservative defaults and expects you to tune the CPU governor, I/O scheduler, and NUMA settings, whereas ESXi arrives tuned. That is solvable work, covered in our &lt;a href="https://techfuelhq.com/articles/proxmox-mini-pc-setup/">Proxmox setup guide&lt;/a> — not an architectural ceiling.&lt;/p>
&lt;/section>
&lt;!-- MIGRATION -->
&lt;section>
&lt;h2>Migrating From ESXi to Proxmox: What Practitioners Hit&lt;/h2>
&lt;p>Migration in 2026 is far easier than it was, thanks to the official Proxmox VMware import wizard — the &lt;a href="https://news.ycombinator.com/item?id=39841363">Hacker News discussion&lt;/a> of the wizard frames it as roughly a three-step job (add ESXi as a source, fill the wizard, start the VM). But real production migrators keep hitting the same three traps. Plan around them and the move is smooth; ignore them and you will lose a weekend.&lt;/p>
&lt;p>&lt;strong>Prep VirtIO before you migrate Windows VMs.&lt;/strong> The single most-repeated gotcha: move a Windows VM without preparing VirtIO and it blue-screens with INACCESSIBLE_BOOT_DEVICE because the guest has no driver for the new virtio-scsi disk controller. The safe workflow is to uninstall VMware Tools and install the VirtIO drivers first, import with a SATA/IDE controller so the VM boots the first time, then attach a small dummy virtio-scsi disk to load the driver before converting the boot disk to virtio-scsi.&lt;/p>
&lt;p>&lt;strong>Shared SAN storage historically loses efficient snapshots.&lt;/strong> On FibreChannel or iSCSI shared block storage, Proxmox traditionally supported only thick LVM, not lvm-thin — so a snapshot was not thin and needed as much free space as the original VM (a 5TB VM needed 5TB free just to snapshot). This is the biggest architectural adjustment for shops coming from VMFS. Proxmox VE 9 added a &lt;a href="https://kb.blockbridge.com/technote/proxmox-qcow-snapshots-on-lvm">snapshot-as-volume-chain option&lt;/a> — external QCOW2 overlays on thick LVM over FC/iSCSI SAN — but it is still a technology preview in the 9.x line and not recommended for production, so design around the thick-LVM limit before you commit.&lt;/p>
&lt;p>&lt;strong>Clustering needs three votes, not two.&lt;/strong> A 2-node ESXi mental model backfires on Proxmox HA, which needs three voting members (or a QDevice tiebreaker) to keep quorum. Give corosync its own low-latency network too, or a node that thinks it is isolated will self-fence and reboot, taking its VMs down.&lt;/p>
&lt;p>Despite all that, the dominant sentiment from people who actually migrated is relief: more capable, easier to manage, and Proxmox Backup Server makes backups straightforward. Low regret is the recurring theme.&lt;/p>
&lt;/section>
&lt;!-- ========== DECISION FLOWCHART ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;padding:28px 20px 20px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;">
&lt;div style="text-align:center;margin-bottom:22px;">
&lt;div style="font-size:18px;font-weight:600;letter-spacing:-0.3px;">Which hypervisor fits your setup?&lt;/div>
&lt;div style="font-size:12px;color:#9a9ab5;margin-top:4px;">Follow your situation. Get a real answer.&lt;/div>
&lt;/div>
&lt;svg viewBox="0 0 760 560" xmlns="http://www.w3.org/2000/svg" style="width:100%;display:block;">
&lt;defs>
&lt;marker id="fa" markerWidth="8" markerHeight="6" refX="8" refY="3" orient="auto">&lt;path d="M0,0 L8,3 L0,6" fill="none" stroke="#4a4a6a" stroke-width="1.2"/>&lt;/marker>
&lt;marker id="fg" markerWidth="8" markerHeight="6" refX="8" refY="3" orient="auto">&lt;path d="M0,0 L8,3 L0,6" fill="none" stroke="#5dca7a" stroke-width="1.2"/>&lt;/marker>
&lt;marker id="fb" markerWidth="8" markerHeight="6" refX="8" refY="3" orient="auto">&lt;path d="M0,0 L8,3 L0,6" fill="none" stroke="#5090e0" stroke-width="1.2"/>&lt;/marker>
&lt;/defs>
&lt;!-- START -->
&lt;rect x="230" y="8" width="300" height="44" rx="22" fill="rgba(255,255,255,0.08)" stroke="rgba(255,255,255,0.2)" stroke-width="1"/>
&lt;text x="380" y="35" text-anchor="middle" fill="#e8e8f0" font-size="14" font-weight="600" font-family="-apple-system,sans-serif">What's your situation?&lt;/text>
&lt;!-- Q1: VMware cert? -->
&lt;line x1="380" y1="52" x2="380" y2="86" stroke="#4a4a6a" stroke-width="1.2" marker-end="url(#fa)"/>
&lt;rect x="240" y="88" width="280" height="38" rx="8" fill="rgba(100,100,180,0.1)" stroke="rgba(140,140,200,0.25)" stroke-width="1"/>
&lt;text x="380" y="112" text-anchor="middle" fill="#b0b0cc" font-size="12.5" font-weight="500" font-family="-apple-system,sans-serif">Studying for a VMware certification?&lt;/text>
&lt;!-- YES to cert -->
&lt;line x1="520" y1="107" x2="590" y2="107" stroke="#5090e0" stroke-width="1.2" marker-end="url(#fb)"/>
&lt;text x="548" y="100" fill="#7a7a96" font-size="10" font-family="-apple-system,sans-serif">Yes&lt;/text>
&lt;rect x="594" y="89" width="140" height="38" rx="8" fill="rgba(50,120,220,0.12)" stroke="#5090e0" stroke-width="1.2"/>
&lt;text x="664" y="112" text-anchor="middle" fill="#5090e0" font-size="13" font-weight="600" font-family="-apple-system,sans-serif">Use ESXi&lt;/text>
&lt;!-- NO continues down -->
&lt;line x1="380" y1="126" x2="380" y2="158" stroke="#4a4a6a" stroke-width="1.2" marker-end="url(#fa)"/>
&lt;text x="395" y="146" fill="#7a7a96" font-size="10" font-family="-apple-system,sans-serif">No&lt;/text>
&lt;!-- Q2: Existing paid vSphere? -->
&lt;rect x="220" y="160" width="320" height="38" rx="8" fill="rgba(100,100,180,0.1)" stroke="rgba(140,140,200,0.25)" stroke-width="1"/>
&lt;text x="380" y="184" text-anchor="middle" fill="#b0b0cc" font-size="12.5" font-weight="500" font-family="-apple-system,sans-serif">Paid vSphere license still working, not up for renewal?&lt;/text>
&lt;!-- YES to existing -->
&lt;line x1="540" y1="179" x2="590" y2="179" stroke="#5090e0" stroke-width="1.2" marker-end="url(#fb)"/>
&lt;text x="558" y="172" fill="#7a7a96" font-size="10" font-family="-apple-system,sans-serif">Yes&lt;/text>
&lt;rect x="594" y="161" width="140" height="38" rx="8" fill="rgba(50,120,220,0.12)" stroke="#5090e0" stroke-width="1.2"/>
&lt;text x="664" y="184" text-anchor="middle" fill="#5090e0" font-size="13" font-weight="600" font-family="-apple-system,sans-serif">Keep ESXi&lt;/text>
&lt;!-- NO continues -->
&lt;line x1="380" y1="198" x2="380" y2="230" stroke="#4a4a6a" stroke-width="1.2" marker-end="url(#fa)"/>
&lt;text x="395" y="218" fill="#7a7a96" font-size="10" font-family="-apple-system,sans-serif">No&lt;/text>
&lt;!-- Q3: Need containers + VMs? -->
&lt;rect x="210" y="232" width="340" height="38" rx="8" fill="rgba(100,100,180,0.1)" stroke="rgba(140,140,200,0.25)" stroke-width="1"/>
&lt;text x="380" y="256" text-anchor="middle" fill="#b0b0cc" font-size="12.5" font-weight="500" font-family="-apple-system,sans-serif">Want LXC containers alongside VMs?&lt;/text>
&lt;!-- YES to containers -->
&lt;line x1="380" y1="270" x2="380" y2="302" stroke="#5dca7a" stroke-width="1.2" marker-end="url(#fg)"/>
&lt;text x="395" y="290" fill="#5dca7a" font-size="10" font-family="-apple-system,sans-serif">Yes&lt;/text>
&lt;!-- Q4: Multi-node cluster? -->
&lt;rect x="210" y="304" width="340" height="38" rx="8" fill="rgba(100,100,180,0.1)" stroke="rgba(140,140,200,0.25)" stroke-width="1"/>
&lt;text x="380" y="328" text-anchor="middle" fill="#b0b0cc" font-size="12.5" font-weight="500" font-family="-apple-system,sans-serif">Planning multi-node or automation (API)?&lt;/text>
&lt;!-- Both answers go to Proxmox -->
&lt;line x1="380" y1="342" x2="380" y2="382" stroke="#5dca7a" stroke-width="1.2" marker-end="url(#fg)"/>
&lt;text x="400" y="365" fill="#5dca7a" font-size="10" font-family="-apple-system,sans-serif">Yes or No&lt;/text>
&lt;!-- BIG PROXMOX RESULT -->
&lt;rect x="210" y="386" width="340" height="64" rx="10" fill="rgba(93,202,122,0.1)" stroke="#5dca7a" stroke-width="1.5"/>
&lt;text x="380" y="414" text-anchor="middle" fill="#5dca7a" font-size="17" font-weight="700" font-family="-apple-system,sans-serif">Use Proxmox VE 9.2&lt;/text>
&lt;text x="380" y="436" text-anchor="middle" fill="#5a9a6a" font-size="11.5" font-family="-apple-system,sans-serif">Free, fully featured, and the homelab default in 2026&lt;/text>
&lt;!-- BOTTOM NOTE -->
&lt;rect x="160" y="478" width="440" height="60" rx="8" fill="rgba(255,255,255,0.03)" stroke="rgba(255,255,255,0.08)" stroke-width="1"/>
&lt;text x="380" y="502" text-anchor="middle" fill="#9090a8" font-size="12" font-weight="500" font-family="-apple-system,sans-serif">For most new builds, every path leads to Proxmox.&lt;/text>
&lt;text x="380" y="522" text-anchor="middle" fill="#9a9ab5" font-size="11" font-family="-apple-system,sans-serif">ESXi is a valid choice only for specific existing commitments.&lt;/text>
&lt;/svg>
&lt;/div>
&lt;/div>
&lt;!-- WHO SHOULD USE WHAT -->
&lt;section>
&lt;h2>Who Should Use What&lt;/h2>
&lt;h3>Use Proxmox VE 9.2 if:&lt;/h3>
&lt;ul>
&lt;li>You're building a new homelab or small server from scratch in 2026 — it's the default for a reason&lt;/li>
&lt;li>You want both KVM VMs and lightweight LXC containers from one interface&lt;/li>
&lt;li>You plan to add a second and third node and want free clustering, live migration, and HA&lt;/li>
&lt;li>You want API access for Terraform, Ansible, or scripted provisioning without paying a license fee&lt;/li>
&lt;li>You're facing a Broadcom renewal and the per-core, 16-core-per-socket math no longer makes sense&lt;/li>
&lt;/ul>
&lt;h3>Use free ESXi 8.0U3e if:&lt;/h3>
&lt;ul>
&lt;li>You're actively studying for a VMware certification and need hands-on vSphere 8 experience&lt;/li>
&lt;li>You have a working paid vSphere environment and aren't up against a renewal yet&lt;/li>
&lt;li>You're running enterprise hardware with VMware-certified drivers that would be painful on Linux&lt;/li>
&lt;li>You'll never need more than 2 physical CPUs, 8 vCPUs per VM, an API, or a second clustered node&lt;/li>
&lt;/ul>
&lt;/section>
&lt;!-- VERDICT -->
&lt;section>
&lt;h2>The Verdict&lt;/h2>
&lt;p>Free ESXi coming back is good for the ecosystem — competition keeps Proxmox honest about its own rough edges, and Proxmox has them: the conservative performance defaults, the thick-LVM snapshot limit on shared SANs (only partly addressed by the VE 9 external-QCOW2 snapshot preview), the ZFS ARC memory surprise on fresh installs. Those are real.&lt;/p>
&lt;p>But the feature gap between free ESXi and free Proxmox is enormous. Proxmox VE 9.2 gives you containers, clustering, live migration, a full API, and no CPU or vCPU caps for $0. Free ESXi 8.0U3e gives you a single-host VM platform capped at 2 physical CPUs and 8 vCPUs per VM, with no vCenter, no automation, no HA, and no free version 9 ahead of it. On the paid side, Broadcom's per-core VCF/VVF pricing with its 16-core-per-socket floor is exactly what is pushing shops to evaluate the switch in the first place.&lt;/p>
&lt;p>For a new build in 2026, Proxmox is the answer — not because it wins every benchmark, but because it is more capable, more flexible, and the KVM, LXC, ZFS, and Linux-networking skills you build transfer straight to real infrastructure work. If you're coming from ESXi, read the migration gotchas above, prep your VirtIO drivers, and the move is a well-trodden path.&lt;/p>
&lt;p>Install Proxmox. &lt;a href="https://techfuelhq.com/articles/proxmox-mini-pc-setup/">Tune the defaults&lt;/a>, size the host with our &lt;a href="https://techfuelhq.com/homelab/proxmox-hardware-requirements-2026/">Proxmox hardware guide&lt;/a>, and build something real.&lt;/p>
&lt;/section>
&lt;footer style="margin-top:40px;padding-top:24px;border-top:1px solid rgba(255,255,255,0.06);">
&lt;p>&lt;em>Licensing and version facts verified against Broadcom KB articles (free ESXi 8.0U3e caps; per-core VCF/VVF counting) and the official Proxmox roadmap and pricing pages, current as of July 2026. The storage-performance data point (Blockbridge NVMe/TCP, 56 of 57 tests) is vendor-authored. The AT&amp;T 1,050 percent figure is from AT&amp;T's court filing as reported by The Register. Migration steps reflect the documented VirtIO, thick-LVM/SAN-snapshot, and quorum behavior of Proxmox VE. For hardware, see our &lt;a href="https://techfuelhq.com/homelab/">Homelab&lt;/a> section; setup guides at &lt;a href="https://techfuelhq.com/tutorials/">Tutorials&lt;/a>.&lt;/em>&lt;/p>
&lt;/footer>
&lt;h2 id="build-the-system-around-it">Build the system around it&lt;/h2>
&lt;p>The &lt;a href="https://techfuelhq.com/tools/pc-builder/">TechFuelHQ PC Builder&lt;/a> is a free, open-source picker with real socket / RAM / PSU / GPU clearance checks and a CC BY 4.0 parts dataset. Use it to size a host that actually fits the gear in this article.&lt;/p>
&lt;h2 id="sources-and-methodology">Sources and methodology&lt;/h2>
&lt;p>This comparison is grounded in official documentation from Proxmox and Broadcom/VMware, plus cited community practitioner threads. No first-party benchmarks were run.&lt;/p>
&lt;p>&lt;strong>Primary sources cited:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://knowledge.broadcom.com/external/article/399823/vmware-esxi-80-update-3e-now-available-a.html" rel="noopener">Broadcom KB — ESXi 8.0 Update 3e free hypervisor&lt;/a> — free-tier availability and caps (2 CPUs/host, 8 vCPUs/VM, no vCenter/vMotion/HA/API)&lt;/li>
&lt;li>&lt;a href="https://knowledge.broadcom.com/external/article/313548/counting-cores-for-vmware-cloud-foundati.html" rel="noopener">Broadcom KB — Counting Cores for VCF/VVF&lt;/a> — per-core licensing with 16-core-per-socket minimum; vSAN entitlements&lt;/li>
&lt;li>&lt;a href="https://pve.proxmox.com/wiki/Roadmap" rel="noopener">Proxmox VE Roadmap&lt;/a> — VE 9.2 (2026-05-21), Debian 13.5, kernel 7.0, QEMU 11.0, LXC 7.0, ZFS 2.4, feature highlights&lt;/li>
&lt;li>&lt;a href="https://www.proxmox.com/en/products/proxmox-virtual-environment/pricing" rel="noopener">Proxmox VE pricing&lt;/a> — subscription tiers per socket/year (EUR120-1,100)&lt;/li>
&lt;li>&lt;a href="https://kb.blockbridge.com/technote/proxmox-vs-vmware-nvmetcp" rel="noopener">Blockbridge — Proxmox VE vs VMware ESXi NVMe/TCP benchmarks&lt;/a> — vendor-authored storage testing (56 of 57 tests, ~50% IOPS gains)&lt;/li>
&lt;li>&lt;a href="https://kb.blockbridge.com/technote/proxmox-qcow-snapshots-on-lvm" rel="noopener">Blockbridge — QCOW2 snapshots on thick LVM&lt;/a> — VE 9 snapshot-as-volume-chain on FC/iSCSI SAN (technology preview)&lt;/li>
&lt;li>&lt;a href="https://www.theregister.com/software/2024/10/01/att_claims_vmware_offered_it_a_1050_percent_price_rise/511969" rel="noopener">The Register — AT&amp;amp;T claims 1,050% VMware price rise&lt;/a> — AT&amp;amp;T court filing on Broadcom licensing&lt;/li>
&lt;li>&lt;a href="https://news.ycombinator.com/item?id=39841363" rel="noopener">Hacker News — VMware import wizard + renewal cost reports&lt;/a> — migration tooling and self-reported licensing cost anecdotes&lt;/li>
&lt;/ul>
&lt;p>Email corrections to &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a>.&lt;/p></description></item><item><title>Best Budget NAS Build 2026: 4-Bay DIY in the Drive + RAM Crunch</title><link>https://techfuelhq.com/homelab/best-budget-nas-builds-2025/</link><pubDate>Fri, 03 Apr 2026 00:00:00 -0500</pubDate><guid>https://techfuelhq.com/homelab/best-budget-nas-builds-2025/</guid><description>&lt;img src="https://techfuelhq.com/images/homelab/hero-budget-nas-builds.svg" alt="Best budget NAS build 2026: AOOSTAR WTR Pro N100 and 5825U 4-bay builds with idle power draw and pricing under $400" width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;" />
&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-04-03 · Updated 2026-07-13 · ~15 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence which products get recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR · The 2026 budget NAS picks&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>Turnkey under $400 barebone:&lt;/strong> &lt;strong>AOOSTAR WTR Pro N150&lt;/strong> (the N100's successor). 4 bays, dual 2.5GbE, low idle, runs any OS.&lt;/li>
&lt;li>&lt;strong>Turnkey, multitasker:&lt;/strong> &lt;strong>AOOSTAR WTR Pro 5825U&lt;/strong>. 8C/16T for VMs + NAS + Docker on one box.&lt;/li>
&lt;li>&lt;strong>DIY:&lt;/strong> Used &lt;strong>HP EliteDesk 800 G4 Mini&lt;/strong> + 4-bay USB-C DAS (Mediasonic ProBox / Yottamaster). For replaceable media.&lt;/li>
&lt;li>&lt;strong>DIY rack:&lt;/strong> Inter-Tech 4U + ASRock i3-N305 board + IronWolf 8 TB drives.&lt;/li>
&lt;li>&lt;strong>The 2026 double squeeze:&lt;/strong> both consumables spiked. New 8TB NAS drives are ~$300–$320 each (IronWolf 8TB ~$300 edges out WD Red Plus ~$319), and DDR5 RAM roughly &lt;em>tripled&lt;/em> — a single 16GB SO-DIMM that was ~$45 is now ~$150+. The cheap box is the only cheap part left. For drives, recertified enterprise is the budget escape hatch; for RAM, buy exactly what you need.&lt;/li>
&lt;li>&lt;strong>OS:&lt;/strong> TrueNAS CE 25.10 for storage-first · Unraid 7.3 for mixed drives + smooth Docker · OMV 8 for lightweight Linux NAS.&lt;/li>
&lt;li>&lt;strong>Skip:&lt;/strong> Synology DS423+ at $500 empty; QNAP TS-464 at $550 empty. Soldered RAM, proprietary OS, last-gen Celerons.&lt;/li>
&lt;/ul>
&lt;p style="margin:0.75rem 0 0 0;font-size:0.9rem;color:#a0a0b8;">Prices snapshot 2026-07-13 from AOOSTAR, Amazon, Newegg, eBay. RAM and drive prices move weekly in the 2026 shortage — verify at purchase. Power figures cited from manufacturer spec sheets and published third-party reviews — see source links throughout.&lt;/p>
&lt;/div>
&lt;h2 id="the-budget-nas-math-changed-in-2026--twice">The budget-NAS math changed in 2026 — twice&lt;/h2>
&lt;p>The cheap box is still cheap. Almost nothing else is. Two shortages hit at once in 2026, and both trace to the same cause: AI data centers eating supply.&lt;/p>
&lt;p>&lt;strong>The drives.&lt;/strong> Through 2026, Western Digital and Seagate pointed essentially all of their high-capacity (nearline) hard-drive output at AI and cloud, and consumer NAS drives took the hit. WD CEO Irving Tan told investors the company&amp;rsquo;s nearline capacity is &amp;ldquo;fully allocated through calendar year 2026,&amp;rdquo; with order books not reopening until the first half of 2027 (&lt;a href="https://winbuzzer.com/" rel="noopener">winbuzzer.com, 2026-02-18&lt;/a>; &lt;a href="https://www.xda-developers.com/" rel="noopener">xda-developers.com&lt;/a>). Some NAS-drive SKUs climbed 30–50% off their mid-2025 lows.&lt;/p>
&lt;p>&lt;strong>The RAM.&lt;/strong> This is the part most 2026 build guides still haven&amp;rsquo;t caught up to. DDR5 memory prices roughly &lt;em>tripled&lt;/em> from late 2025 into 2026 as the same AI buildout consumed DRAM output. Chip-level pricing went from about $6.84 per GB in September 2025 to about $27.20 per GB by December — nearly a fourfold jump in one quarter — and consumer module prices followed, with analysts expecting the crunch to run into 2027 (&lt;a href="https://www.tomshardware.com/pc-components/ram/ram-price-index-2026-lowest-price-on-ddr5-and-ddr4-memory-of-all-capacities" rel="noopener">Tom&amp;rsquo;s Hardware RAM price index&lt;/a>; &lt;a href="https://wccftech.com/roundup/memory-crisis/" rel="noopener">Wccftech, memory crisis roundup&lt;/a>). A 16GB SO-DIMM that was a ~$45 afterthought a year ago is a real ~$150+ line item today.&lt;/p>
&lt;p>What that means for this guide: the enclosure, the boot NVMe, and the CPU barely moved. The two &lt;em>consumables&lt;/em> — drives and RAM — are now essentially the entire bill. So the budget decision is no longer &amp;ldquo;which $350 box.&amp;rdquo; It&amp;rsquo;s &amp;ldquo;which drives (new or recertified), and exactly how much RAM.&amp;rdquo; And it&amp;rsquo;s why owning your hardware and OS instead of renting a locked appliance matters more this year, not less: when the parts get expensive, you want to buy each one on its own merits, not a bundle someone else priced. The box picks below still hold — but read the drive and RAM sections as the real money decisions.&lt;/p>
&lt;!-- ========== SIGNATURE VISUAL: THE 2026 SQUEEZE (cost-composition then-vs-now) ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0c111b;padding:30px 24px 20px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;border:1px solid rgba(255,255,255,0.06);border-radius:10px;">
&lt;div style="margin-bottom:6px;">
&lt;div style="font-size:19px;font-weight:700;letter-spacing:-0.3px;">The 2026 squeeze — where a budget NAS's money actually went&lt;/div>
&lt;div style="font-size:12.5px;color:#9aa0b5;margin-top:5px;line-height:1.5;">Same recipe both years: 4-bay barebone box + 16GB RAM + boot NVMe + two 8TB WD Red Plus in a mirror. The box hardly moved. The two consumables did all the damage.&lt;/div>
&lt;/div>
&lt;div style="display:flex;gap:26px;align-items:flex-end;justify-content:center;margin:26px 0 8px;flex-wrap:wrap;">
&lt;!-- 2024 bar -->
&lt;div style="display:flex;flex-direction:column;align-items:center;min-width:120px;">
&lt;div style="position:relative;width:110px;display:flex;flex-direction:column-reverse;">
&lt;!-- Box+NVMe (bottom, lime) -->
&lt;div style="height:108px;background:linear-gradient(180deg,#c8ff00,#a6d400);display:flex;align-items:center;justify-content:center;flex-direction:column;color:#0c111b;">
&lt;span style="font-weight:700;font-size:13px;">Box + NVMe&lt;/span>&lt;span style="font-size:12px;font-weight:600;">$385&lt;/span>
&lt;/div>
&lt;!-- RAM (blue) -->
&lt;div style="height:13px;background:#5b9cf0;display:flex;align-items:center;justify-content:center;color:#0c111b;font-size:10px;font-weight:700;overflow:hidden;">RAM $45&lt;/div>
&lt;!-- Drives (amber) -->
&lt;div style="height:115px;background:linear-gradient(180deg,#ffb347,#f5933d);display:flex;align-items:center;justify-content:center;flex-direction:column;color:#3a2600;">
&lt;span style="font-weight:700;font-size:13px;">Drives&lt;/span>&lt;span style="font-size:12px;font-weight:600;">$410&lt;/span>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:10px;text-align:center;">&lt;div style="font-size:13px;color:#8a90a5;font-weight:600;">2024&lt;/div>&lt;div style="font-size:16px;font-weight:800;color:#e8e8f0;">~$840&lt;/div>&lt;/div>
&lt;/div>
&lt;!-- arrow -->
&lt;div style="font-size:22px;color:#5b9cf0;padding-bottom:56px;font-weight:700;">&amp;rsaquo;&lt;/div>
&lt;!-- 2026 bar -->
&lt;div style="display:flex;flex-direction:column;align-items:center;min-width:120px;">
&lt;div style="position:relative;width:110px;display:flex;flex-direction:column-reverse;">
&lt;div style="height:113px;background:linear-gradient(180deg,#c8ff00,#a6d400);display:flex;align-items:center;justify-content:center;flex-direction:column;color:#0c111b;">
&lt;span style="font-weight:700;font-size:13px;">Box + NVMe&lt;/span>&lt;span style="font-size:12px;font-weight:600;">$404&lt;/span>
&lt;/div>
&lt;div style="height:45px;background:#5b9cf0;display:flex;align-items:center;justify-content:center;flex-direction:column;color:#0c111b;font-weight:700;">
&lt;span style="font-size:12px;">RAM&lt;/span>&lt;span style="font-size:11.5px;">$160&lt;/span>
&lt;/div>
&lt;div style="height:179px;background:linear-gradient(180deg,#ff8a4c,#ef6a3d);display:flex;align-items:center;justify-content:center;flex-direction:column;color:#3a1600;">
&lt;span style="font-weight:800;font-size:13px;">Drives&lt;/span>&lt;span style="font-size:12px;font-weight:700;">$638&lt;/span>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:10px;text-align:center;">&lt;div style="font-size:13px;color:#8a90a5;font-weight:600;">2026&lt;/div>&lt;div style="font-size:16px;font-weight:800;color:#c8ff00;">~$1,200&lt;/div>&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;gap:14px 20px;justify-content:center;margin:16px 0 4px;font-size:12px;color:#b8bccb;">
&lt;span>&lt;span style="color:#c8ff00;font-weight:700;">Box + NVMe:&lt;/span> basically flat (+~$19)&lt;/span>
&lt;span>&lt;span style="color:#5b9cf0;font-weight:700;">RAM:&lt;/span> ~3.5&amp;times; ($45 &amp;rarr; $160)&lt;/span>
&lt;span>&lt;span style="color:#ff8a4c;font-weight:700;">Drives:&lt;/span> ~1.6&amp;times; ($410 &amp;rarr; $638)&lt;/span>
&lt;/div>
&lt;div style="font-size:11.5px;color:#8a90a5;text-align:center;margin-top:6px;line-height:1.5;">Same 8TB-mirror build, ~43% more expensive year-over-year — and the box's share of the bill fell from ~46% to ~34%. Every dollar of the increase is a consumable you can shop around: recertified drives, and only-the-RAM-you-need.&lt;/div>
&lt;div style="text-align:right;margin-top:6px;font-size:10px;color:#44485a;">techfuelhq.com · prices Amazon, 2026-07-13&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="budget-nas-price-snapshot--2026-07-13">Budget NAS price snapshot — 2026-07-13&lt;/h2>
&lt;p>All prices captured 2026-07-13 from listed retailers. Barebone means no RAM, no drives — add your own. Drive and RAM prices in particular move week to week in the shortage; treat these as a July 2026 reference, not a promise.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Build&lt;/th>
&lt;th scope="col">Component / SKU&lt;/th>
&lt;th scope="col">Price (USD)&lt;/th>
&lt;th scope="col">Source&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Turnkey efficient&lt;/td>
&lt;td>AOOSTAR WTR Pro N150 (was N100, barebone)&lt;/td>
&lt;td>~$379–$399&lt;/td>
&lt;td>&lt;a href="https://aoostar.com/" rel="noopener">AOOSTAR store&lt;/a> · Amazon&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Turnkey multitasker&lt;/td>
&lt;td>AOOSTAR WTR Pro 5825U (barebone)&lt;/td>
&lt;td>~$379–$399&lt;/td>
&lt;td>&lt;a href="https://aoostar.com/" rel="noopener">AOOSTAR store&lt;/a> · Amazon&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>DIY value pick&lt;/td>
&lt;td>Used HP EliteDesk 800 G4 Mini (i5-8500T, 16 GB)&lt;/td>
&lt;td>~$180–$220&lt;/td>
&lt;td>&lt;a href="https://www.ebay.com/sch/i.html?_nkw=elitedesk&amp;#43;800&amp;#43;g4&amp;#43;mini" rel="noopener">eBay refurb listings&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>4-bay USB-C DAS&lt;/td>
&lt;td>Mediasonic ProBox HF2-SU3S2 (4-bay)&lt;/td>
&lt;td>~$140–$160&lt;/td>
&lt;td>Amazon&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>4-bay USB-C DAS&lt;/td>
&lt;td>Yottamaster 4-bay USB-C / eSATA&lt;/td>
&lt;td>~$130–$160&lt;/td>
&lt;td>Amazon&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>DIY rack chassis&lt;/td>
&lt;td>Inter-Tech IPC 4U-4324L (4U, 24-bay)&lt;/td>
&lt;td>~$220–$260&lt;/td>
&lt;td>&lt;a href="https://www.newegg.com/p/pl?N=100007583" rel="noopener">Newegg&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Mini-ITX NAS board&lt;/td>
&lt;td>ASRock N100DC-ITX / N305 alternative (Topton N22 with Core 3 N305/N355 is the 2026 community favorite)&lt;/td>
&lt;td>~$150–$190&lt;/td>
&lt;td>&lt;a href="https://www.newegg.com/p/pl?N=100007625" rel="noopener">Newegg&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Step-up (past budget)&lt;/td>
&lt;td>AOOSTAR WTR MAX (8845HS, 6+5 bays, 10GbE SFP+)&lt;/td>
&lt;td>~$699&lt;/td>
&lt;td>&lt;a href="https://aoostar.com/" rel="noopener">AOOSTAR store&lt;/a> · Amazon&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Comparison: turnkey commercial&lt;/td>
&lt;td>Synology DS423+ (barebone)&lt;/td>
&lt;td>~$499–$549&lt;/td>
&lt;td>&lt;a href="https://www.bhphotovideo.com/c/search?Ntt=DS423%2B" rel="noopener">B&amp;amp;H&lt;/a> · Amazon&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Comparison: turnkey commercial&lt;/td>
&lt;td>QNAP TS-464 (barebone)&lt;/td>
&lt;td>~$549–$629&lt;/td>
&lt;td>&lt;a href="https://www.bhphotovideo.com/c/search?Ntt=TS-464" rel="noopener">B&amp;amp;H&lt;/a> · Amazon&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Comparison: turnkey commercial&lt;/td>
&lt;td>Asustor Drivestor 4 Gen2 AS1204T (4-bay, diskless)&lt;/td>
&lt;td>~$283&lt;/td>
&lt;td>Amazon&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Comparison: turnkey commercial&lt;/td>
&lt;td>TerraMaster F4-425 Pro (N305 8-core, 8GB, dual 5GbE)&lt;/td>
&lt;td>&lt;del>$700 (&lt;/del>$560 w/coupon)&lt;/td>
&lt;td>Amazon&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Add drives &amp;ndash; and this is where 2026 hurts. New WD Red Plus 8TB now runs ~$319 each (Amazon, 2026-07-13) and IronWolf 8TB ~$300 each, so a 32 TB raw / 24 TB usable 4-drive 8TB array is ~$1,200-$1,280 in &lt;strong>new&lt;/strong> drives on top of the box cost (it was a few hundred dollars a year ago). The budget escape hatch is recertified enterprise drives: Seagate Exos pulls from sellers like &lt;a href="https://serverpartdeals.com/collections/hard-drives" rel="noopener">ServerPartDeals&lt;/a> are where the homelab crowd actually shops in the shortage. $/TB and stock vary weekly, so verify at purchase rather than trusting any quoted figure &amp;ndash; and budget for a burn-in test and a shorter warranty. Run your own drive counts through the &lt;a href="https://techfuelhq.com/tools/nas-storage-calculator/">NAS &amp;amp; RAID storage calculator&lt;/a> to see raw-vs-usable capacity across RAID levels before you buy.&lt;/p>
&lt;section>
&lt;p>A Synology DS423+ costs $500 and ships with zero storage. A QNAP TS-464 is $550 empty. Both lock you into proprietary software, both charge extra for features that should be free, and both come with a CPU you'd be embarrassed to put in a laptop. For the same money — or less — you can build a 4-bay NAS with a real processor, your choice of operating system, and measured idle power under 15 watts.&lt;/p>
&lt;p>On the Synology question specifically: the company's 2025 Plus and Value models (DS925+, DS1825+, DS425+) shipped with a drive-compatibility list that threw warnings on third-party Seagate and WD disks and pulled features. Synology reversed course in DSM 7.3 (October 2025) -- third-party drives work again on those 2025 models with full monitoring, alerts, and storage features ([mjtsai.com, 2025-10-09](https://mjtsai.com/blog/2025/10/09/synology-reverses-ban-on-third-party-hard-drives/)). So the drives are not locked today. But Synology framed the reversal as "in the meantime" while it keeps testing additional drives, with no promise that 2026 models stay open. The honest read: the company walked it back under sales pressure, the lock-in instinct is still there, and building your own box sidesteps the whole question.&lt;/p>
&lt;p>The used enterprise hardware crowd will tell you to grab a retired Dell server. Fine, if you want 120W at idle and a machine that sounds like a hair dryer. The smart budget NAS in 2026 is a small 4-bay box with efficient silicon and an OS matched to your actual needs. Here's how to build one.&lt;/p>
&lt;/section>
&lt;!-- HARDWARE -->
&lt;section>
&lt;h2>The Hardware: Two Barebone Boxes That Actually Make Sense&lt;/h2>
&lt;p>The NAS enclosure market for DIY builders used to be terrible. You either bought a proprietary Synology/QNAP shell or hacked together a desktop case with drive cages. The AOOSTAR WTR Pro changed this. Two models, both with 4 SATA bays, dual 2.5GbE, and compact form factors designed specifically for NAS duty. They're the best starting point for a budget build right now.&lt;/p>
&lt;h3>AOOSTAR WTR Pro N150 (was N100) — The Efficiency Pick&lt;/h3>
&lt;p>&lt;strong>Price:&lt;/strong> ~$379-$399 barebone (Amazon, 2026-07-13)&lt;br>
&lt;strong>CPU:&lt;/strong> Intel N150 (4C/4T, the N100's Alder Lake-N successor)&lt;br>
&lt;strong>RAM:&lt;/strong> 1× DDR5 SO-DIMM (add your own)&lt;br>
&lt;strong>Storage:&lt;/strong> 4× SATA bays + 1× M.2 NVMe&lt;br>
&lt;strong>Network:&lt;/strong> 2× 2.5GbE&lt;/p>
&lt;p>AOOSTAR has superseded the original N100 SKU with an N150 "upgraded N100" variant -- same Alder Lake-N efficiency class, a modest clock bump, the same ~6W-class TDP and Quick Sync iGPU. The power figures below were measured on the N100 box and remain directionally valid for the N150. The Intel N100/N150 is the darling of the low-power homelab world and for good reason. This chip was designed for efficiency-first workloads, and it shows in the measured power numbers: &lt;strong>9.3W idle&lt;/strong> with no drives installed, &lt;strong>14.3W&lt;/strong> with two drives, and &lt;strong>18.7W&lt;/strong> with four drives spinning. Under sustained load it pulls 24.6–27.9W. That's entire-system wattage, not just the CPU.&lt;/p>
&lt;p>Four cores, four threads. No hyperthreading. For a NAS serving files over SMB and running a few Docker containers, that's plenty. Where it falls short is heavy transcoding or running a bunch of VMs alongside your storage — the N100 simply doesn't have the threads for it. If your NAS is a NAS and nothing more, the N100 is the right chip.&lt;/p>
&lt;p>The M.2 NVMe slot gives you a fast boot drive or ZFS SLOG/L2ARC cache. Dual 2.5GbE means you can bond two links or run one for management and one for data, which matters once your &lt;a href="https://techfuelhq.com/networking/">network is upgraded to 2.5GbE&lt;/a>.&lt;/p>
&lt;p style="margin-top:0.5rem;">&lt;a href="https://www.amazon.com/s?k=AOOSTAR+WTR+Pro+N150+NAS&amp;tag=techfuelhq-20" rel="nofollow sponsored noopener" target="_blank">Check the current AOOSTAR WTR Pro N150 barebone price on Amazon &amp;rarr;&lt;/a> (also sold direct at the &lt;a href="https://aoostar.com/">AOOSTAR store&lt;/a>).&lt;/p>
&lt;h3>AOOSTAR WTR Pro 5825U — The Multitasker&lt;/h3>
&lt;p>&lt;strong>Price:&lt;/strong> ~$379-$399 barebone (Amazon, 2026-07-13)&lt;br>
&lt;strong>CPU:&lt;/strong> AMD Ryzen 7 5825U (8C/16T)&lt;br>
&lt;strong>RAM:&lt;/strong> 2× DDR4 SO-DIMM, up to 64GB&lt;br>
&lt;strong>Storage:&lt;/strong> 4× SATA bays&lt;br>
&lt;strong>Network:&lt;/strong> 2× 2.5GbE&lt;/p>
&lt;p>Priced right alongside the N150 box at ~$399, and it comes with eight cores and sixteen threads. The Ryzen 7 5825U is a full mobile processor with real multi-threaded grunt. If you want your NAS to double as a &lt;a href="https://techfuelhq.com/homelab/">lightweight homelab node&lt;/a> — running Plex transcoding, a few Docker containers, maybe a small VM — the 5825U gives you the headroom.&lt;/p>
&lt;p>The idle power story is more nuanced than the headline numbers suggest. The 5825U WTR Pro idles at &lt;strong>5.5W&lt;/strong> with no drives, &lt;strong>8.7W&lt;/strong> with two drives, and &lt;strong>13W&lt;/strong> with four drives spinning. Those idle numbers are actually &lt;em>lower&lt;/em> than the N100 model. AMD's power management at idle is genuinely impressive here.&lt;/p>
&lt;p>The catch is load power. Under sustained CPU stress the 5825U pulls &lt;strong>46.2–67.5W&lt;/strong> — roughly 2.5x the N100's load draw. If you're doing heavy transcoding regularly, your electricity bill will notice. If your NAS mostly idles and occasionally serves files, the 5825U's low idle wattage means it's actually cheaper to run 24/7 than the N100.&lt;/p>
&lt;p>The 64GB DDR4 RAM ceiling is important for TrueNAS builds. ZFS loves RAM, and having two SO-DIMM slots means you can start with 16GB and upgrade to 64GB later without throwing anything away. The N100 model's single DIMM slot is more limiting.&lt;/p>
&lt;p>If you need more than four bays or 10GbE, AOOSTAR's newer WTR MAX (Ryzen 7 8845HS, 6+5 bays, dual 10GbE SFP+, USB4, Oculink) steps up to ~$699 -- worth knowing about, but it is past the budget brief here.&lt;/p>
&lt;p style="margin-top:0.5rem;">&lt;a href="https://www.amazon.com/s?k=AOOSTAR+WTR+Pro+5825U+NAS&amp;tag=techfuelhq-20" rel="nofollow sponsored noopener" target="_blank">Check the current AOOSTAR WTR Pro 5825U barebone price on Amazon &amp;rarr;&lt;/a> (also sold direct at the &lt;a href="https://aoostar.com/">AOOSTAR store&lt;/a>).&lt;/p>
&lt;/section>
&lt;!-- ========== VISUAL 2: POWER DRAW (self-contained, no CDN) ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;padding:28px 22px 18px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;">
&lt;div style="margin-bottom:4px;">
&lt;div style="font-size:18px;font-weight:600;letter-spacing:-0.3px;">Measured power draw — whole system at the wall&lt;/div>
&lt;div style="font-size:12px;color:#9a9ab5;margin-top:4px;">AOOSTAR WTR Pro N100/N150 vs 5825U · watts, by drive count and load state. Scale runs to 70W.&lt;/div>
&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;gap:16px;margin:14px 0 16px;font-size:12px;">
&lt;span style="display:flex;align-items:center;gap:6px;color:#a0a0b8;">&lt;span style="width:12px;height:12px;border-radius:2px;background:#5090e0;display:inline-block;">&lt;/span>N100/N150 WTR Pro (efficiency pick)&lt;/span>
&lt;span style="display:flex;align-items:center;gap:6px;color:#a0a0b8;">&lt;span style="width:12px;height:12px;border-radius:2px;background:#ed6a5a;display:inline-block;">&lt;/span>5825U WTR Pro (8-core)&lt;/span>
&lt;/div>
&lt;div style="display:flex;flex-direction:column;gap:14px;">
&lt;!-- row template: label + two bars -->
&lt;div>&lt;div style="font-size:11.5px;color:#c0c0d0;margin-bottom:5px;font-weight:600;">Idle · no drives &lt;span style="color:#7a7a96;font-weight:400;">— the number that matters for a 24/7 box&lt;/span>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:8px;margin-bottom:4px;">&lt;div style="height:16px;width:13.3%;background:#5090e0;border-radius:0 3px 3px 0;">&lt;/div>&lt;span style="font-size:11px;color:#9aa;">9.3W&lt;/span>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:8px;">&lt;div style="height:16px;width:7.9%;background:#ed6a5a;border-radius:0 3px 3px 0;">&lt;/div>&lt;span style="font-size:11px;color:#9aa;">5.5W&lt;/span>&lt;/div>&lt;/div>
&lt;div>&lt;div style="font-size:11.5px;color:#c0c0d0;margin-bottom:5px;font-weight:600;">Idle · 2 drives&lt;/div>
&lt;div style="display:flex;align-items:center;gap:8px;margin-bottom:4px;">&lt;div style="height:16px;width:20.4%;background:#5090e0;border-radius:0 3px 3px 0;">&lt;/div>&lt;span style="font-size:11px;color:#9aa;">14.3W&lt;/span>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:8px;">&lt;div style="height:16px;width:12.4%;background:#ed6a5a;border-radius:0 3px 3px 0;">&lt;/div>&lt;span style="font-size:11px;color:#9aa;">8.7W&lt;/span>&lt;/div>&lt;/div>
&lt;div>&lt;div style="font-size:11.5px;color:#c0c0d0;margin-bottom:5px;font-weight:600;">Idle · 4 drives&lt;/div>
&lt;div style="display:flex;align-items:center;gap:8px;margin-bottom:4px;">&lt;div style="height:16px;width:26.7%;background:#5090e0;border-radius:0 3px 3px 0;">&lt;/div>&lt;span style="font-size:11px;color:#9aa;">18.7W&lt;/span>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:8px;">&lt;div style="height:16px;width:18.6%;background:#ed6a5a;border-radius:0 3px 3px 0;">&lt;/div>&lt;span style="font-size:11px;color:#9aa;">13W&lt;/span>&lt;/div>&lt;/div>
&lt;div>&lt;div style="font-size:11.5px;color:#c0c0d0;margin-bottom:5px;font-weight:600;">CPU load · no drives&lt;/div>
&lt;div style="display:flex;align-items:center;gap:8px;margin-bottom:4px;">&lt;div style="height:16px;width:35.1%;background:#5090e0;border-radius:0 3px 3px 0;">&lt;/div>&lt;span style="font-size:11px;color:#9aa;">24.6W&lt;/span>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:8px;">&lt;div style="height:16px;width:66%;background:#ed6a5a;border-radius:0 3px 3px 0;">&lt;/div>&lt;span style="font-size:11px;color:#ff9080;font-weight:600;">46.2W&lt;/span>&lt;/div>&lt;/div>
&lt;div>&lt;div style="font-size:11.5px;color:#c0c0d0;margin-bottom:5px;font-weight:600;">CPU load · 4 drives&lt;/div>
&lt;div style="display:flex;align-items:center;gap:8px;margin-bottom:4px;">&lt;div style="height:16px;width:39.9%;background:#5090e0;border-radius:0 3px 3px 0;">&lt;/div>&lt;span style="font-size:11px;color:#9aa;">27.9W&lt;/span>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:8px;">&lt;div style="height:16px;width:96.4%;background:#ed6a5a;border-radius:0 3px 3px 0;">&lt;/div>&lt;span style="font-size:11px;color:#ff9080;font-weight:600;">67.5W&lt;/span>&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="margin-top:16px;padding:11px 14px;background:rgba(80,144,224,0.08);border-left:3px solid #5090e0;border-radius:0 6px 6px 0;font-size:12px;color:#c0c8d8;line-height:1.5;">
The twist: the 8-core 5825U actually &lt;strong>idles lower&lt;/strong> than the N150 (5.5W vs 9.3W), so for a box that mostly sits there serving files it is cheaper to run 24/7. It only loses on &lt;em>sustained&lt;/em> load, where it pulls ~2.4&amp;times; the N150. Pick on your real duty cycle, not the peak number.
&lt;/div>
&lt;div style="font-size:10px;color:#555570;margin-top:10px;text-align:center;">Every 10W continuous ≈ 87.6 kWh/year ≈ $12.26 at $0.14/kWh. Figures measured on the N100 box; N150 is the same efficiency class.&lt;/div>
&lt;div style="text-align:right;margin-top:4px;font-size:10px;color:#44445a;">techfuelhq.com · 2026&lt;/div>
&lt;/div>
&lt;/div>
&lt;!-- DRIVES -->
&lt;section>
&lt;h2>Drives: Buy Two Now, Add Two Later&lt;/h2>
&lt;p>A 4-bay NAS doesn't mean you need four drives on day one. Start with two drives in a mirror (RAID 1 / ZFS mirror) and add a second pair later. You get redundancy immediately, and you defer half the drive cost. Which specific drives to buy — CMR vs SMR, the WD Red Plus vs IronWolf Pro tiers, and the recertified $/TB math — is its own decision, covered in depth in the &lt;a href="https://techfuelhq.com/homelab/best-nas-hard-drives-2026/">best NAS hard drives guide&lt;/a>.&lt;/p>
&lt;p>&lt;strong>WD Red Plus 8TB (WD80EFPX):&lt;/strong> ~$319 each (&lt;a href="https://www.amazon.com/dp/B0CMQ6SK7W?tag=techfuelhq-20" rel="nofollow sponsored noopener" target="_blank">Amazon&lt;/a>, 2026-07-13; it has drifted down slightly from its spring peak). CMR recording, 5640 RPM, designed for NAS duty. A mirrored pair is ~$638 for 8TB usable. Proven reliability and reasonable noise, but in 2026 it is no longer the cheapest new option.&lt;/p>
&lt;p>&lt;strong>Seagate IronWolf 8TB (ST8000VN004):&lt;/strong> ~$300 each (&lt;a href="https://www.amazon.com/dp/B084ZV4DXB?tag=techfuelhq-20" rel="nofollow sponsored noopener" target="_blank">Amazon&lt;/a>, 2026-07-13). Also CMR, 7200 RPM, includes IronWolf Health Management. A mirrored pair is ~$600 for 8TB usable -- about $38 less than the WD pair. Faster 7200 RPM spindle, so it runs a little louder, but on price it edges out the WD Red Plus.&lt;/p>
&lt;p>The old verdict here was "buy WD, it's cheaper" -- and in 2026 that flips, if narrowly. On price the IronWolf 8TB (~$300) now undercuts the WD Red Plus 8TB (~$319), so if you want new NAS drives, IronWolf is the value pick today. But for a genuine budget build, the better move is recertified enterprise drives (see the next section). One more note for anyone chasing the best dollar-per-TB: the per-terabyte math usually improves as you go up the stack, so a pair of larger drives (10–12TB) is often cheaper per usable TB than four 8TB drives -- price the whole array by $/TB, not per drive, and check it at purchase since the shortage moves these weekly.&lt;/p>
&lt;/section>
&lt;!-- DRIVE QUESTION 2026 -->
&lt;section>
&lt;h2>The 2026 Drive Question: New, Recertified, or Shuck?&lt;/h2>
&lt;p>Because drives now dominate the budget, where you buy them is the most important call you'll make. Three routes:&lt;/p>
&lt;p>&lt;strong>New NAS drives.&lt;/strong> The cited prices above: WD Red Plus 8TB ~$319, IronWolf 8TB ~$300, with better dollar-per-TB at the 10-12TB tier. Full manufacturer warranty, the quietest option, and zero homework. If your data is irreplaceable and you don't want to babysit drives, pay for new.&lt;/p>
&lt;p>&lt;strong>Recertified enterprise (Seagate Exos and similar).&lt;/strong> This is the homelab budget path in 2026, and it's what the r/DataHoarder and r/truenas crowd actually buys during the shortage. Sellers like &lt;a href="https://serverpartdeals.com/collections/hard-drives">ServerPartDeals&lt;/a> and goHardDrive move recertified enterprise disks at the best dollar-per-TB you'll find. If you're torn between a recertified Exos and a new IronWolf Pro, our &lt;a href="https://techfuelhq.com/homelab/seagate-ironwolf-vs-ironwolf-pro-vs-exos-2026/">Seagate NAS drive breakdown&lt;/a> compares them head to head. The honest caveats: warranties are shorter (often ~1-2 years, seller or limited manufacturer), enterprise 7200 RPM drives idle louder and warmer, and you should run a burn-in test the day they arrive. Stock and pricing move week to week, so verify at purchase rather than trusting any number you read in an article. Redundancy matters more here -- run ZFS or parity and let the array absorb a bad drive. Plan capacity and parity with the &lt;a href="https://techfuelhq.com/tools/nas-storage-calculator/">NAS &amp; RAID storage calculator&lt;/a>, and if you're pairing this with Proxmox, the &lt;a href="https://techfuelhq.com/tutorials/zfs-proxmox-pool-setup-arc-tuning-2026/">ZFS on Proxmox guide&lt;/a> covers pool layout and scrubs.&lt;/p>
&lt;p>&lt;strong>Shucking external drives.&lt;/strong> Pulling the bare drive out of a cheap external enclosure used to be the classic discount move. It still works, but the same shortage that lifted bare-drive prices has compressed the shucking discount, so the savings are thinner than they were in 2024. Worth a look on a deal, not something to count on.&lt;/p>
&lt;/section>
&lt;!-- NAS OS -->
&lt;section>
&lt;h2>Picking Your NAS Operating System&lt;/h2>
&lt;p>The hardware is the easy part. The OS decision is where most people get stuck, and the wrong choice can mean a rebuild six months in. All three of these are legitimate — but they're designed for different users.&lt;/p>
&lt;h3>TrueNAS CORE / SCALE — The ZFS Purist&lt;/h3>
&lt;p>&lt;strong>Price:&lt;/strong> Free (Community Edition)&lt;br>
&lt;strong>Minimum RAM:&lt;/strong> 8GB (for up to 8 drives; more is better)&lt;br>
&lt;strong>Filesystem:&lt;/strong> ZFS (mandatory — it's the entire point)&lt;/p>
&lt;p>TrueNAS is ZFS. That's both its strength and its constraint. ZFS gives you checksumming, snapshots, scrubbing, and the most reliable storage layer available on consumer hardware. If data integrity is your primary concern — and for a NAS it probably should be — TrueNAS is the safest choice.&lt;/p>
&lt;p>The RAM requirement is real. ZFS uses ARC (Adaptive Replacement Cache) aggressively, and starving it below 8GB leads to poor performance. The conventional wisdom of "1GB per TB of storage" is a rough guideline that works. For a 16TB raw array (4× 8TB before redundancy), 16GB of RAM is the sweet spot. The 5825U WTR Pro's 64GB ceiling and dual DIMM slots make it the better TrueNAS chassis.&lt;/p>
&lt;p>TrueNAS SCALE (Linux-based) supports Docker containers natively. CORE (FreeBSD-based) does not. For a NAS that also runs a few services, SCALE is the modern choice.&lt;/p>
&lt;h3>Unraid — The Flexibility Play&lt;/h3>
&lt;p>&lt;strong>Price:&lt;/strong> Starter $49 (6 devices) / Unleashed $109 (unlimited) / Lifetime $249&lt;br>
&lt;strong>Minimum RAM:&lt;/strong> 8GB (16GB+ recommended for VMs)&lt;br>
&lt;strong>Filesystem:&lt;/strong> XFS per drive, parity-based redundancy&lt;/p>
&lt;p>Unraid takes a fundamentally different approach to storage. Each drive is an independent XFS filesystem, and parity is calculated across drives. The practical advantage: you can mix drive sizes. A 4TB, an 8TB, and a 12TB can all live in the same array as long as the parity drive is the largest. Try that with ZFS or traditional RAID.&lt;/p>
&lt;p>The community app ecosystem is Unraid's real draw. Docker containers and VMs are first-class citizens with a point-and-click interface. Installing Plex, Nextcloud, or Home Assistant is a five-minute affair. For users who want a NAS that does everything and don't want to touch a terminal, Unraid is the most approachable option.&lt;/p>
&lt;p>The cost is real but reasonable. The Starter license at $49 covers 6 storage devices — enough for 4 data drives, a parity drive, and a cache SSD. For a 4-bay build, that's all you need. Lifetime at $249 makes sense if you plan to expand significantly.&lt;/p>
&lt;p>The tradeoff versus ZFS: Unraid's parity system is slower for writes (parity calculated in real-time), and it doesn't offer ZFS-level checksumming or self-healing. For most home users serving media and backing up photos, this doesn't matter. For a business storing irreplaceable data, it might.&lt;/p>
&lt;h3>OpenMediaVault — The Lean Option&lt;/h3>
&lt;p>&lt;strong>Price:&lt;/strong> Free&lt;br>
&lt;strong>Minimum RAM:&lt;/strong> 1GB (4GB comfortable / 8GB+ recommended)&lt;br>
&lt;strong>Filesystem:&lt;/strong> ext4, XFS, Btrfs, ZFS (via plugin)&lt;/p>
&lt;p>OMV is Debian with a web UI for NAS management. That's not a criticism — it's the lightest option by a wide margin. If you want a NAS and nothing else, OMV runs on almost nothing. The 1GB minimum is real: it will actually function on minimal hardware.&lt;/p>
&lt;p>For users who are comfortable in Linux and want a pure NAS without the overhead of TrueNAS or the cost of Unraid, OMV is the right call. It does SMB shares, NFS, rsync, and basic Docker management. It doesn't try to be a hypervisor or an app platform.&lt;/p>
&lt;p>One important note: OMV is &lt;strong>not supported in an LXC container&lt;/strong>. If you're planning to run it inside &lt;a href="https://techfuelhq.com/tutorials/">Proxmox&lt;/a>, it needs a full VM. This matters for homelab users who want to consolidate a NAS into an existing Proxmox node.&lt;/p>
&lt;/section>
&lt;!-- ========== VISUAL 3: NAS OS COMPARISON TABLE ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;padding:28px 16px 20px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;">
&lt;div style="text-align:center;margin-bottom:20px;">
&lt;div style="font-size:18px;font-weight:600;letter-spacing:-0.3px;">NAS operating systems compared&lt;/div>
&lt;div style="font-size:12px;color:#9a9ab5;margin-top:4px;">Features, requirements, and cost for each option&lt;/div>
&lt;/div>
&lt;div style="overflow-x:auto;">
&lt;table style="width:100%;max-width:720px;margin:0 auto;border-collapse:collapse;font-size:13px;">
&lt;thead>
&lt;tr>
&lt;th style="text-align:left;padding:12px 10px;border-bottom:2px solid rgba(255,255,255,0.1);color:#7a7a96;font-weight:500;font-size:11px;min-width:120px;">&lt;/th>
&lt;th style="text-align:center;padding:12px 10px;border-bottom:2px solid rgba(93,202,122,0.4);color:#5dca7a;font-weight:600;min-width:140px;">TrueNAS SCALE&lt;/th>
&lt;th style="text-align:center;padding:12px 10px;border-bottom:2px solid rgba(200,120,50,0.4);color:#e08040;font-weight:600;min-width:140px;">Unraid&lt;/th>
&lt;th style="text-align:center;padding:12px 10px;border-bottom:2px solid rgba(80,144,224,0.4);color:#5090e0;font-weight:600;min-width:140px;">OpenMediaVault&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">
&lt;td style="padding:10px;color:#9090a8;">Price&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#5dca7a;font-weight:500;">Free&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#e08040;font-weight:500;">$49–$249&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#5090e0;font-weight:500;">Free&lt;/td>
&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">
&lt;td style="padding:10px;color:#9090a8;">Min RAM&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#e0e0f0;">8GB&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#e0e0f0;">8GB (16GB+ for VMs)&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#5090e0;font-weight:500;">1GB (4GB ideal)&lt;/td>
&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">
&lt;td style="padding:10px;color:#9090a8;">Filesystem&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#5dca7a;font-weight:500;">ZFS (native)&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#e0e0f0;">XFS + parity&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#e0e0f0;">ext4 / XFS / Btrfs&lt;/td>
&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">
&lt;td style="padding:10px;color:#9090a8;">Data integrity&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#5dca7a;font-weight:500;">Checksumming + self-heal&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#9090a8;">Parity only&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#9090a8;">Depends on FS&lt;/td>
&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">
&lt;td style="padding:10px;color:#9090a8;">Mixed drive sizes&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#ed6a5a;">No&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#e08040;font-weight:500;">Yes (killer feature)&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#e0e0f0;">With SnapRAID plugin&lt;/td>
&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">
&lt;td style="padding:10px;color:#9090a8;">Docker support&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#5dca7a;font-weight:500;">Native (SCALE)&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#e08040;font-weight:500;">Native + app store&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#e0e0f0;">Via plugin&lt;/td>
&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">
&lt;td style="padding:10px;color:#9090a8;">VM support&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#e0e0f0;">Basic (KVM)&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#e08040;font-weight:500;">KVM + GPU passthrough&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#ed6a5a;">No&lt;/td>
&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">
&lt;td style="padding:10px;color:#9090a8;">Proxmox LXC&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#9090a8;">N/A (standalone)&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#9090a8;">N/A (standalone)&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#ed6a5a;font-weight:500;">Not supported&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="padding:10px;color:#9090a8;">Best for&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#8a8a9e;font-size:12px;">Data integrity purists,&lt;br>ZFS enthusiasts&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#8a8a9e;font-size:12px;">All-in-one NAS + media&lt;br>+ Docker + VMs&lt;/td>
&lt;td style="padding:10px;text-align:center;color:#8a8a9e;font-size:12px;">Pure NAS on minimal&lt;br>hardware&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;div style="text-align:right;margin-top:10px;font-size:10px;color:#44445a;">techfuelhq.com · March 2026&lt;/div>
&lt;/div>
&lt;/div>
&lt;!-- BUILDS -->
&lt;section>
&lt;h2>Sample Builds With Real Costs&lt;/h2>
&lt;p>Here's what the full bill of materials looks like for each approach. Drive, RAM, and box prices reflect the 2026-07-13 snapshot — and this is the year to itemize, because RAM stopped being free money. The build totals below are reproduced by the cost calculator further down using the same constants.&lt;/p>
&lt;h3>Build A: N150 TrueNAS Mirror — The Quiet Workhorse&lt;/h3>
&lt;ul>
&lt;li>AOOSTAR WTR Pro N150 barebone: &lt;strong>$379&lt;/strong> (street ~$379-$399)&lt;/li>
&lt;li>16GB DDR5 SO-DIMM: &lt;strong>~$160&lt;/strong> (the shortage tax — this was ~$45 a year ago)&lt;/li>
&lt;li>256GB NVMe boot drive: &lt;strong>~$25&lt;/strong>&lt;/li>
&lt;li>2× WD Red Plus 8TB (mirrored): &lt;strong>~$638&lt;/strong> ($319 each, 2026-07-13)&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Total: ~$1,202&lt;/strong> for 8TB usable with ZFS mirror, idle power around 14–19W. Annual electricity cost at $0.14/kWh: roughly $18–23. The two consumables — drives (~$638) plus RAM (~$160) — are ~66% of the bill; the box and boot drive are the cheap, stable third. Swapping in recertified enterprise disks is the biggest lever on that total. This is your quiet, efficient, set-and-forget NAS.&lt;/p>
&lt;h3>Build B: 5825U Unraid Multitasker — The Do-Everything Box&lt;/h3>
&lt;ul>
&lt;li>AOOSTAR WTR Pro 5825U barebone: &lt;strong>$379&lt;/strong> (street ~$379-$399)&lt;/li>
&lt;li>32GB DDR4 SO-DIMM kit (2× 16GB): &lt;strong>~$185&lt;/strong> (DDR4 climbed too)&lt;/li>
&lt;li>512GB NVMe (cache + boot): &lt;strong>~$35&lt;/strong>&lt;/li>
&lt;li>2× WD Red Plus 8TB: &lt;strong>~$638&lt;/strong> ($319 each, 2026-07-13)&lt;/li>
&lt;li>Unraid Starter license: &lt;strong>$49&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Total: ~$1,286&lt;/strong> for 8TB usable with parity protection and a capable app platform. Idle power around 9–13W with drives spinning. Annual electricity at idle: roughly $10–16. You get 8 cores of Ryzen grunt for Plex transcoding and Docker workloads, plus room to grow to 64GB RAM and four drives — though in 2026, "grow to 64GB later" is a real budget line, so size your RAM for what you'll actually run.&lt;/p>
&lt;/section>
&lt;!-- ========== VISUAL 1: INTERACTIVE BUILD COST CALCULATOR ========== -->
&lt;div class="visual-block">
&lt;div id="calcWrap" style="background:#0a0a23;padding:28px 24px 20px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;">
&lt;div style="text-align:center;margin-bottom:20px;">
&lt;div style="font-size:18px;font-weight:600;letter-spacing:-0.3px;">Build cost calculator&lt;/div>
&lt;div style="font-size:12px;color:#9a9ab5;margin-top:4px;">Pick your chassis, OS, and drive count — see your total&lt;/div>
&lt;/div>
&lt;div style="max-width:500px;margin:0 auto;">
&lt;!-- Chassis selector -->
&lt;div style="margin-bottom:16px;">
&lt;div style="font-size:12px;color:#7a7a96;margin-bottom:6px;">CHASSIS&lt;/div>
&lt;div style="display:grid;grid-template-columns:1fr 1fr;gap:8px;" id="chassisSelect">
&lt;button onclick="setChassis('n100')" id="btn-n100" style="background:rgba(93,202,122,0.12);border:1.5px solid #5dca7a;border-radius:8px;padding:12px;color:#e0e0f0;cursor:pointer;font-size:13px;font-weight:500;text-align:left;font-family:inherit;">
&lt;div style="color:#5dca7a;font-weight:600;">N150 WTR Pro&lt;/div>
&lt;div style="font-size:11px;color:#7a7a96;margin-top:2px;">$379 · 4C/4T · DDR5&lt;/div>
&lt;/button>
&lt;button onclick="setChassis('5825u')" id="btn-5825u" style="background:rgba(255,255,255,0.03);border:1.5px solid rgba(255,255,255,0.1);border-radius:8px;padding:12px;color:#e0e0f0;cursor:pointer;font-size:13px;font-weight:500;text-align:left;font-family:inherit;">
&lt;div style="color:#8a8a9e;">5825U WTR Pro&lt;/div>
&lt;div style="font-size:11px;color:#7a7a96;margin-top:2px;">$379 · 8C/16T · DDR4&lt;/div>
&lt;/button>
&lt;/div>
&lt;/div>
&lt;!-- OS selector -->
&lt;div style="margin-bottom:16px;">
&lt;div style="font-size:12px;color:#7a7a96;margin-bottom:6px;">OPERATING SYSTEM&lt;/div>
&lt;div style="display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;" id="osSelect">
&lt;button onclick="setOS('truenas')" id="btn-truenas" style="background:rgba(93,202,122,0.12);border:1.5px solid #5dca7a;border-radius:8px;padding:10px 8px;color:#e0e0f0;cursor:pointer;font-size:12px;font-weight:500;text-align:center;font-family:inherit;">
&lt;div style="color:#5dca7a;font-weight:600;">TrueNAS&lt;/div>
&lt;div style="font-size:10px;color:#7a7a96;margin-top:2px;">Free&lt;/div>
&lt;/button>
&lt;button onclick="setOS('unraid')" id="btn-unraid" style="background:rgba(255,255,255,0.03);border:1.5px solid rgba(255,255,255,0.1);border-radius:8px;padding:10px 8px;color:#e0e0f0;cursor:pointer;font-size:12px;font-weight:500;text-align:center;font-family:inherit;">
&lt;div style="color:#8a8a9e;">Unraid&lt;/div>
&lt;div style="font-size:10px;color:#7a7a96;margin-top:2px;">$49&lt;/div>
&lt;/button>
&lt;button onclick="setOS('omv')" id="btn-omv" style="background:rgba(255,255,255,0.03);border:1.5px solid rgba(255,255,255,0.1);border-radius:8px;padding:10px 8px;color:#e0e0f0;cursor:pointer;font-size:12px;font-weight:500;text-align:center;font-family:inherit;">
&lt;div style="color:#8a8a9e;">OMV&lt;/div>
&lt;div style="font-size:10px;color:#7a7a96;margin-top:2px;">Free&lt;/div>
&lt;/button>
&lt;/div>
&lt;/div>
&lt;!-- Drive count -->
&lt;div style="margin-bottom:16px;">
&lt;div style="display:flex;justify-content:space-between;align-items:center;">
&lt;div style="font-size:12px;color:#7a7a96;">WD RED PLUS 8TB DRIVES&lt;/div>
&lt;div style="font-size:14px;font-weight:600;color:#e0e0f0;" id="driveCountLabel">2&lt;/div>
&lt;/div>
&lt;input type="range" min="2" max="4" value="2" step="1" id="driveSlider" oninput="updateCalc()" style="width:100%;margin-top:8px;accent-color:#5dca7a;height:6px;cursor:pointer;">
&lt;/div>
&lt;!-- RAM -->
&lt;div style="margin-bottom:20px;">
&lt;div style="display:flex;justify-content:space-between;align-items:center;">
&lt;div style="font-size:12px;color:#7a7a96;">RAM&lt;/div>
&lt;div style="font-size:14px;font-weight:600;color:#e0e0f0;" id="ramLabel">16GB&lt;/div>
&lt;/div>
&lt;input type="range" min="0" max="2" value="0" step="1" id="ramSlider" oninput="updateCalc()" style="width:100%;margin-top:8px;accent-color:#5dca7a;height:6px;cursor:pointer;">
&lt;/div>
&lt;!-- RESULTS -->
&lt;div style="background:rgba(255,255,255,0.04);border:1px solid rgba(255,255,255,0.08);border-radius:10px;padding:16px 20px;">
&lt;div style="display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px;">
&lt;div style="text-align:center;">
&lt;div style="font-size:28px;font-weight:700;color:#5dca7a;" id="totalCost">$1202&lt;/div>
&lt;div style="font-size:11px;color:#7a7a96;margin-top:2px;">Total build cost&lt;/div>
&lt;/div>
&lt;div style="text-align:center;">
&lt;div style="font-size:28px;font-weight:700;color:#ffa040;" id="annualPower">~$18&lt;/div>
&lt;div style="font-size:11px;color:#7a7a96;margin-top:2px;">Est. annual electricity&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="border-top:1px solid rgba(255,255,255,0.06);padding-top:10px;font-size:11px;color:#9a9ab5;" id="breakdown">
Chassis $379 + 2× WD Red Plus 8TB $638 + 16GB RAM ~$160 + 256GB NVMe ~$25
&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;!-- WHO SHOULD BUILD WHAT -->
&lt;section>
&lt;h2>Who Should Build What&lt;/h2>
&lt;h3>Build the N100 + TrueNAS if:&lt;/h3>
&lt;ul>
&lt;li>Data integrity is your top priority — ZFS checksumming catches bit rot that other filesystems miss&lt;/li>
&lt;li>You want a quiet, low-power NAS that serves files and runs a few containers&lt;/li>
&lt;li>You don't need heavy transcoding or VM workloads on the same box&lt;/li>
&lt;li>You're comfortable with TrueNAS's opinionated approach to storage management&lt;/li>
&lt;/ul>
&lt;h3>Build the 5825U + Unraid if:&lt;/h3>
&lt;ul>
&lt;li>You want a NAS that also runs Plex, Docker containers, and maybe a Windows VM&lt;/li>
&lt;li>You plan to mix drive sizes as you expand over time&lt;/li>
&lt;li>You prefer a point-and-click interface with a strong community app ecosystem&lt;/li>
&lt;li>The $49 Starter license fits your budget and you want the most approachable setup experience&lt;/li>
&lt;/ul>
&lt;h3>Build either chassis + OMV if:&lt;/h3>
&lt;ul>
&lt;li>You want the leanest possible NAS — file sharing and backups, nothing else&lt;/li>
&lt;li>You're a Linux user who's comfortable managing services via a lightweight web UI&lt;/li>
&lt;li>RAM is limited and you don't want ZFS's memory overhead&lt;/li>
&lt;li>Budget is absolutely maximized and even $49 for Unraid matters&lt;/li>
&lt;/ul>
&lt;/section>
&lt;!-- VERDICT -->
&lt;section>
&lt;h2>The Verdict&lt;/h2>
&lt;p>Here's the honest 2026 arithmetic, and it's less lopsided than it used to be. A Synology DS423+ plus two new WD Red Plus 8TB drives is $499 + ~$638 = ~$1,137, and it ships with usable RAM and boots off the drives — no separate memory or boot NVMe to buy. The N150 WTR Pro with TrueNAS and the same drives comes to ~$1,202, because you're also buying a 16GB DDR5 SO-DIMM (~$160 in this market) and a boot NVMe. So on &lt;em>raw price&lt;/em>, the RAM shortage has quietly erased the DIY box's old $70-ish lead — the two land within about sixty dollars of each other now.&lt;/p>
&lt;p>That doesn't change the answer; it changes the reason. You don't build your own to save the sixty bucks anymore. You build it for ZFS checksumming instead of a Celeron's parity, for dual 2.5GbE, for a real processor, for the freedom to run TrueNAS or Unraid or Proxmox and to repurpose the box later — and, crucially, for access to the one lever that still saves real money in 2026: &lt;strong>recertified enterprise drives&lt;/strong>, which knock $250-350 off any of these builds and which a sealed appliance won't encourage. That's where the DIY math wins now — not on the box, on what the box lets you do with the expensive parts.&lt;/p>
&lt;p>Both DIY builds idle under 20W. Both are quieter than a Synology under load. Both give you the freedom to change your OS, upgrade components, and repurpose the hardware if your needs change. In a year when every part got pricier, control over each line item is worth more than it was, not less.&lt;/p>
&lt;p>Buy the hardware that fits your power and compute needs. Pick the OS that matches how much you want to tinker versus how much you want to click. Build something that's actually yours.&lt;/p>
&lt;/section>
&lt;footer style="margin-top:40px;padding-top:24px;border-top:1px solid rgba(255,255,255,0.06);">
&lt;p>&lt;em>Prices re-snapshotted June 19, 2026. Power measurements sourced from independent reviews of AOOSTAR WTR Pro hardware. Drive prices from major US retailers. For more homelab hardware, see &lt;a href="https://techfuelhq.com/homelab/">Homelab&lt;/a>. Setup guides at &lt;a href="https://techfuelhq.com/tutorials/">Tutorials&lt;/a>. Network upgrade advice at &lt;a href="https://techfuelhq.com/networking/">Networking&lt;/a>.&lt;/em>&lt;/p>
&lt;/footer>
&lt;!-- Interactive build calculator: self-contained, no external dependencies -->
&lt;script>
// ===== BUILD CALCULATOR =====
var state={chassis:'n100',os:'truenas',drives:2,ram:0};
var chassisData={
n100:{price:379,name:'N150 WTR Pro',idlePerDrive:[9.3,null,14.3,null,18.7],ramOpts:['16GB DDR5 ~$160','32GB DDR5 ~$330'],ramPrices:[160,330],nvme:25,nvmeLabel:'256GB NVMe ~$25'},
'5825u':{price:379,name:'5825U WTR Pro',idlePerDrive:[5.5,null,8.7,null,13],ramOpts:['16GB DDR4 ~$95','32GB DDR4 ~$185','64GB DDR4 ~$370'],ramPrices:[95,185,370],nvme:35,nvmeLabel:'512GB NVMe ~$35'}
};
var osData={truenas:{price:0,name:'TrueNAS',label:'Free'},unraid:{price:49,name:'Unraid Starter',label:'$49'},omv:{price:0,name:'OMV',label:'Free'}};
var drivePrice=319; // WD Red Plus 8TB, Amazon 2026-07-13 (was 334.99 spring peak, 204.99 in 2024)
function setChassis(c){
state.chassis=c;state.ram=0;
document.getElementById('ramSlider').max=chassisData[c].ramPrices.length-1;
document.getElementById('ramSlider').value=0;
updateButtons();updateCalc();
}
function setOS(o){state.os=o;updateButtons();updateCalc();}
function updateButtons(){
['n100','5825u'].forEach(function(k){
var b=document.getElementById('btn-'+k);
if(k===state.chassis){b.style.background='rgba(93,202,122,0.12)';b.style.borderColor='#5dca7a';b.querySelector('div').style.color='#5dca7a';}
else{b.style.background='rgba(255,255,255,0.03)';b.style.borderColor='rgba(255,255,255,0.1)';b.querySelector('div').style.color='#8a8a9e';}
});
['truenas','unraid','omv'].forEach(function(k){
var b=document.getElementById('btn-'+k);
if(k===state.os){b.style.background='rgba(93,202,122,0.12)';b.style.borderColor='#5dca7a';b.querySelector('div').style.color='#5dca7a';}
else{b.style.background='rgba(255,255,255,0.03)';b.style.borderColor='rgba(255,255,255,0.1)';b.querySelector('div').style.color='#8a8a9e';}
});
}
function updateCalc(){
var d=parseInt(document.getElementById('driveSlider').value);
state.drives=d;
state.ram=parseInt(document.getElementById('ramSlider').value);
var ch=chassisData[state.chassis];
var os=osData[state.os];
var ramP=ch.ramPrices[state.ram];
var ramLabel=ch.ramOpts[state.ram];
var driveCost=Math.round(d*drivePrice*100)/100;
var total=Math.round(ch.price+driveCost+ramP+ch.nvme);
var idleIdx=d===2?2:d===3?2:4;
var idleW=ch.idlePerDrive[idleIdx]||ch.idlePerDrive[2];
if(d===3) idleW=Math.round((ch.idlePerDrive[2]+ch.idlePerDrive[4])/2*10)/10;
var annualElec=Math.round(idleW*8.76*0.14);
document.getElementById('driveCountLabel').textContent=d;
document.getElementById('ramLabel').textContent=ramLabel.split(' ')[0];
document.getElementById('totalCost').textContent='$'+total;
document.getElementById('annualPower').textContent='~$'+annualElec;
var parts=['Chassis $'+ch.price];
if(os.price>0)parts.push(os.name+' $'+os.price);
parts.push(d+'× WD Red Plus 8TB $'+Math.round(driveCost));
parts.push(ramLabel);
parts.push(ch.nvmeLabel);
document.getElementById('breakdown').textContent=parts.join(' + ');
if(os.price>0) total+=os.price;
document.getElementById('totalCost').textContent='$'+(total);
}
updateCalc();
&lt;/script>
&lt;!-- Inline Article JSON-LD removed 2026-06-10: now emitted by layouts/partials/schema.html sitewide. -->
&lt;h2 id="build-a-nas-box-that-exactly-fits-the-role">Build a NAS box that exactly fits the role&lt;/h2>
&lt;p>If you&amp;rsquo;d rather pick parts yourself instead of buying a turnkey AOOSTAR, the &lt;a href="https://techfuelhq.com/tools/pc-builder/">TechFuelHQ PC Builder&lt;/a> is a free, open-source picker with socket / RAM / PSU compatibility checks and a CC BY 4.0 parts dataset. Pair it with the &lt;a href="https://techfuelhq.com/homelab/proxmox-truenas-unraid-storage-backend-2026/">Proxmox vs TrueNAS vs Unraid&lt;/a> decision guide to pick the OS, and the &lt;a href="https://techfuelhq.com/networking/10gbe-home-networking-budget-2026/">10GbE homelab networking guide&lt;/a> if your storage is fast enough that 2.5GbE becomes the bottleneck.&lt;/p>
&lt;h2 id="sources-and-methodology">Sources and methodology&lt;/h2>
&lt;p>Price snapshots dated 2026-07-13 (drive, RAM, and box prices captured live from Amazon that day). RAM and HDD pricing is volatile in the 2026 shortage — treat every figure here as a July 2026 reference and verify at purchase. Power figures sourced from manufacturer spec sheets and the published third-party reviews cited inline.&lt;/p>
&lt;p>&lt;strong>Primary sources cited:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://aoostar.com/" rel="noopener">AOOSTAR product pages&lt;/a> — manufacturer specifications and pricing&lt;/li>
&lt;li>Amazon, &lt;a href="https://www.newegg.com/" rel="noopener">Newegg&lt;/a>, &lt;a href="https://www.bhphotovideo.com/" rel="noopener">B&amp;amp;H Photo&lt;/a> — direct retailer pricing snapshots&lt;/li>
&lt;li>&lt;a href="https://www.ebay.com/" rel="noopener">eBay refurb listings&lt;/a> — used market pricing for HP EliteDesk 800 G4 Mini and similar&lt;/li>
&lt;li>&lt;a href="https://www.servethehome.com/category/storage/" rel="noopener">ServeTheHome NAS reviews&lt;/a> — third-party AOOSTAR, Minisforum, and SFF reviews&lt;/li>
&lt;li>&lt;a href="https://www.truenas.com/docs/" rel="noopener">TrueNAS documentation&lt;/a> — official Community Edition 25.10 system requirements&lt;/li>
&lt;li>&lt;a href="https://docs.unraid.net/" rel="noopener">Unraid documentation&lt;/a> — official Unraid 7.3 hardware compatibility&lt;/li>
&lt;li>&lt;a href="https://docs.openmediavault.org/" rel="noopener">OpenMediaVault documentation&lt;/a> — system requirements&lt;/li>
&lt;li>Amazon live pricing (WD Red Plus 8TB WD80EFPX ~$319; Seagate IronWolf 8TB ST8000VN004 ~$300; AOOSTAR WTR Pro 5825U ~$379-399; 8GB DDR5 SO-DIMM ~$109), captured 2026-07-13&lt;/li>
&lt;li>&lt;a href="https://winbuzzer.com/" rel="noopener">winbuzzer.com, 2026-02-18&lt;/a> — &amp;ldquo;Hard Drive Prices Surge 50% as AI Data Centers Buy Out 2026 Supply&amp;rdquo; (WD CEO Irving Tan nearline-allocation quote)&lt;/li>
&lt;li>&lt;a href="https://www.xda-developers.com/" rel="noopener">xda-developers.com&lt;/a> — Western Digital sold out of hard drives through 2026&lt;/li>
&lt;li>&lt;a href="https://www.tomshardware.com/pc-components/ram/ram-price-index-2026-lowest-price-on-ddr5-and-ddr4-memory-of-all-capacities" rel="noopener">Tom&amp;rsquo;s Hardware — RAM price index 2026&lt;/a> — live DDR5/DDR4 pricing through the 2026 shortage&lt;/li>
&lt;li>&lt;a href="https://wccftech.com/roundup/memory-crisis/" rel="noopener">Wccftech — memory crisis roundup&lt;/a> — DDR5 chip pricing ~$6.84/GB (Sep 2025) → ~$27.20/GB (Dec 2025), shortage projected into 2027&lt;/li>
&lt;li>&lt;a href="https://mjtsai.com/blog/2025/10/09/synology-reverses-ban-on-third-party-hard-drives/" rel="noopener">mjtsai.com, 2025-10-09&lt;/a> — Synology reverses third-party-drive restriction in DSM 7.3 (DS925+/DS1825+/DS425+)&lt;/li>
&lt;li>&lt;a href="https://blog.briancmoses.com/" rel="noopener">briancmoses.com, &amp;ldquo;DIY NAS: 2026 Edition&amp;rdquo;&lt;/a> — Topton N22 / Intel Core 3 N305 community reference build&lt;/li>
&lt;li>&lt;a href="https://serverpartdeals.com/collections/hard-drives" rel="noopener">ServerPartDeals recertified-drive category&lt;/a> — recertified Seagate Exos pricing (verify at purchase; $/TB varies weekly)&lt;/li>
&lt;/ul>
&lt;p>Email corrections to &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a>.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Once your NAS hardware is chosen, the &lt;a href="https://techfuelhq.com/tutorials/zfs-proxmox-pool-setup-arc-tuning-2026/">ZFS on Proxmox guide&lt;/a> covers pool creation, ARC tuning for shared hosts, and Sanoid snapshot automation — all applicable to TrueNAS SCALE and standalone Proxmox storage nodes. For protecting your NAS with off-site backups, the &lt;a href="https://techfuelhq.com/tutorials/proxmox-backup-server-3-2-1-2026/">3-2-1 backup setup with Proxmox Backup Server&lt;/a> covers the full stack.&lt;/em>&lt;/p></description></item><item><title>DDR5 RAM Buying Guide 2026: What It Actually Costs Now</title><link>https://techfuelhq.com/articles/ddr5-ram-buying-guide-2025/</link><pubDate>Thu, 02 Apr 2026 00:00:00 -0500</pubDate><guid>https://techfuelhq.com/articles/ddr5-ram-buying-guide-2025/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-04-02 · Updated 2026-07-24 · ~14 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence which products get recommended - see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">The price, up front - checked July 24, 2026&lt;/p>
&lt;p style="margin:0 0 0.6rem 0;line-height:1.6;">A &lt;strong>32GB (2 x 16GB) DDR5-6000 kit runs about $400 to $470&lt;/strong> right now - roughly &lt;strong>$12.5 per gigabyte&lt;/strong>. A &lt;strong>64GB kit starts near $875&lt;/strong> and stock is thin. That is about &lt;strong>4 to 5x the ~$80 to $100&lt;/strong> those same kits cost in mid-2025, and prices have flattened a little off the early-2026 peak rather than crashing. This is a shortage, not a fluke: AMD expects elevated DDR5 pricing into roughly 2028.&lt;/p>
&lt;p style="margin:0;font-size:0.9rem;color:#a0a0b8;">Numbers move week to week - every table below links to a live retailer search. Full context on the crash question: &lt;a href="https://techfuelhq.com/articles/ram-ssd-price-crisis-2026/">the 2026 RAM and SSD price crisis&lt;/a>. For these numbers inside a real build, see the &lt;a href="https://techfuelhq.com/pc-builds/budget-am5-1080p-gaming-pc-2026/">budget AM5 build&lt;/a>.&lt;/p>
&lt;/div>
&lt;!-- ========== VISUAL 1: CURRENT PRICE BOARD (signature grammar - table reimagined as a ranked price board) ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0b0f1e;padding:26px 22px 18px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;">
&lt;div style="margin-bottom:6px;">
&lt;div style="font-size:18px;font-weight:700;letter-spacing:-0.3px;">The 2026 DDR5 price board&lt;/div>
&lt;div style="font-size:12px;color:#8f9bb3;margin-top:4px;">Lowest in-stock U.S. price by capacity, DDR5-6000 · checked July 24, 2026 · per-GB in the pill&lt;/div>
&lt;/div>
&lt;div style="margin-top:14px;display:flex;flex-direction:column;gap:12px;">
&lt;!-- 32GB row -->
&lt;div style="min-width:0;">
&lt;div style="display:flex;justify-content:space-between;align-items:baseline;font-size:12.5px;margin-bottom:4px;">
&lt;span style="color:#c8ff00;font-weight:700;">32GB &amp;nbsp;&lt;span style="color:#7a869c;font-weight:500;">2 x 16GB · the baseline buy&lt;/span>&lt;/span>
&lt;span style="color:#e8e8f0;font-weight:700;">$400&lt;/span>
&lt;/div>
&lt;div style="display:flex;align-items:center;gap:10px;">
&lt;div style="flex:1 1 auto;min-width:0;height:20px;background:rgba(255,255,255,0.06);border-radius:3px;overflow:hidden;">&lt;div style="width:30%;height:100%;background:#c8ff00;border-radius:3px;">&lt;/div>&lt;/div>
&lt;span style="font-size:11px;color:#0b0f1e;background:#c8ff00;border-radius:20px;padding:2px 9px;font-weight:700;white-space:nowrap;flex:0 0 auto;">$12.5 / GB&lt;/span>
&lt;/div>
&lt;/div>
&lt;!-- 48GB row -->
&lt;div style="min-width:0;">
&lt;div style="display:flex;justify-content:space-between;align-items:baseline;font-size:12.5px;margin-bottom:4px;">
&lt;span style="color:#cfd6e6;font-weight:600;">48GB &amp;nbsp;&lt;span style="color:#7a869c;font-weight:500;">2 x 24GB · odd-capacity premium&lt;/span>&lt;/span>
&lt;span style="color:#e8e8f0;font-weight:700;">$662&lt;/span>
&lt;/div>
&lt;div style="display:flex;align-items:center;gap:10px;">
&lt;div style="flex:1 1 auto;min-width:0;height:20px;background:rgba(255,255,255,0.06);border-radius:3px;overflow:hidden;">&lt;div style="width:51%;height:100%;background:#5c9ce0;border-radius:3px;">&lt;/div>&lt;/div>
&lt;span style="font-size:11px;color:#dfe7f5;background:rgba(92,156,224,0.18);border:1px solid rgba(92,156,224,0.4);border-radius:20px;padding:2px 9px;font-weight:600;white-space:nowrap;flex:0 0 auto;">$13.8 / GB&lt;/span>
&lt;/div>
&lt;/div>
&lt;!-- 64GB row -->
&lt;div style="min-width:0;">
&lt;div style="display:flex;justify-content:space-between;align-items:baseline;font-size:12.5px;margin-bottom:4px;">
&lt;span style="color:#cfd6e6;font-weight:600;">64GB &amp;nbsp;&lt;span style="color:#7a869c;font-weight:500;">2 x 32GB · thin stock&lt;/span>&lt;/span>
&lt;span style="color:#e8e8f0;font-weight:700;">$875&lt;/span>
&lt;/div>
&lt;div style="display:flex;align-items:center;gap:10px;">
&lt;div style="flex:1 1 auto;min-width:0;height:20px;background:rgba(255,255,255,0.06);border-radius:3px;overflow:hidden;">&lt;div style="width:61%;height:100%;background:#5c9ce0;border-radius:3px;">&lt;/div>&lt;/div>
&lt;span style="font-size:11px;color:#dfe7f5;background:rgba(92,156,224,0.18);border:1px solid rgba(92,156,224,0.4);border-radius:20px;padding:2px 9px;font-weight:600;white-space:nowrap;flex:0 0 auto;">$13.7 / GB&lt;/span>
&lt;/div>
&lt;/div>
&lt;!-- 96GB row -->
&lt;div style="min-width:0;">
&lt;div style="display:flex;justify-content:space-between;align-items:baseline;font-size:12.5px;margin-bottom:4px;">
&lt;span style="color:#cfd6e6;font-weight:600;">96GB &amp;nbsp;&lt;span style="color:#7a869c;font-weight:500;">2 x 48GB · creator / VM tier&lt;/span>&lt;/span>
&lt;span style="color:#e8e8f0;font-weight:700;">$1,310&lt;/span>
&lt;/div>
&lt;div style="display:flex;align-items:center;gap:10px;">
&lt;div style="flex:1 1 auto;min-width:0;height:20px;background:rgba(255,255,255,0.06);border-radius:3px;overflow:hidden;">&lt;div style="width:100%;height:100%;background:#b07cd8;border-radius:3px;">&lt;/div>&lt;/div>
&lt;span style="font-size:11px;color:#f0e6f8;background:rgba(176,124,216,0.18);border:1px solid rgba(176,124,216,0.4);border-radius:20px;padding:2px 9px;font-weight:600;white-space:nowrap;flex:0 0 auto;">$13.7 / GB&lt;/span>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:16px;padding-top:12px;border-top:1px solid rgba(255,255,255,0.07);font-size:11px;color:#8f9bb3;line-height:1.6;">Capacity, not speed, is what the shortage taxes: the per-GB rate barely moves across tiers, so the bill scales almost linearly with how much you buy. The lowest-ever price on a 32GB DDR5-6000 kit was about &lt;strong style="color:#cfd6e6;">$2.25/GB ($72)&lt;/strong> - today's shopper pays five to six times that per gig.&lt;/div>
&lt;div style="text-align:right;margin-top:8px;font-size:10px;color:#44506a;">techfuelhq.com · source: live Amazon listings, July 24 2026&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="what-ddr5-actually-costs-right-now-july-2026">What DDR5 actually costs right now (July 2026)&lt;/h2>
&lt;p>Here is the live picture, best in-stock U.S. price per capacity, cross-checked against live Amazon listings on July 24, 2026:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Capacity&lt;/th>
&lt;th scope="col">Kit&lt;/th>
&lt;th scope="col">DDR5-6000 best price&lt;/th>
&lt;th scope="col">Per GB&lt;/th>
&lt;th scope="col">vs. mid-2025 floor&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>32GB&lt;/td>
&lt;td>2 x 16GB&lt;/td>
&lt;td>~$400 (CL30 ~$420-470)&lt;/td>
&lt;td>~$12.5&lt;/td>
&lt;td>~4-5x&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>48GB&lt;/td>
&lt;td>2 x 24GB&lt;/td>
&lt;td>~$662&lt;/td>
&lt;td>~$13.8&lt;/td>
&lt;td>~4-5x&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>64GB&lt;/td>
&lt;td>2 x 32GB&lt;/td>
&lt;td>~$875 (thin stock)&lt;/td>
&lt;td>~$13.7&lt;/td>
&lt;td>~5x&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>96GB&lt;/td>
&lt;td>2 x 48GB&lt;/td>
&lt;td>~$1,310&lt;/td>
&lt;td>~$13.7&lt;/td>
&lt;td>~7x&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The single most useful thing to internalize: &lt;strong>during this shortage, capacity is the expensive variable, and speed is nearly free by comparison.&lt;/strong> A DDR5-7200 kit costs only a little more than DDR5-6000 at the same capacity, but doubling capacity roughly doubles the bill. That inverts the pre-shortage advice, where enthusiasts happily paid up for faster kits. In 2026, buy the capacity you actually need and take the cheapest reliable speed that hits the sweet spot.&lt;/p>
&lt;!-- ========== VISUAL 2: ANNOTATED BEFORE / AFTER (distinct within-wave grammar) ========== -->
&lt;div class="visual-block">
&lt;div style="background:#140f0a;padding:26px 22px 20px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;">
&lt;div style="text-align:center;margin-bottom:4px;">
&lt;div style="font-size:18px;font-weight:700;letter-spacing:-0.3px;">What the shortage did to your RAM bill&lt;/div>
&lt;div style="font-size:12px;color:#b39a86;margin-top:4px;">Same 32GB DDR5-6000 kit · mid-2025 vs July 2026&lt;/div>
&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:center;gap:18px;margin:22px 0 6px;">
&lt;!-- BEFORE -->
&lt;div style="flex:1 1 130px;min-width:120px;max-width:190px;text-align:center;">
&lt;div style="font-size:12px;color:#7dd88f;font-weight:700;margin-bottom:6px;">$90&lt;/div>
&lt;div style="height:36px;background:linear-gradient(180deg,#4e9a63,#2f6d42);border-radius:5px 5px 0 0;">&lt;/div>
&lt;div style="font-size:11px;color:#9fb0a4;margin-top:8px;font-weight:600;">MID-2025&lt;/div>
&lt;div style="font-size:10px;color:#6f7d72;margin-top:2px;">pre-shortage floor&lt;/div>
&lt;/div>
&lt;!-- multiplier -->
&lt;div style="flex:0 0 auto;text-align:center;padding:0 2px 30px;">
&lt;div style="font-size:30px;font-weight:800;color:#ffb454;line-height:1;">4.4x&lt;/div>
&lt;div style="font-size:10px;color:#b39a86;margin-top:4px;letter-spacing:0.05em;">IN ~12 MONTHS&lt;/div>
&lt;/div>
&lt;!-- AFTER -->
&lt;div style="flex:1 1 130px;min-width:120px;max-width:190px;text-align:center;">
&lt;div style="font-size:12px;color:#ffb454;font-weight:700;margin-bottom:6px;">~$400&lt;/div>
&lt;div style="height:160px;background:linear-gradient(180deg,#e08a3c,#b5561f);border-radius:5px 5px 0 0;">&lt;/div>
&lt;div style="font-size:11px;color:#c9b4a0;margin-top:8px;font-weight:600;">JULY 2026&lt;/div>
&lt;div style="font-size:10px;color:#8a7869;margin-top:2px;">$400 cheapest in stock&lt;/div>
&lt;/div>
&lt;/div>
&lt;!-- trajectory strip -->
&lt;div style="margin-top:18px;padding-top:14px;border-top:1px solid rgba(255,255,255,0.07);">
&lt;div style="font-size:10px;color:#8a7869;margin-bottom:8px;letter-spacing:0.05em;">THE CLIMB, THEN THE PLATEAU&lt;/div>
&lt;div style="display:flex;justify-content:space-between;align-items:center;gap:6px;font-size:10.5px;text-align:center;">
&lt;div style="flex:1;min-width:0;">&lt;div style="color:#7dd88f;font-weight:700;">~$90&lt;/div>&lt;div style="color:#6f7d72;">mid-2025&lt;/div>&lt;/div>
&lt;div style="color:#5a4d40;">&amp;rsaquo;&lt;/div>
&lt;div style="flex:1;min-width:0;">&lt;div style="color:#cfae7a;font-weight:700;">~$184&lt;/div>&lt;div style="color:#6f7d72;">Oct 2025&lt;/div>&lt;/div>
&lt;div style="color:#5a4d40;">&amp;rsaquo;&lt;/div>
&lt;div style="flex:1;min-width:0;">&lt;div style="color:#e0995a;font-weight:700;">~$432&lt;/div>&lt;div style="color:#6f7d72;">early 2026 peak&lt;/div>&lt;/div>
&lt;div style="color:#5a4d40;">&amp;rsaquo;&lt;/div>
&lt;div style="flex:1;min-width:0;">&lt;div style="color:#ffb454;font-weight:700;">~$400&lt;/div>&lt;div style="color:#6f7d72;">now&lt;/div>&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:14px;font-size:11px;color:#b39a86;line-height:1.6;">The spike ran ~4.4x from mid-2025 through early 2026, then flattened - today's ~$400 to $470 sits right around the early-2026 peak, not on a downward slide. Do not read the plateau as a coming crash: AMD expects DDR5 to stay elevated until roughly 2028.&lt;/div>
&lt;div style="text-align:right;margin-top:8px;font-size:10px;color:#5a4d40;">techfuelhq.com · sources: Tom's Hardware, Newegg Insider, Club386, Unibetter (dated inline)&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="why-is-ddr5-so-expensive-right-now">Why is DDR5 so expensive right now?&lt;/h2>
&lt;p>If DDR5 feels like it costs several times what it did a year ago, that is exactly what happened. Memory prices began climbing in the second half of 2025, and the cause is the AI data-center buildout. Samsung, SK Hynix, and Micron - the three companies that make essentially all of the world&amp;rsquo;s DRAM - have shifted wafer capacity toward high-bandwidth memory (HBM) and high-density server DDR5, because that is where the margins are while hyperscalers buy everything they can produce.&lt;/p>
&lt;p>Consumer DDR5 competes for the same fabrication lines. When a production line can make a high-margin HBM stack for an AI accelerator or a desktop kit, the desktop kit loses priority. The squeeze falls hardest on the exact 16 GB and 32 GB modules in this guide. A 32GB DDR5-6000 kit that sold for around $80 to $100 in mid-2025 reached roughly $432 by early 2026 - an increase of more than 400% in under a year - and has drifted only slightly since.&lt;/p>
&lt;p>What this means for buyers:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Don&amp;rsquo;t wait for a crash.&lt;/strong> AMD has said publicly it expects DDR5 prices to stay high until around 2028 as new fabs ramp. There is no obvious catalyst for a sharp consumer-DDR5 drop in the near term. Buy when you need it, not on a timing bet.&lt;/li>
&lt;li>&lt;strong>Capacity costs more than speed - the opposite of the old advice.&lt;/strong> The per-GB surcharge is roughly flat across tiers, so a 64GB kit really does cost about twice a 32GB kit. If 32GB covers your workload, you dodge the steepest part of the curve.&lt;/li>
&lt;li>&lt;strong>Used DDR5 is finally worth a look&lt;/strong> in a way it wasn&amp;rsquo;t in 2022 - the standard is mature, and a two-year-old DDR5-6000 kit performs identically to a new one, often at a meaningful discount to shortage-inflated retail.&lt;/li>
&lt;/ul>
&lt;h2 id="when-did-ddr5-come-out">When did DDR5 come out?&lt;/h2>
&lt;p>DDR5 launched in &lt;strong>late 2021 (November)&lt;/strong>, alongside Intel&amp;rsquo;s 12th-generation Alder Lake CPUs. It was expensive and scarce at launch - a kit cost roughly triple its DDR4 equivalent - and matured over 2022 to 2024 into the cheap, default standard. Ironically, 2026&amp;rsquo;s AI-driven shortage has pushed prices back toward that early-adopter premium, this time for supply reasons rather than newness. By 2026, DDR5 is the only option on every current CPU platform (AMD AM5, Intel LGA 1851).&lt;/p>
&lt;h2 id="ddr4-vs-ddr5-in-2026-do-you-even-have-a-choice">DDR4 vs DDR5 in 2026: do you even have a choice?&lt;/h2>
&lt;p>For anyone building a new PC in 2026, this mostly answers itself: current platforms are DDR5-only. AMD&amp;rsquo;s AM5 socket (Ryzen 7000 and 9000) and Intel&amp;rsquo;s LGA 1851 (Core Ultra) accept DDR5 exclusively. DDR4 now lives on only on older AM4 and LGA 1700 boards - the territory of budget builds and second-hand bargains.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">&lt;/th>
&lt;th scope="col">DDR4&lt;/th>
&lt;th scope="col">DDR5&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Launched&lt;/td>
&lt;td>2014&lt;/td>
&lt;td>late 2021&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>JEDEC base speed&lt;/td>
&lt;td>2133-3200 MT/s&lt;/td>
&lt;td>4800-5600 MT/s&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Common enthusiast speed&lt;/td>
&lt;td>3200-3600 MT/s&lt;/td>
&lt;td>6000-7200 MT/s&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Voltage&lt;/td>
&lt;td>1.2 V (1.35 V XMP)&lt;/td>
&lt;td>1.1 V (1.35 V+ XMP/EXPO)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Channel layout per DIMM&lt;/td>
&lt;td>1 x 64-bit&lt;/td>
&lt;td>2 x 32-bit subchannels&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>On-die ECC&lt;/td>
&lt;td>No&lt;/td>
&lt;td>Yes (basic)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Power management&lt;/td>
&lt;td>On motherboard&lt;/td>
&lt;td>On-module PMIC&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2026 platforms&lt;/td>
&lt;td>AM4, LGA 1700 (legacy)&lt;/td>
&lt;td>AM5, LGA 1851 (current)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>&lt;strong>Are they interchangeable? Not even slightly.&lt;/strong> DDR5 puts the keying notch in a different position than DDR4, so a DDR5 stick physically will not seat in a DDR4 slot, and vice versa. The voltage, the on-module power management, and the dual-subchannel architecture are all different. There is no adapter, and no current board takes both types in the same slots.&lt;/p>
&lt;p>&lt;strong>Should you upgrade a working DDR4 system to DDR5?&lt;/strong> Only as part of a full platform move - new CPU and motherboard, not RAM alone. On a like-for-like CPU, going from good DDR4-3600 to DDR5-6000 is a single-digit gaming uplift. In a shortage that makes a 32GB DDR5 kit cost $400+, that is an especially bad trade. If you&amp;rsquo;re content on a 5800X3D or 12700K with solid DDR4, there is no RAM-only upgrade worth the money right now - put it toward a &lt;a href="https://techfuelhq.com/gpu-reviews/">GPU&lt;/a> instead.&lt;/p>
&lt;h2 id="the-speed-vs-performance-reality">The speed vs performance reality&lt;/h2>
&lt;p>Every RAM manufacturer wants you to believe higher MT/s numbers translate directly to better performance. The benchmark data tells a much less exciting story - which matters more than ever now that the price gap between speed tiers is small and the capacity gap is huge.&lt;/p>
&lt;h3 id="gaming-0-4-between-6000-and-7200">Gaming: 0-4% between 6000 and 7200&lt;/h3>
&lt;p>PC Gamer tested DDR5-7200 CL34 against DDR5-6000 CL30 across multiple titles. The result in most games: &lt;strong>0-4% difference&lt;/strong> in average FPS - within run-to-run variance in some cases. The one outlier was Baldur&amp;rsquo;s Gate 3, historically memory-sensitive, at roughly +4% averages and +8% in 1% lows at 7200. That single game doesn&amp;rsquo;t justify a premium on RAM for a build that plays twenty other titles.&lt;/p>
&lt;p>The takeaway for gaming: anything between DDR5-6000 CL30 and DDR5-6400 CL32 gets you effectively the same frame rates. Faster kits exist. They cost a bit more. You won&amp;rsquo;t feel the difference.&lt;/p>
&lt;h3 id="productivity-4-7-at-most-one-12-outlier">Productivity: 4-7% at most, one 12% outlier&lt;/h3>
&lt;p>Puget Systems tested the fastest DDR5 kits against baseline JEDEC speeds (DDR5-4800) in professional workloads. The improvement topped out at &lt;strong>4% on Intel and 7% on AMD&lt;/strong> versus stock JEDEC timings. One workload - Unreal Engine shader compilation - showed a &lt;strong>12% improvement&lt;/strong> at the highest tested speeds. Everything else clustered in the 2-5% range.&lt;/p>
&lt;p>A critical finding from that same testing: &lt;strong>AMD platforms couldn&amp;rsquo;t complete benchmark runs at DDR5-6400&lt;/strong> in their configuration. The AMD memory controller is more sensitive to frequency than Intel&amp;rsquo;s, which is why AMD&amp;rsquo;s own recommendation lands at 6000 - not because 6000 is magic, but because going higher introduces instability risks that aren&amp;rsquo;t worth the 2-3% you might gain if it works.&lt;/p>
&lt;img src="https://techfuelhq.com/images/articles/benchmark-ddr5-speed-scaling.svg" alt="DDR5 speed scaling benchmark chart showing diminishing returns above DDR5-6000 across gaming and productivity workloads" width="1100" height="520" loading="lazy" style="display:block;margin:1.5rem auto;max-width:100%;width:100%;" />
&lt;h2 id="the-6000-6400-sweet-spot---what-to-actually-buy">The 6000-6400 sweet spot - what to actually buy&lt;/h2>
&lt;p>The optimal DDR5 purchase in 2026 sits between DDR5-6000 CL30 and DDR5-6400 CL32. This range maximizes the performance-per-dollar curve, works reliably on both Intel and AMD platforms, and avoids the instability risks of pushing higher frequencies. Below are current in-stock 32GB kits at July 2026 street pricing - the value logic between them holds even as the absolute floor moves.&lt;/p>
&lt;!-- ========== VISUAL 3: CURRENT KIT PICKS ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0b0f1e;padding:26px 16px 20px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;">
&lt;div style="text-align:center;margin-bottom:18px;">
&lt;div style="font-size:18px;font-weight:700;letter-spacing:-0.3px;">32GB kits worth buying - live July 2026 pricing&lt;/div>
&lt;div style="font-size:12px;color:#8f9bb3;margin-top:4px;">2 x 16GB DDR5-6000 · dual-platform unless noted · prices checked July 24, 2026&lt;/div>
&lt;/div>
&lt;div style="overflow-x:auto;">
&lt;table style="width:100%;max-width:780px;margin:0 auto;border-collapse:collapse;font-size:12.5px;">
&lt;thead>&lt;tr>
&lt;th style="text-align:left;padding:10px;border-bottom:1.5px solid rgba(200,255,0,0.3);color:#7a869c;font-weight:500;font-size:11px;min-width:170px;">Kit&lt;/th>
&lt;th style="text-align:center;padding:10px;border-bottom:1.5px solid rgba(200,255,0,0.3);color:#7a869c;font-weight:500;font-size:11px;">Speed / Timing&lt;/th>
&lt;th style="text-align:center;padding:10px;border-bottom:1.5px solid rgba(200,255,0,0.3);color:#7a869c;font-weight:500;font-size:11px;">Price&lt;/th>
&lt;th style="text-align:center;padding:10px;border-bottom:1.5px solid rgba(200,255,0,0.3);color:#7a869c;font-weight:500;font-size:11px;">Why&lt;/th>
&lt;/tr>&lt;/thead>
&lt;tbody>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);background:rgba(200,255,0,0.05);">
&lt;td style="padding:9px 10px;">&lt;span style="color:#c8ff00;font-weight:700;">Lexar THOR OC&lt;/span>&lt;br>&lt;span style="font-size:10px;color:#93a05a;">CHEAPEST NAME-BRAND 6000&lt;/span>&lt;/td>
&lt;td style="padding:9px;text-align:center;color:#e0e0f0;">6000 CL32&lt;/td>
&lt;td style="padding:9px;text-align:center;color:#c8ff00;font-weight:700;">~$449&lt;/td>
&lt;td style="padding:9px;text-align:center;color:#9aa6bc;font-size:11px;">Cheapest name-brand 6000; 4.6 stars, 221 reviews&lt;/td>
&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">
&lt;td style="padding:9px 10px;color:#e0e0f0;font-weight:600;">Patriot Viper Venom&lt;/td>
&lt;td style="padding:9px;text-align:center;color:#e0e0f0;">6000 CL30&lt;/td>
&lt;td style="padding:9px;text-align:center;color:#e0e0f0;">OOS&lt;/td>
&lt;td style="padding:9px;text-align:center;color:#9aa6bc;font-size:11px;">True CL30 timings; stock comes and goes&lt;/td>
&lt;/tr>
&lt;tr style="border-bottom:1px solid rgba(255,255,255,0.04);">
&lt;td style="padding:9px 10px;color:#e0e0f0;font-weight:600;">G.Skill Flare X5&lt;/td>
&lt;td style="padding:9px;text-align:center;color:#e0e0f0;">6000 CL36&lt;/td>
&lt;td style="padding:9px;text-align:center;color:#e0e0f0;">~$470&lt;/td>
&lt;td style="padding:9px;text-align:center;color:#9aa6bc;font-size:11px;">AM5 QVL default; EXPO tuned for Ryzen&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="padding:9px 10px;color:#e0e0f0;font-weight:600;">Corsair Vengeance RGB&lt;/td>
&lt;td style="padding:9px;text-align:center;color:#e0e0f0;">6000 CL36&lt;/td>
&lt;td style="padding:9px;text-align:center;color:#e0e0f0;">~$470&lt;/td>
&lt;td style="padding:9px;text-align:center;color:#9aa6bc;font-size:11px;">Most-bought kit; 4.8 stars, 4,000 reviews&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;div style="margin-top:14px;font-size:11px;color:#8f9bb3;line-height:1.6;text-align:center;">64GB (2 x 32GB) DDR5-6000 starts near $875 and is frequently out of stock; 96GB (2 x 48GB) runs about $1,310. For those tiers, verify your motherboard QVL and check a live search - the specific in-stock kit changes weekly.&lt;/div>
&lt;div style="text-align:right;margin-top:8px;font-size:10px;color:#44506a;">techfuelhq.com · live Amazon, July 24 2026&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>&lt;strong>Live retailer links for the picks above:&lt;/strong> &lt;a href="https://www.amazon.com/dp/B0CGR4NNPC?tag=techfuelhq-20" rel="nofollow sponsored">Lexar THOR 6000 CL32&lt;/a> · &lt;a href="https://www.amazon.com/dp/B0D4NLSP87?tag=techfuelhq-20" rel="nofollow sponsored">Patriot Viper Venom 6000 CL30&lt;/a> · &lt;a href="https://www.amazon.com/dp/B0BFGB2D2Z?tag=techfuelhq-20" rel="nofollow sponsored">G.Skill Flare X5 6000 CL36&lt;/a> · &lt;a href="https://www.amazon.com/dp/B0CDY46PFK?tag=techfuelhq-20" rel="nofollow sponsored">Corsair Vengeance RGB 6000 CL36&lt;/a>. Prices update at the retailer; the number you see there is the truth, not any figure printed here.&lt;/p>
&lt;h2 id="the-specific-kit-recommendations">The specific kit recommendations&lt;/h2>
&lt;h3 id="32gb-buy-the-cheapest-reliable-ddr5-6000-not-the-fastest">32GB: buy the cheapest reliable DDR5-6000, not the fastest&lt;/h3>
&lt;p>In a normal market you might chase a tighter-binned kit. In the 2026 shortage, the smart move is the opposite: get any reputable 32GB DDR5-6000 kit at the lowest in-stock price and put the difference toward your &lt;a href="https://techfuelhq.com/gpu-reviews/">GPU&lt;/a> or storage. The &lt;strong>Lexar THOR at ~$449&lt;/strong> is currently the cheapest proven name-brand 6000 kit; the &lt;strong>Patriot Viper Venom CL30&lt;/strong> gets you the same tighter primary timings when it is back in stock (it is currently sold out). The &lt;strong>G.Skill Flare X5&lt;/strong> and &lt;strong>Corsair Vengeance&lt;/strong> at ~$470 are the safe, proven picks on AMD QVLs and carry thousands of reviews - pay the small premium only if the cheaper kits are out of stock or off-QVL for your board.&lt;/p>
&lt;p>What you should &lt;em>not&lt;/em> do is pay up for a DDR5-7200 showcase kit. In today&amp;rsquo;s market that money buys 0-1% more gaming FPS and a nicer heatspreader. It is far better spent elsewhere.&lt;/p>
&lt;h3 id="64gb-only-if-a-real-workload-needs-it">64GB: only if a real workload needs it&lt;/h3>
&lt;p>64GB (2 x 32GB) DDR5-6000 kits start near &lt;strong>$875&lt;/strong> and stock is genuinely thin - many DDR5-6000 desktop SKUs show as out of stock, and you may end up on a slower 5600 kit to get 64GB in stock. For a workstation running VMs, compiling code, or editing video, 64GB is worth it. For a pure gaming build, it is not - 32GB is the baseline, and the shortage makes over-buying capacity the single most expensive mistake on the parts list. If you&amp;rsquo;re on Ryzen 7000/9000, lean toward a 6000-speed 64GB kit for stability; 4-DIMM configurations are worse (see the gotcha below).&lt;/p>
&lt;h3 id="96gb-and-up-platform-dependent-pay-the-premium-only-with-a-reason">96GB and up: platform-dependent, pay the premium only with a reason&lt;/h3>
&lt;p>96GB (2 x 48GB) DDR5-6000 runs about &lt;strong>$1,310&lt;/strong> now. The platform difference matters more than the kit difference at this capacity - Intel&amp;rsquo;s memory controller handles 2 x 48GB DIMMs more gracefully than AMD&amp;rsquo;s at speed. If you&amp;rsquo;re doing large-scale content creation, local AI, or heavy virtualization, it exists and it works. If you&amp;rsquo;re not sure you need it, you don&amp;rsquo;t - and at shortage pricing, 96GB you don&amp;rsquo;t use is the most expensive empty capacity you can buy.&lt;/p>
&lt;h2 id="the-gotchas-nobody-warns-you-about">The gotchas nobody warns you about&lt;/h2>
&lt;h3 id="xmp-and-expo-are-overclocks">XMP and EXPO are overclocks&lt;/h3>
&lt;p>XMP 3.0 (Intel) and EXPO (AMD) profiles are &lt;strong>not guaranteed to work&lt;/strong>. They are overclock profiles stored in the DIMM&amp;rsquo;s SPD. Your motherboard, your specific CPU&amp;rsquo;s memory controller, and your luck in the silicon lottery all determine whether a given profile runs stable. If a DDR5-6400 kit doesn&amp;rsquo;t post at rated speed on your board, that is not a defective kit - it is the reality of overclocking. Always check your motherboard&amp;rsquo;s QVL (Qualified Vendor List) before buying, especially for 2 x 24GB or 2 x 48GB kits, which are more finicky than 16GB and 32GB modules.&lt;/p>
&lt;h3 id="four-dimms-kill-your-rated-speed">Four DIMMs kill your rated speed&lt;/h3>
&lt;p>If your motherboard has four DIMM slots and you populate all four, expect your maximum stable speed to drop significantly - often 400-800 MT/s below what the same kit runs on two slots. Memory controllers are stressed harder with four DIMMs. If you need 64GB, buy a 2 x 32GB kit, not 4 x 16GB. Same capacity, better performance, and you leave two slots open.&lt;/p>
&lt;h3 id="the-price-spread-is-wild---and-worse-during-a-shortage">The price spread is wild - and worse during a shortage&lt;/h3>
&lt;p>The same kit can show a $200-plus spread across sellers, and shortages make third-party marketplace gouging far worse. Always verify you&amp;rsquo;re buying from a first-party authorized seller. Check PCPartPicker or the manufacturer&amp;rsquo;s product page for legitimate retail links. A kit that costs $450 from an authorized seller can list at $650-plus from a marketplace vendor - and during a shortage, panicked buyers pay it. Don&amp;rsquo;t.&lt;/p>
&lt;!-- ========== VISUAL 4: INTERACTIVE KIT FINDER ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0b0f1e;padding:28px 24px 20px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;">
&lt;div style="text-align:center;margin-bottom:20px;">
&lt;div style="font-size:18px;font-weight:700;letter-spacing:-0.3px;">Find your DDR5 kit&lt;/div>
&lt;div style="font-size:12px;color:#8f9bb3;margin-top:4px;">Select platform, capacity, and budget - get a live-priced starting point. Prices reflect the July 2026 shortage market; always confirm on the retailer link.&lt;/div>
&lt;/div>
&lt;div style="max-width:520px;margin:0 auto;">
&lt;!-- PLATFORM -->
&lt;div style="margin-bottom:14px;">
&lt;div style="font-size:11px;color:#7a869c;font-weight:600;letter-spacing:0.5px;margin-bottom:6px;">PLATFORM&lt;/div>
&lt;div style="display:grid;grid-template-columns:1fr 1fr;gap:8px;">
&lt;button onclick="setPlatform('intel')" id="p-intel" style="background:rgba(92,156,224,0.12);border:1.5px solid #5c9ce0;border-radius:8px;padding:12px;cursor:pointer;text-align:left;font-family:inherit;color:#e0e0f0;">
&lt;div style="font-size:13px;font-weight:600;color:#5c9ce0;">Intel&lt;/div>
&lt;div style="font-size:10px;color:#7a869c;margin-top:2px;">LGA 1700 / 1851 · XMP 3.0&lt;/div>
&lt;/button>
&lt;button onclick="setPlatform('amd')" id="p-amd" style="background:rgba(255,255,255,0.03);border:1.5px solid rgba(255,255,255,0.1);border-radius:8px;padding:12px;cursor:pointer;text-align:left;font-family:inherit;color:#e0e0f0;">
&lt;div style="font-size:13px;font-weight:600;color:#8a8a9e;">AMD&lt;/div>
&lt;div style="font-size:10px;color:#7a869c;margin-top:2px;">AM5 · EXPO · 6000 sweet spot&lt;/div>
&lt;/button>
&lt;/div>
&lt;/div>
&lt;!-- CAPACITY -->
&lt;div style="margin-bottom:14px;">
&lt;div style="font-size:11px;color:#7a869c;font-weight:600;letter-spacing:0.5px;margin-bottom:6px;">CAPACITY&lt;/div>
&lt;div style="display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;">
&lt;button onclick="setCap(32)" id="c-32" style="background:rgba(200,255,0,0.12);border:1.5px solid #c8ff00;border-radius:8px;padding:10px;cursor:pointer;text-align:center;font-family:inherit;color:#e0e0f0;">
&lt;div style="font-size:14px;font-weight:600;color:#c8ff00;">32GB&lt;/div>
&lt;div style="font-size:10px;color:#7a869c;">Gaming&lt;/div>
&lt;/button>
&lt;button onclick="setCap(64)" id="c-64" style="background:rgba(255,255,255,0.03);border:1.5px solid rgba(255,255,255,0.1);border-radius:8px;padding:10px;cursor:pointer;text-align:center;font-family:inherit;color:#e0e0f0;">
&lt;div style="font-size:14px;font-weight:600;color:#8a8a9e;">64GB&lt;/div>
&lt;div style="font-size:10px;color:#7a869c;">Workstation&lt;/div>
&lt;/button>
&lt;button onclick="setCap(96)" id="c-96" style="background:rgba(255,255,255,0.03);border:1.5px solid rgba(255,255,255,0.1);border-radius:8px;padding:10px;cursor:pointer;text-align:center;font-family:inherit;color:#e0e0f0;">
&lt;div style="font-size:14px;font-weight:600;color:#8a8a9e;">96GB&lt;/div>
&lt;div style="font-size:10px;color:#7a869c;">Creator / VMs&lt;/div>
&lt;/button>
&lt;/div>
&lt;/div>
&lt;!-- BUDGET -->
&lt;div style="margin-bottom:18px;">
&lt;div style="display:flex;justify-content:space-between;align-items:center;">
&lt;div style="font-size:11px;color:#7a869c;font-weight:600;letter-spacing:0.5px;">MAX BUDGET&lt;/div>
&lt;div style="font-size:16px;font-weight:600;color:#ffb454;" id="budgetLabel">$480&lt;/div>
&lt;/div>
&lt;input type="range" min="350" max="1400" value="480" step="10" id="budgetSlider" oninput="updateFinder()" aria-label="Maximum budget in US dollars" style="width:100%;margin-top:8px;accent-color:#ffb454;cursor:pointer;">
&lt;/div>
&lt;!-- RESULTS -->
&lt;div style="background:rgba(255,255,255,0.04);border:1px solid rgba(255,255,255,0.08);border-radius:10px;padding:18px 20px;">
&lt;div style="font-size:12px;color:#7a869c;margin-bottom:10px;">RECOMMENDED KITS&lt;/div>
&lt;div id="finderResults" style="font-size:13px;line-height:1.8;">&lt;/div>
&lt;div id="finderNotes" style="font-size:11px;color:#ffb454;line-height:1.6;border-top:1px solid rgba(255,255,255,0.06);padding-top:10px;margin-top:12px;">&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="who-should-buy-what">Who should buy what&lt;/h2>
&lt;h3 id="gaming-builds-on-any-budget">Gaming builds on any budget:&lt;/h3>
&lt;ul>
&lt;li>**Lexar THOR DDR5-6000 CL32 (~$449)** - the cheapest reliable name-brand 6000 kit in stock; the **Patriot Viper Venom CL30** is the CL30 alternative when it is back in stock. Both work on Intel and AMD.&lt;/li>
&lt;li>Prefer a proven QVL name: **G.Skill Flare X5 (~$470)** or **Corsair Vengeance (~$470)** - a small premium for a kit on nearly every AM5 board's list.&lt;/li>
&lt;/ul>
&lt;h3 id="workstation--heavy-multitasking-64gb">Workstation / heavy multitasking (64GB):&lt;/h3>
&lt;ul>
&lt;li>A 6000-speed 64GB (2 x 32GB) kit, starting near **$875** - and only if a real VM, compile, or editing workload needs it. Verify stock and QVL first.&lt;/li>
&lt;/ul>
&lt;h3 id="content-creation--vms--homelab-workstations-96gb">Content creation / VMs / &lt;a href="https://techfuelhq.com/homelab/">homelab workstations&lt;/a> (96GB):&lt;/h3>
&lt;ul>
&lt;li>96GB (2 x 48GB) DDR5-6000 near **$1,310** - Intel handles 2 x 48GB at speed more gracefully than AMD. Buy it only with a workload that pins the RAM.&lt;/li>
&lt;/ul>
&lt;h2 id="build-the-system-around-the-ram">Build the system around the RAM&lt;/h2>
&lt;p>Once you&amp;rsquo;ve picked the kit, the rest of the build matters more than the RAM speed. The &lt;a href="https://techfuelhq.com/tools/pc-builder/">TechFuelHQ PC Builder&lt;/a> checks socket compatibility (AM5 vs LGA1700/1851), motherboard QVL fit, and total system wattage so the DDR5 kit you picked actually runs at its rated speed on the board you chose. The CC BY 4.0 parts dataset at &lt;a href="https://techfuelhq.com/data/pc-builder-parts.json">/data/pc-builder-parts.json&lt;/a> is open for inspection.&lt;/p>
&lt;p>For the cluster-of-cheap-nodes homelab path, the &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">mini-PC homelab guide&lt;/a> covers SO-DIMM kits and which mini PCs support 64 GB officially vs unofficially - increasingly relevant when a single desktop 64GB kit costs $800.&lt;/p>
&lt;h2 id="the-verdict">The verdict&lt;/h2>
&lt;p>DDR5-6000 to 6400 is still the smart-money speed in 2026 - but the shortage rewrote the buying rule. The benchmark data is clear: the jump from JEDEC 4800 to 6000 is meaningful, and the jump from 6000 to 7200 is a rounding error. What changed is the price structure. Speed is now nearly free; capacity is the expense. So buy the &lt;strong>cheapest reliable 32GB DDR5-6000 kit&lt;/strong> (the Lexar THOR at ~$450 today, or the Patriot Viper Venom CL30 when it is back in stock), take exactly the capacity your workload needs and no more, and put every saved dollar toward the components that actually move the needle - your GPU and your storage.&lt;/p>
&lt;p>Check your motherboard&amp;rsquo;s QVL. Buy from authorized sellers. Use two DIMMs, not four. Enable XMP or EXPO in BIOS - the rated speed is not active until you do. And don&amp;rsquo;t wait for a crash that the people who make the chips say isn&amp;rsquo;t coming until 2028.&lt;/p>
&lt;footer style="margin-top:40px;padding-top:24px;border-top:1px solid rgba(255,255,255,0.06);">
&lt;em>Current pricing verified July 24, 2026 from live Amazon listings. Performance scaling data compiled from PC Gamer and Puget Systems testing. Shortage context from Newegg Insider, Club386, TechTimes, and AMD statements (cited inline). For build recommendations, see &lt;a href="https://techfuelhq.com/pc-builds/">PC Builds&lt;/a>. GPU pairing advice at &lt;a href="https://techfuelhq.com/gpu-reviews/">GPU Reviews&lt;/a>. For the CPU that benefits most from DDR5-6000 tuning on AM5, the &lt;a href="https://techfuelhq.com/reviews/ryzen-7-7800x3d-review-2026/">Ryzen 7 7800X3D review&lt;/a> covers the 1:1 fabric ratio and EXPO configuration from first-hand use.&lt;/em>
&lt;/footer>
&lt;!-- Interactive kit finder (self-contained, no external dependencies) -->
&lt;script>
// ===== KIT FINDER (current July 2026 street pricing) =====
var kits=[
{name:'Lexar THOR OC DDR5-6000 CL32',cap:32,price:449,speed:6000,cl:32,plat:'both',tag:'Cheapest name-brand 6000'},
{name:'G.Skill Flare X5 DDR5-6000 CL36',cap:32,price:470,speed:6000,cl:36,plat:'both',tag:'AM5 QVL default'},
{name:'Corsair Vengeance RGB DDR5-6000 CL36',cap:32,price:470,speed:6000,cl:36,plat:'both',tag:'Most-bought kit'},
{name:'64GB (2x32GB) DDR5-6000 kit',cap:64,price:875,speed:6000,cl:36,plat:'both',tag:'Thin stock - verify QVL'},
{name:'96GB (2x48GB) DDR5-6000 kit',cap:96,price:1310,speed:6000,cl:32,plat:'both',tag:'Creator / VM tier'}
];
var finder={plat:'intel',cap:32,budget:480};
function setPlatform(p){
finder.plat=p;
document.getElementById('p-intel').style.background=p==='intel'?'rgba(92,156,224,0.12)':'rgba(255,255,255,0.03)';
document.getElementById('p-intel').style.borderColor=p==='intel'?'#5c9ce0':'rgba(255,255,255,0.1)';
document.getElementById('p-intel').querySelector('div').style.color=p==='intel'?'#5c9ce0':'#8a8a9e';
document.getElementById('p-amd').style.background=p==='amd'?'rgba(237,28,36,0.12)':'rgba(255,255,255,0.03)';
document.getElementById('p-amd').style.borderColor=p==='amd'?'#ed1c24':'rgba(255,255,255,0.1)';
document.getElementById('p-amd').querySelector('div').style.color=p==='amd'?'#ed1c24':'#8a8a9e';
updateFinder();
}
function setCap(c){
finder.cap=c;
[32,64,96].forEach(function(v){
var b=document.getElementById('c-'+v);
var active=v===c;
b.style.background=active?'rgba(200,255,0,0.12)':'rgba(255,255,255,0.03)';
b.style.borderColor=active?'#c8ff00':'rgba(255,255,255,0.1)';
b.querySelector('div').style.color=active?'#c8ff00':'#8a8a9e';
});
updateFinder();
}
function updateFinder(){
finder.budget=parseInt(document.getElementById('budgetSlider').value);
document.getElementById('budgetLabel').textContent='$'+finder.budget;
var matches=kits.filter(function(k){
if(k.cap!==finder.cap) return false;
if(k.price>finder.budget) return false;
if(k.plat!=='both' &amp;&amp; k.plat!==finder.plat) return false;
return true;
});
matches.sort(function(a,b){return a.price-b.price;});
var resultsEl=document.getElementById('finderResults');
var notesEl=document.getElementById('finderNotes');
if(matches.length===0){
resultsEl.innerHTML='&lt;span style="color:#ed6a5a;">No in-stock kit matches at that budget. During the shortage, 32GB starts near $400, 64GB near $875, and 96GB near $1,310 - try raising the budget.&lt;/span>';
notesEl.innerHTML='';
return;
}
var html='';
matches.forEach(function(k,i){
var accent=i===0?'#c8ff00':'#b0b0c8';
html+='&lt;div style="margin-bottom:8px;padding:8px 12px;background:rgba(255,255,255,'+(i===0?'0.05':'0.02')+');border-radius:6px;border-left:3px solid '+accent+';">';
html+='&lt;div style="font-weight:600;color:'+accent+';">'+k.name+'&lt;/div>';
html+='&lt;div style="font-size:11px;color:#8a8a9e;">~$'+k.price+' · '+k.speed+' MT/s CL'+k.cl+'&lt;/div>';
html+='&lt;div style="font-size:10px;color:#9aa6bc;margin-top:2px;">'+k.tag+'&lt;/div>';
html+='&lt;/div>';
});
resultsEl.innerHTML=html;
var notes=[];
if(finder.plat==='amd' &amp;&amp; matches.some(function(k){return k.speed>6000;})){
notes.push('AMD platforms may be unstable above DDR5-6000. Check your motherboard QVL.');
}
if(finder.cap===96){
notes.push('2x48GB kits are more sensitive to motherboard compatibility. QVL verification is strongly recommended.');
}
notes.push('Shortage pricing moves weekly. Always buy from authorized retailers - marketplace listings can be 50% higher.');
notesEl.innerHTML=notes.join('&lt;br>');
}
updateFinder();
&lt;/script>
&lt;h2 id="sources-and-methodology">Sources and methodology&lt;/h2>
&lt;p>This guide synthesizes vendor specifications, manufacturer QVL lists, live retailer pricing, and the published third-party benchmarks cited inline. Pricing verified July 24, 2026.&lt;/p>
&lt;p>&lt;strong>Primary sources cited:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.tomshardware.com/pc-components/ram/ram-price-index-2026-lowest-price-on-ddr5-and-ddr4-memory-of-all-capacities" rel="noopener">Tom&amp;rsquo;s Hardware RAM price tracker&lt;/a> - daily lowest in-stock DDR5/DDR4 kit prices by capacity&lt;/li>
&lt;li>&lt;a href="https://www.newegg.com/insider/ddr5-memory-in-2026-whats-happening-to-prices-supply-and-speed-tiers/" rel="noopener">Newegg Insider: DDR5 Memory in 2026&lt;/a> - shortage trajectory and speed-tier context&lt;/li>
&lt;li>&lt;a href="https://www.club386.com/amd-ddr5-ram-prices-two-years-normal/" rel="noopener">Club386&lt;/a> - AMD&amp;rsquo;s statement that DDR5 pricing may need two years to normalize&lt;/li>
&lt;li>Amazon and &lt;a href="https://pcpartpicker.com/products/memory/" rel="noopener">PCPartPicker&lt;/a> - live retailer pricing snapshots dated July 24, 2026&lt;/li>
&lt;li>&lt;a href="https://www.amd.com/en/products/processors/desktops/ryzen.html" rel="noopener">AMD Ryzen 7000/9000 QVL&lt;/a> - official memory QVL lists&lt;/li>
&lt;li>PC Gamer and Puget Systems - third-party gaming and productivity speed-scaling benchmarks&lt;/li>
&lt;li>&lt;a href="https://www.anandtech.com/tag/ddr5" rel="noopener">AnandTech DDR5 deep-dives&lt;/a> - memory subsystem analysis&lt;/li>
&lt;/ul>
&lt;p>If you find a pricing or spec error, email &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a> with the article URL and the section in question.&lt;/p></description></item><item><title>Self-Hosting Essentials: What to Self-Host First and Why</title><link>https://techfuelhq.com/articles/self-hosting-essentials/</link><pubDate>Wed, 01 Apr 2026 00:00:00 -0500</pubDate><guid>https://techfuelhq.com/articles/self-hosting-essentials/</guid><description>&lt;img src="https://techfuelhq.com/images/articles/hero-self-hosting-essentials.svg" alt="Self-hosting priority order for six services: Pi-hole, Uptime Kuma, Jellyfin, Nextcloud, Immich, and Home Assistant, ranked by deployment order" width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;width:100%;" />
&lt;section>
&lt;p>Every self-hosting thread on Reddit reads the same way. Someone asks what they should run first, and the replies are a wall of fifty services — Nextcloud, Immich, Vaultwarden, Paperless-ngx, &lt;a href="https://techfuelhq.com/homelab/forgejo-vs-gitea-2026/">Gitea&lt;/a>, Authentik, a full monitoring stack — as if a person who just learned what Docker is should immediately deploy a production infrastructure platform.&lt;/p>
&lt;p>That's bad advice. Most of those services are genuinely useful, but the order matters. Self-host the things that improve your daily life immediately, not the things that sound impressive in a screenshot. Start with what's trivial to run, what you'll actually notice working, and what teaches you the skills to handle the harder stuff later.&lt;/p>
&lt;p>Here are six services in the order you should deploy them, with honest hardware requirements for each. No fluff, no fifty-service listicle, no services you'll set up once and forget about.&lt;/p>
&lt;/section>
&lt;img src="https://techfuelhq.com/images/articles/priority-pyramid-self-hosting.svg" alt="Self-hosting priority pyramid showing six services ranked by deployment order: Pi-hole, Uptime Kuma, Jellyfin, Nextcloud, Immich, and Home Assistant" width="750" height="500" loading="lazy" style="display:block;margin:1.5rem auto;max-width:100%;width:100%;" />
&lt;!-- SERVICE 1: PI-HOLE -->
&lt;section>
&lt;h2>1. Pi-hole — Deploy This First, Period&lt;/h2>
&lt;p>&lt;strong>What it does:&lt;/strong> DNS-level ad and tracker blocking for your entire network. Every device connected to your home network — phones, laptops, smart TVs, IoT junk — gets ad blocking without installing anything on the device itself.&lt;/p>
&lt;p>&lt;strong>Why it's first:&lt;/strong> You notice it working within five minutes. Pages load faster. YouTube pre-roll ads vanish on some devices. Telemetry from your smart TV stops phoning home. The daily quality-of-life improvement is immediate and tangible, which matters when you're investing time learning &lt;a href="https://techfuelhq.com/tutorials/">Docker and self-hosting patterns&lt;/a>. Early wins keep you motivated.&lt;/p>
&lt;p>&lt;strong>Requirements:&lt;/strong> 512MB RAM minimum, 2GB storage (4GB recommended). Docker Compose deploy is a single YAML file and takes about three minutes. Point your router's DHCP DNS to the Pi-hole container's IP address, and every device on your network is covered.&lt;/p>
&lt;p>Pi-hole runs on literally anything. A Raspberry Pi. An LXC container in &lt;a href="https://techfuelhq.com/articles/proxmox-mini-pc-setup/">Proxmox&lt;/a>. A Docker container on your &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">mini PC homelab&lt;/a>. If your machine can run Docker, it can run Pi-hole. Picking the host OS itself is a separate decision — the &lt;a href="https://techfuelhq.com/homelab/proxmox-truenas-unraid-storage-backend-2026/">Proxmox vs TrueNAS vs Unraid breakdown&lt;/a> covers that.&lt;/p>
&lt;/section>
&lt;!-- SERVICE 2: UPTIME KUMA -->
&lt;section>
&lt;h2>2. Uptime Kuma — Know When Things Break&lt;/h2>
&lt;p>&lt;strong>What it does:&lt;/strong> Monitors your services and alerts you when something goes down. HTTP checks, TCP port checks, DNS resolution, ping — with a clean dashboard and notification integrations for Telegram, Discord, email, and more.&lt;/p>
&lt;p>&lt;strong>Why it's second:&lt;/strong> Once you're running Pi-hole, you need to know if it stops working. And as you add more services, Uptime Kuma becomes the single pane of glass that tells you the state of your homelab — and for the hardware side (CPU, RAM, disk, temperature), the &lt;a href="https://techfuelhq.com/homelab/beszel-vs-netdata-vs-glances-2026/">lightweight resource monitors Beszel, Netdata, and Glances&lt;/a> pair with it. It's the monitoring foundation everything else builds on.&lt;/p>
&lt;p>&lt;strong>Requirements:&lt;/strong> Minimal. The Docker image is tiny. If you want to run it without Docker, you need Node.js 20.4 or newer, which is a minor dependency. But Docker Compose is the right path — one container, a few environment variables, done.&lt;/p>
&lt;p>The setup time is under ten minutes. The payoff is permanent: you'll get a Telegram notification at 2am when your DNS goes down instead of waking up to a household complaining that "the internet is broken."&lt;/p>
&lt;/section>
&lt;!-- SERVICE 3: JELLYFIN -->
&lt;section>
&lt;h2>3. Jellyfin — Your Media, Your Server&lt;/h2>
&lt;p>&lt;strong>What it does:&lt;/strong> Free, open-source media server. Streams your movies, TV shows, and music to any device. The self-hosted Plex alternative that doesn't require a subscription and doesn't phone home.&lt;/p>
&lt;p>&lt;strong>Why it's third:&lt;/strong> Media streaming is the service most households actually use daily. If you have a media library — even a small one — Jellyfin turns your homelab from a nerd project into something your entire household benefits from. That buys you goodwill for the hardware sitting in the closet.&lt;/p>
&lt;p>&lt;strong>Requirements:&lt;/strong> This is where hardware starts to matter. &lt;strong>8GB RAM recommended&lt;/strong> (4GB can work on Linux without a desktop environment). For transcoding — converting media formats on the fly for devices that can't direct-play — you want an Intel N100 or newer with Quick Sync. Intel's hardware transcoding is dramatically better than software transcoding on this class of hardware.&lt;/p>
&lt;p>One important warning: &lt;strong>AMD GPUs are not recommended for transcoding&lt;/strong> on non-Apple systems. If your &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">homelab mini PC&lt;/a> has AMD integrated graphics, you'll want to ensure your clients can direct-play most formats. Intel Quick Sync is the safe path for transcoding on a budget.&lt;/p>
&lt;p>Also: Jellyfin on TrueNAS CORE (FreeBSD) is &lt;strong>unsupported&lt;/strong>. On TrueNAS SCALE (Linux), it works fine. If you're running a &lt;a href="https://techfuelhq.com/homelab/">NAS build&lt;/a>, SCALE is the right choice for Jellyfin.&lt;/p>
&lt;/section>
&lt;img src="https://techfuelhq.com/images/articles/benchmark-self-hosting-resources.svg" alt="Self-hosting resource requirements benchmark showing RAM and CPU usage for six services" width="1100" height="520" loading="lazy" style="display:block;margin:1.5rem auto;max-width:100%;width:100%;" />
&lt;!-- SERVICE 4: NEXTCLOUD -->
&lt;section>
&lt;h2>4. Nextcloud — Replace Google Drive and Calendar&lt;/h2>
&lt;p>&lt;strong>What it does:&lt;/strong> File sync, calendar, contacts, document editing, and about two hundred other things you'll never use. Think of it as self-hosted Google Workspace — files across all your devices, collaborative document editing, and calendar sync, all under your control.&lt;/p>
&lt;p>&lt;strong>Why it's fourth:&lt;/strong> Nextcloud is extremely useful but meaningfully harder to maintain than the first three services. Updates can break plugins. Performance tuning requires database knowledge. The file sync client occasionally does something unexpected. It's not hard, but it's more work than Pi-hole, and you want the Docker fundamentals solid before you take it on.&lt;/p>
&lt;p>&lt;strong>Requirements:&lt;/strong> 64-bit CPU, 64-bit OS, 64-bit PHP. 128MB RAM minimum per PHP process, 512MB recommended. In practice, allocate 1–2GB to the Nextcloud stack (app + database + Redis cache) for comfortable performance.&lt;/p>
&lt;p>The official install method is &lt;strong>Nextcloud AIO (All-in-One)&lt;/strong>, which is a single Docker container that manages the full stack including the database, Redis, and an integrated backup solution. Use AIO. Don't manually compose a Nextcloud stack unless you enjoy debugging PHP-FPM configurations at midnight.&lt;/p>
&lt;/section>
&lt;!-- SERVICE 5: IMMICH -->
&lt;section>
&lt;h2>5. Immich — Google Photos Without Google&lt;/h2>
&lt;p>&lt;strong>What it does:&lt;/strong> Photo and video backup with AI-powered face recognition, location mapping, timeline browsing, and a mobile app that auto-uploads from your phone. The self-hosted Google Photos replacement the community has been waiting for.&lt;/p>
&lt;p>&lt;strong>Why it's fifth:&lt;/strong> Immich is genuinely impressive software. It's also resource-hungry and under active development with breaking changes between versions. The machine learning features — face detection, object recognition, smart search — need real CPU or GPU resources. This is not a service for your first week of self-hosting.&lt;/p>
&lt;p>&lt;strong>Requirements:&lt;/strong> &lt;strong>6GB RAM minimum&lt;/strong>, 2 CPU cores, Docker required (no bare-metal option). The ML inference runs on CPU by default and will consume meaningful resources during photo processing. On an &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">N100 mini PC&lt;/a>, initial library processing will be slow but manageable. On a Ryzen 5825U or better, it's comfortable.&lt;/p>
&lt;p>One critical detail the marketing doesn't emphasize: &lt;strong>Immich is not a backup solution&lt;/strong>. Your photos in Immich still need a separate backup. If the Immich database corrupts or the host disk fails, your photos are gone unless you have independent backups of the underlying storage. Treat Immich as a viewing and organization layer, not your only copy.&lt;/p>
&lt;/section>
&lt;!-- SERVICE 6: HOME ASSISTANT -->
&lt;section>
&lt;h2>6. Home Assistant — The Smart Home Brain&lt;/h2>
&lt;p>&lt;strong>What it does:&lt;/strong> Connects and automates every smart device in your home — lights, thermostats, cameras, sensors, locks — regardless of brand or protocol. Zigbee, Z-Wave, Matter, Wi-Fi, Bluetooth — Home Assistant talks to all of them.&lt;/p>
&lt;p>&lt;strong>Why it's last:&lt;/strong> Not because it's bad — it's exceptional. But Home Assistant is a deep rabbit hole. The automation engine is powerful enough to consume weeks of tinkering. The device ecosystem requires research specific to your hardware. And the recommended installation method is its own operating system, which means either a dedicated box or a dedicated VM.&lt;/p>
&lt;p>&lt;strong>Requirements:&lt;/strong> x86-64 hardware, UEFI enabled, Secure Boot disabled. The recommended path is &lt;strong>Home Assistant OS&lt;/strong> — a purpose-built Linux distro that manages updates, add-ons, and backups through the HA interface. Running HA as a Docker container is possible but you lose the Supervisor and the add-on ecosystem, which is most of what makes HA approachable.&lt;/p>
&lt;p>For a &lt;a href="https://techfuelhq.com/articles/proxmox-mini-pc-setup/">Proxmox&lt;/a> setup, run HA OS as a dedicated VM. Allocate 2GB RAM, 2 vCPUs, and 32GB of disk. Pass through a USB Zigbee/Z-Wave coordinator if you're using one. This is the cleanest path that preserves the full HA experience inside a hypervisor.&lt;/p>
&lt;/section>
&lt;img src="https://techfuelhq.com/images/articles/spec-self-hosting-hardware-tiers.svg" alt="Hardware requirements table for six self-hosted services showing RAM, CPU, storage, and install method" width="760" height="420" loading="lazy" style="display:block;margin:1.5rem auto;max-width:100%;width:100%;" />
&lt;!-- HARDWARE TIERS -->
&lt;section>
&lt;h2>Hardware Tiers — Match Your Box to Your Ambition&lt;/h2>
&lt;p>You don't need to buy new hardware to start self-hosting. But knowing what your current hardware can handle — and where the ceiling is — saves you from deploying something that grinds your box to a halt.&lt;/p>
&lt;h3>Tier 1: The Tiny Box (4–8GB RAM)&lt;/h3>
&lt;p>A Raspberry Pi 4, an old laptop, a thin client from eBay. Anything with 4–8GB of RAM and an x86 or ARM64 processor. This comfortably runs &lt;strong>Pi-hole + Uptime Kuma + Home Assistant&lt;/strong> — the three lightest services on the list. Total RAM footprint is under 3GB. You have room for a few more lightweight containers (a reverse proxy, maybe WireGuard VPN) before you hit the ceiling.&lt;/p>
&lt;p>Don't try to run Jellyfin with transcoding or Immich on this tier. You'll have a bad time.&lt;/p>
&lt;h3>Tier 2: The N100 Box (8–16GB RAM)&lt;/h3>
&lt;p>Anything from a budget Intel N100 box (Beelink S12 Pro class) up to a beefier &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">Minisforum MS-01&lt;/a> (Intel Core H-class) or Ryzen-based Beelink SER8, with 16GB of DDR5. This is the sweet spot for most self-hosters. Everything from Tier 1 plus &lt;strong>Jellyfin with hardware transcoding&lt;/strong> (Intel Quick Sync, even on the little N100, is excellent) and a &lt;strong>light Nextcloud&lt;/strong> instance for file sync and calendar.&lt;/p>
&lt;p>At 16GB you have enough headroom for the Docker stacks, the databases, and some breathing room for ZFS ARC if you're running &lt;a href="https://techfuelhq.com/articles/proxmox-mini-pc-setup/">Proxmox&lt;/a> with ZFS. The N100's four cores will occasionally bottleneck during heavy concurrent workloads, but for a household of 2–4 people, it's plenty.&lt;/p>
&lt;h3>Tier 3: The Serious Node (16–32GB RAM)&lt;/h3>
&lt;p>A Ryzen 7 or Intel i5-based mini PC — the &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">AOOSTAR WTR Pro 5825U&lt;/a>, Minisforum MS-A2, or equivalent. Eight or more cores, 32GB+ of RAM. This runs &lt;strong>everything on the list simultaneously&lt;/strong>: all six services plus Immich's ML processing, Jellyfin transcoding, a Nextcloud instance handling multiple simultaneous users, and a Proxmox VM or two on the side.&lt;/p>
&lt;p>If you're planning to host for a family, run photo backups for multiple people through Immich, or use your homelab as a development environment alongside self-hosted services, this is the tier to aim for. The 5825U's 8 cores and 16 threads handle concurrent workloads that would choke an N100.&lt;/p>
&lt;/section>
&lt;img src="https://techfuelhq.com/images/articles/value-self-hosting-priority.svg" alt="Self-hosting priority value chart showing ROI and effort for each service" width="1100" height="520" loading="lazy" style="display:block;margin:1.5rem auto;max-width:100%;width:100%;" />
&lt;section>
&lt;h2>Self-hosting is for you if:&lt;/h2>
&lt;ul>
&lt;li>You want to learn real infrastructure skills — Docker, networking, storage, Linux — by running actual services&lt;/li>
&lt;li>You have hardware sitting around that could be doing something useful&lt;/li>
&lt;li>You're tired of paying monthly subscriptions for services you could run yourself&lt;/li>
&lt;li>You care about data privacy and want your files, photos, and DNS queries under your control&lt;/li>
&lt;li>You're willing to spend a weekend setting things up and an hour a month maintaining them&lt;/li>
&lt;/ul>
&lt;h3>Self-hosting is not for you if:&lt;/h3>
&lt;ul>
&lt;li>You want zero maintenance — cloud services handle updates, backups, and uptime for you&lt;/li>
&lt;li>You need guaranteed availability — a homelab goes down when your power or internet does&lt;/li>
&lt;li>Your time is worth more than the subscription costs — if $10/month for Google One saves you hours of Nextcloud maintenance, that's a valid choice&lt;/li>
&lt;/ul>
&lt;/section>
&lt;!-- VERDICT -->
&lt;section>
&lt;h2>The Verdict&lt;/h2>
&lt;p>Start with Pi-hole. You'll notice the difference before you finish reading this sentence. Add Uptime Kuma so you know when things break. Then Jellyfin if you have media, Nextcloud if you want to leave Google Drive, Immich when you're ready for the RAM commitment, and Home Assistant when you're ready for the rabbit hole.&lt;/p>
&lt;p>The order matters because each service teaches you something the next one needs. Pi-hole teaches you Docker and DNS. Uptime Kuma teaches you monitoring. Jellyfin teaches you hardware transcoding and storage. Nextcloud teaches you database management. Immich teaches you resource planning. Home Assistant teaches you device integration and automation.&lt;/p>
&lt;p>By the time you're running all six, you've built something genuinely useful — a home infrastructure that blocks ads, streams media, syncs files, backs up photos, automates your house, and tells you when any of it needs attention. That's not a lab project. That's a system. Build it in the right order and it'll actually stick.&lt;/p>
&lt;/section>
&lt;footer style="margin-top:40px;padding-top:24px;border-top:1px solid rgba(255,255,255,0.06);">
&lt;em>Hardware requirements sourced from official documentation for each project. Pricing current as of March 2026. For hardware recommendations, see &lt;a href="https://techfuelhq.com/homelab/">Homelab&lt;/a>. For Proxmox and Docker setup guides, check &lt;a href="https://techfuelhq.com/tutorials/">Tutorials&lt;/a>. Network gear at &lt;a href="https://techfuelhq.com/networking/">Networking&lt;/a>.&lt;/em>
&lt;/footer>
&lt;h2 id="what-does-it-actually-cost-vs-saas">What does it actually cost vs SaaS?&lt;/h2>
&lt;p>The &lt;a href="https://techfuelhq.com/tools/selfhost-breakeven/">Self-Hosting Break-Even Calculator&lt;/a> answers this with your real numbers — add what you&amp;rsquo;re currently paying for Google One, Plex Pass, 1Password, or Dropbox, set your hardware budget, and see when self-hosting pays for itself.&lt;/p>
&lt;h2 id="next-step-install-everything">Next step: install everything&lt;/h2>
&lt;p>Once you have a Proxmox host running, the &lt;a href="https://techfuelhq.com/tutorials/docker-compose-starter-stack-homelab-2026/">Docker Compose starter stack tutorial&lt;/a> gets NPM + Portainer + Uptime Kuma + Watchtower running in one session. For Tailscale remote access (so you can reach everything without exposing ports), see the &lt;a href="https://techfuelhq.com/tutorials/tailscale-remote-access-homelab-2026/">Tailscale homelab guide&lt;/a>. For off-site backups of your service data, the &lt;a href="https://techfuelhq.com/tutorials/automated-offsite-backups-restic-2026/">restic to Backblaze B2 tutorial&lt;/a> covers the full automated setup.&lt;/p>
&lt;h2 id="build-the-system-around-it">Build the system around it&lt;/h2>
&lt;p>The &lt;a href="https://techfuelhq.com/tools/pc-builder/">TechFuelHQ PC Builder&lt;/a> is a free, open-source picker with real socket / RAM / PSU / GPU clearance checks and a CC BY 4.0 parts dataset. Use it to size a host that actually fits the gear in this article.&lt;/p>
&lt;h2 id="sources-and-methodology">Sources and methodology&lt;/h2>
&lt;p>This is an opinionated ordering of self-hosted services based on the maintainer docs and published community deployment patterns as of 2026-06-10.&lt;/p>
&lt;p>&lt;strong>Primary sources cited:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://docs.pi-hole.net/" rel="noopener">Pi-hole docs&lt;/a> — official documentation&lt;/li>
&lt;li>&lt;a href="https://github.com/AdguardTeam/AdGuardHome" rel="noopener">AdGuard Home&lt;/a> — project documentation&lt;/li>
&lt;li>&lt;a href="https://github.com/louislam/uptime-kuma" rel="noopener">Uptime Kuma&lt;/a> — project documentation&lt;/li>
&lt;li>&lt;a href="https://jellyfin.org/docs/" rel="noopener">Jellyfin docs&lt;/a> and &lt;a href="https://docs.nextcloud.com/" rel="noopener">Nextcloud docs&lt;/a> — official references&lt;/li>
&lt;li>&lt;a href="https://immich.app/docs/overview/introduction" rel="noopener">Immich docs&lt;/a> — official documentation&lt;/li>
&lt;li>&lt;a href="https://www.home-assistant.io/docs/" rel="noopener">Home Assistant docs&lt;/a> — official OS installation guide&lt;/li>
&lt;li>&lt;a href="https://github.com/awesome-selfhosted/awesome-selfhosted" rel="noopener">Awesome-Selfhosted curated list&lt;/a> — community curated index&lt;/li>
&lt;/ul>
&lt;p>Email corrections to &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a>.&lt;/p></description></item><item><title>How to Set Up Proxmox on a Mini PC: First VM in Under an Hour</title><link>https://techfuelhq.com/articles/proxmox-mini-pc-setup/</link><pubDate>Tue, 31 Mar 2026 00:00:00 -0500</pubDate><guid>https://techfuelhq.com/articles/proxmox-mini-pc-setup/</guid><description>&lt;img src="https://techfuelhq.com/images/articles/hero-proxmox-mini-pc-setup.svg" alt="Proxmox VE mini PC setup guide hero image showing the path from box to first VM in under an hour" width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;" />
&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-03-31 · Updated 2026-06-10 · ~14 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate we earn from qualifying purchases. Commissions never influence which products get recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR · The Proxmox-on-mini-PC checklist&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>Hardware:&lt;/strong> any 2026 mini PC with 16 GB+ RAM and an NVMe slot (see the full &lt;a href="https://techfuelhq.com/homelab/proxmox-hardware-requirements-2026/">Proxmox hardware requirements&lt;/a>). Minisforum MS-01, ASUS NUC 14, or used EliteDesk 800 G4 Mini all work.&lt;/li>
&lt;li>&lt;strong>Installer:&lt;/strong> Proxmox VE ISO + Ventoy on a 4 GB+ USB stick. Verify the SHA256 first. (Full hardware-agnostic &lt;a href="https://techfuelhq.com/articles/how-to-install-proxmox-ve-2026/">install + update reference&lt;/a>.)&lt;/li>
&lt;li>&lt;strong>Boot:&lt;/strong> F11/F12/Del at POST. Wipe the target SSD (NOT the USB installer). ext4 for single-disk, ZFS for multi-disk.&lt;/li>
&lt;li>&lt;strong>First 5 minutes after install:&lt;/strong> disable the enterprise repo, enable &lt;code>pve-no-subscription&lt;/code>, &lt;code>apt update &amp;amp;&amp;amp; apt full-upgrade -y&lt;/code>, reboot.&lt;/li>
&lt;li>&lt;strong>First VM / LXC:&lt;/strong> upload an ISO via the web UI, click Create VM (or Create CT for a lightweight container), and you're done.&lt;/li>
&lt;/ul>
&lt;p style="margin:0.75rem 0 0 0;font-size:0.9rem;color:#a0a0b8;">Steps verified against the official Proxmox VE 9 installation docs and community installs on N100/N305-class mini PCs. Typical elapsed time: ~45 minutes including apt full-upgrade.&lt;/p>
&lt;/div>
&lt;section>
&lt;p>You bought the &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">mini PC&lt;/a>. You've read the &lt;a href="https://techfuelhq.com/articles/proxmox-vs-esxi-2025/">Proxmox vs ESXi comparison&lt;/a> (or the &lt;a href="https://techfuelhq.com/articles/proxmox-vs-hyper-v-2026/">Proxmox vs Hyper-V&lt;/a> one if you were weighing the Windows side, or the broader &lt;a href="https://techfuelhq.com/homelab/proxmox-truenas-unraid-storage-backend-2026/">Proxmox vs TrueNAS vs Unraid&lt;/a> verdict) and made your choice. Now you're staring at a small fanless box and a USB drive and wondering what the actual step-by-step process looks like.&lt;/p>
&lt;p>Most guides skip the boring parts — BIOS settings, storage decisions, the repo swap that every single Proxmox install needs. This one doesn't. We're going from sealed box to a running VM and LXC container, covering every decision point along the way. No assumed knowledge, no hand-waving, no "just Google it" cop-outs.&lt;/p>
&lt;p>Total time: under an hour if your internet connection is decent. Probably forty-five minutes. Here is exactly where those minutes go and the one decision that matters at each stage:&lt;/p>
&lt;/section>
&lt;!-- ========== SIGNATURE VISUAL: THE 45-MINUTE INSTALL, MAPPED ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;border:1px solid rgba(255,255,255,0.07);border-radius:10px;padding:26px 22px 20px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
&lt;div style="margin-bottom:18px;">
&lt;div style="font-size:19px;font-weight:700;color:#e8e8f0;letter-spacing:-0.3px;">The 45-minute install, mapped&lt;/div>
&lt;div style="font-size:12.5px;color:#9a9ab5;margin-top:5px;line-height:1.5;">Segment width is proportional to real elapsed time, box to first VM. The slow part is one apt upgrade, not the install itself.&lt;/div>
&lt;/div>
&lt;!-- proportional time bar: flex-grow = minutes -->
&lt;div style="display:flex;gap:2px;height:38px;border-radius:5px;overflow:hidden;">
&lt;div style="flex:5;background:#6b7cff;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#0a0a23;" title="BIOS">5m&lt;/div>
&lt;div style="flex:5;background:#3fb7c4;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#0a0a23;" title="USB">5m&lt;/div>
&lt;div style="flex:10;background:#5dca7a;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#0a0a23;" title="Installer">10m&lt;/div>
&lt;div style="flex:10;background:#ffa040;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#0a0a23;" title="Post-install">10m&lt;/div>
&lt;div style="flex:10;background:#c8ff00;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#0a0a23;" title="First VM">10m&lt;/div>
&lt;div style="flex:5;background:#b070e0;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#0a0a23;" title="First LXC">5m&lt;/div>
&lt;/div>
&lt;div style="display:flex;justify-content:space-between;margin-top:6px;font-size:10.5px;color:#6a6a86;">
&lt;span>Box opened &amp;middot; 0 min&lt;/span>
&lt;span>First VM running &amp;middot; ~45 min&lt;/span>
&lt;/div>
&lt;!-- decision annotations: one fork per stage -->
&lt;div style="margin-top:20px;display:grid;gap:9px;">
&lt;div style="display:flex;align-items:flex-start;gap:11px;font-size:13px;line-height:1.5;">
&lt;span style="width:11px;height:11px;min-width:11px;border-radius:3px;background:#6b7cff;margin-top:4px;">&lt;/span>
&lt;span style="color:#c8c8d8;">&lt;strong style="color:#e8e8f0;">BIOS &amp;middot; 5m&lt;/strong> &amp;mdash; enable VT-d / IOMMU and turn &lt;em>off&lt;/em> Secure Boot. Skip this and VMs simply refuse to start later.&lt;/span>
&lt;/div>
&lt;div style="display:flex;align-items:flex-start;gap:11px;font-size:13px;line-height:1.5;">
&lt;span style="width:11px;height:11px;min-width:11px;border-radius:3px;background:#3fb7c4;margin-top:4px;">&lt;/span>
&lt;span style="color:#c8c8d8;">&lt;strong style="color:#e8e8f0;">USB &amp;middot; 5m&lt;/strong> &amp;mdash; flash with Ventoy, not Rufus. One stick holds every ISO you'll ever boot.&lt;/span>
&lt;/div>
&lt;div style="display:flex;align-items:flex-start;gap:11px;font-size:13px;line-height:1.5;">
&lt;span style="width:11px;height:11px;min-width:11px;border-radius:3px;background:#5dca7a;margin-top:4px;">&lt;/span>
&lt;span style="color:#c8c8d8;">&lt;strong style="color:#e8e8f0;">Installer &amp;middot; 10m&lt;/strong> &amp;mdash; the fork that matters: &lt;strong>ext4&lt;/strong> (single disk, keep it simple) or &lt;strong>ZFS&lt;/strong> (two disks, want snapshots). Set a static IP here too.&lt;/span>
&lt;/div>
&lt;div style="display:flex;align-items:flex-start;gap:11px;font-size:13px;line-height:1.5;">
&lt;span style="width:11px;height:11px;min-width:11px;border-radius:3px;background:#ffa040;margin-top:4px;">&lt;/span>
&lt;span style="color:#c8c8d8;">&lt;strong style="color:#ffb060;">Post-install &amp;middot; 10m &amp;mdash; the only real wait.&lt;/strong> Swap to the no-subscription repo, then &lt;code style="background:rgba(255,255,255,0.06);padding:1px 5px;border-radius:3px;font-size:12px;">apt full-upgrade&lt;/code>. Grab a coffee; this is the slow part, not the install.&lt;/span>
&lt;/div>
&lt;div style="display:flex;align-items:flex-start;gap:11px;font-size:13px;line-height:1.5;">
&lt;span style="width:11px;height:11px;min-width:11px;border-radius:3px;background:#c8ff00;margin-top:4px;">&lt;/span>
&lt;span style="color:#c8c8d8;">&lt;strong style="color:#e8e8f0;">First VM &amp;middot; 10m&lt;/strong> &amp;mdash; set CPU type to &lt;strong>host&lt;/strong> and NIC to VirtIO. Everything else can be changed later without a rebuild.&lt;/span>
&lt;/div>
&lt;div style="display:flex;align-items:flex-start;gap:11px;font-size:13px;line-height:1.5;">
&lt;span style="width:11px;height:11px;min-width:11px;border-radius:3px;background:#b070e0;margin-top:4px;">&lt;/span>
&lt;span style="color:#c8c8d8;">&lt;strong style="color:#e8e8f0;">First LXC &amp;middot; 5m&lt;/strong> &amp;mdash; the last fork: full &lt;strong>VM&lt;/strong> for Windows or kernel-level isolation, lightweight &lt;strong>LXC&lt;/strong> for anything Linux-native. Most homelabs land ~70% LXC.&lt;/span>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:16px;padding-top:12px;border-top:1px solid rgba(255,255,255,0.06);font-size:10.5px;color:#55556e;display:flex;justify-content:space-between;">
&lt;span>Elapsed times from a following-along first install; a second machine is closer to 25 min.&lt;/span>
&lt;span>techfuelhq.com&lt;/span>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;!-- WHAT YOU NEED -->
&lt;section>
&lt;h2>What You Need Before You Start&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>A mini PC&lt;/strong> — any x86-64 machine works. The &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">Minisforum MS-01&lt;/a> ($423, dual 10GbE) or &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">Beelink SER8&lt;/a> ($499, 7–10W idle) are the picks from our mini PC guide. But an old laptop or desktop works too — you can &lt;a href="https://techfuelhq.com/articles/repurpose-gaming-pc-proxmox-server-2026/">repurpose an old gaming PC as a Proxmox server&lt;/a>, or follow the &lt;a href="https://techfuelhq.com/homelab/800-dollar-proxmox-server-used-parts-2026/">$800 used-parts Proxmox build&lt;/a> if you're starting from scratch.&lt;/li>
&lt;li>&lt;strong>A USB drive&lt;/strong> — 4GB minimum. Ventoy makes this easier (explained below).&lt;/li>
&lt;li>&lt;strong>RAM installed&lt;/strong> — at least 8GB. 16GB or more if you plan to run ZFS.&lt;/li>
&lt;li>&lt;strong>An NVMe or SSD&lt;/strong> — for the Proxmox boot drive. A 256GB NVMe is $25 and plenty.&lt;/li>
&lt;li>&lt;strong>Ethernet cable and a network with DHCP&lt;/strong> — Proxmox needs a wired network connection. Wi-Fi is not supported during install.&lt;/li>
&lt;li>&lt;strong>Another computer&lt;/strong> — to download the ISO and access the Proxmox web UI after install.&lt;/li>
&lt;/ul>
&lt;/section>
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1rem 1.5rem;margin:0 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.4rem 0;font-weight:700;color:#c8ff00;font-size:0.82rem;text-transform:uppercase;letter-spacing:0.04em;">Buying the hardware?&lt;/p>
&lt;p style="margin:0;font-size:0.95rem;line-height:1.6;">The two buy-new picks this guide uses — the &lt;a href="https://www.amazon.com/s?k=Minisforum+MS-01&amp;tag=techfuelhq-20" rel="nofollow sponsored">Minisforum MS-01&lt;/a> (dual 10GbE) and the &lt;a href="https://www.amazon.com/s?k=Beelink+SER8&amp;tag=techfuelhq-20" rel="nofollow sponsored">Beelink SER8&lt;/a> (low idle) — plus a &lt;a href="https://www.amazon.com/s?k=256GB+NVMe+SSD&amp;tag=techfuelhq-20" rel="nofollow sponsored">256GB NVMe&lt;/a> for the boot drive. Check current prices on Amazon; for the value path, a used EliteDesk 800 G4 Mini is cheaper still.&lt;/p>
&lt;/div>
&lt;!-- STEP 1: BIOS -->
&lt;section>
&lt;h2>Step 1: BIOS Configuration (5 Minutes)&lt;/h2>
&lt;p>Before anything touches a USB drive, get into the BIOS. On most mini PCs, mash &lt;code>Delete&lt;/code> or &lt;code>F2&lt;/code> during boot. Minisforum uses &lt;code>Delete&lt;/code>. Beelink uses &lt;code>Delete&lt;/code> or &lt;code>F7&lt;/code>.&lt;/p>
&lt;p>Change these settings:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Enable VT-d / IOMMU&lt;/strong> — this is Intel's virtualization technology for directed I/O. It lives under CPU settings or Advanced &amp;gt; Chipset. Without this, PCI passthrough won't work. Some BIOS labels it "Intel VT for Directed I/O" or "VT-d." On AMD, look for "IOMMU" or "AMD-Vi" and enable it.&lt;/li>
&lt;li>&lt;strong>Enable VT-x / AMD-V&lt;/strong> — hardware virtualization. This is probably already on, but verify. Without it, KVM won't start.&lt;/li>
&lt;li>&lt;strong>Set boot order&lt;/strong> — put USB first so you can boot the installer. You'll change this back after installation.&lt;/li>
&lt;li>&lt;strong>Disable Secure Boot&lt;/strong> — Proxmox doesn't ship with signed bootloaders for all hardware. Secure Boot can block the installer or cause post-install boot failures. Turn it off.&lt;/li>
&lt;/ol>
&lt;p>Save and exit. The machine will reboot.&lt;/p>
&lt;/section>
&lt;!-- STEP 2: USB BOOT -->
&lt;section>
&lt;h2>Step 2: Create the Boot USB With Ventoy (5 Minutes)&lt;/h2>
&lt;p>Download two things on your other computer:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Ventoy&lt;/strong> — from ventoy.net. It's a tool that turns any USB drive into a multi-ISO boot drive. Install Ventoy to the USB, then just drag ISO files onto it. No flashing, no Rufus, no Etcher. You can put ten different ISOs on one stick and pick from a menu at boot.&lt;/li>
&lt;li>&lt;strong>Proxmox VE ISO&lt;/strong> — from proxmox.com/downloads. Grab the latest stable release (9.x as of this writing — our &lt;a href="https://techfuelhq.com/articles/proxmox-vs-docker-2026/">Proxmox vs Docker comparison&lt;/a> covers what's current). The file is about 1.7GB.&lt;/li>
&lt;/ol>
&lt;p>Install Ventoy to the USB drive (this wipes it). Copy the Proxmox ISO onto the USB. Plug it into your mini PC. Boot. Ventoy shows a menu — select the Proxmox ISO.&lt;/p>
&lt;p>Why Ventoy instead of Rufus? Because next month you'll want to boot a different ISO for testing, and with Ventoy you just drag another file onto the USB. No reflashing. It's the last USB boot tool you'll ever set up.&lt;/p>
&lt;/section>
&lt;!-- STEP 3: INSTALL -->
&lt;section>
&lt;h2>Step 3: Run the Proxmox Installer (10 Minutes)&lt;/h2>
&lt;p>The Proxmox installer is a graphical wizard. It's straightforward, but a few choices matter:&lt;/p>
&lt;h3>Target Disk and Filesystem&lt;/h3>
&lt;p>The installer asks which disk to install on and which filesystem to use. This is the most consequential choice in the entire process.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>ext4 (default)&lt;/strong> — simple, fast, reliable. If you have a single NVMe boot drive and no plans for advanced storage features, ext4 is the right choice. It uses the standard LVM-thin (local-lvm) layout, which Proxmox knows how to manage natively.&lt;/li>
&lt;li>&lt;strong>ZFS&lt;/strong> — checksumming, snapshots, compression, and self-healing. If you have two identical drives, ZFS mirror gives you redundancy. The tradeoff: ZFS uses ARC (a read cache) that consumes RAM aggressively. On a 16GB system, set a manual ARC limit after install or ZFS will eat half your memory. More on this below.&lt;/li>
&lt;li>&lt;strong>XFS / Btrfs&lt;/strong> — available but not recommended for Proxmox. The community support and documentation for ext4 and ZFS are dramatically better.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>My recommendation:&lt;/strong> ext4 on a single NVMe for your first install. You can add ZFS pools later for data drives. Don't complicate the boot drive on day one.&lt;/p>
&lt;h3>Network Configuration&lt;/h3>
&lt;p>The installer asks for a hostname (use something like &lt;code>pve.local&lt;/code>), an IP address, gateway, and DNS server. If your network has DHCP, the installer will auto-fill these. I'd recommend setting a &lt;strong>static IP&lt;/strong> instead — pick something outside your DHCP range (like 192.168.1.200) so the Proxmox web UI always lives at the same address.&lt;/p>
&lt;p>The installer creates a Linux bridge called &lt;code>vmbr0&lt;/code> attached to your first physical NIC. This is how your VMs and containers will reach the network. If your mini PC has multiple NICs (the &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">MS-01 has four&lt;/a>), only the first one gets bridged during install. You'll configure the rest later.&lt;/p>
&lt;h3>Root Password and Email&lt;/h3>
&lt;p>Set a strong root password. The email address is for system notifications (cron job alerts, ZFS scrub reports). Use a real one if you want those emails; use a dummy one if you don't care.&lt;/p>
&lt;p>Hit Install. Wait about five minutes. Proxmox writes to the NVMe, reboots, and you'll see a console login screen with a URL displayed.&lt;/p>
&lt;/section>
&lt;!-- ========== VISUAL 2: POWER CONSUMPTION (self-contained, no external JS) ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;border:1px solid rgba(255,255,255,0.07);border-radius:10px;padding:26px 22px 18px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
&lt;div style="margin-bottom:4px;">
&lt;div style="font-size:18px;font-weight:700;color:#e8e8f0;letter-spacing:-0.3px;">What a Proxmox mini PC actually draws&lt;/div>
&lt;div style="font-size:12.5px;color:#9a9ab5;margin-top:5px;line-height:1.5;">Whole-system watts at the wall, running Proxmox with a typical homelab load. This is why the electricity bill is a rounding error.&lt;/div>
&lt;/div>
&lt;div style="display:flex;flex-wrap:wrap;gap:16px;margin:16px 0 18px;font-size:11px;">
&lt;span style="display:flex;align-items:center;gap:6px;color:#a0a0b8;">&lt;span style="width:11px;height:11px;border-radius:2px;background:#5dca7a;display:inline-block;">&lt;/span>Idle&lt;/span>
&lt;span style="display:flex;align-items:center;gap:6px;color:#a0a0b8;">&lt;span style="width:11px;height:11px;border-radius:2px;background:#ed6a5a;display:inline-block;">&lt;/span>Typical load&lt;/span>
&lt;/div>
&lt;!-- one card per machine; bars scaled to a 150W ceiling -->
&lt;div style="display:grid;gap:16px;">
&lt;div>
&lt;div style="display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px;">
&lt;span style="font-size:13px;font-weight:600;color:#e0e0ee;">Beelink SER8&lt;/span>
&lt;span style="font-size:11px;color:#ffa040;">~$10/yr idle&lt;/span>
&lt;/div>
&lt;div style="display:flex;align-items:center;gap:8px;margin-bottom:4px;">&lt;div style="flex:1;height:14px;background:rgba(255,255,255,0.04);border-radius:3px;overflow:hidden;">&lt;div style="width:5.7%;height:100%;background:#5dca7a;border-radius:3px;">&lt;/div>&lt;/div>&lt;span style="font-size:11px;color:#80e8a0;min-width:42px;">8.5 W&lt;/span>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:8px;">&lt;div style="flex:1;height:14px;background:rgba(255,255,255,0.04);border-radius:3px;overflow:hidden;">&lt;div style="width:52%;height:100%;background:#ed6a5a;border-radius:3px;">&lt;/div>&lt;/div>&lt;span style="font-size:11px;color:#ff9080;min-width:42px;">78 W&lt;/span>&lt;/div>
&lt;/div>
&lt;div>
&lt;div style="display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px;">
&lt;span style="font-size:13px;font-weight:600;color:#e0e0ee;">MS-01 (i5-12600H)&lt;/span>
&lt;span style="font-size:11px;color:#ffa040;">~$33/yr idle&lt;/span>
&lt;/div>
&lt;div style="display:flex;align-items:center;gap:8px;margin-bottom:4px;">&lt;div style="flex:1;height:14px;background:rgba(255,255,255,0.04);border-radius:3px;overflow:hidden;">&lt;div style="width:18%;height:100%;background:#5dca7a;border-radius:3px;">&lt;/div>&lt;/div>&lt;span style="font-size:11px;color:#80e8a0;min-width:42px;">27 W&lt;/span>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:8px;">&lt;div style="flex:1;height:14px;background:rgba(255,255,255,0.04);border-radius:3px;overflow:hidden;">&lt;div style="width:63.3%;height:100%;background:#ed6a5a;border-radius:3px;">&lt;/div>&lt;/div>&lt;span style="font-size:11px;color:#ff9080;min-width:42px;">95 W&lt;/span>&lt;/div>
&lt;/div>
&lt;div>
&lt;div style="display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px;">
&lt;span style="font-size:13px;font-weight:600;color:#e0e0ee;">MS-A2 (Ryzen 7745HX)&lt;/span>
&lt;span style="font-size:11px;color:#ffa040;">~$43/yr idle&lt;/span>
&lt;/div>
&lt;div style="display:flex;align-items:center;gap:8px;margin-bottom:4px;">&lt;div style="flex:1;height:14px;background:rgba(255,255,255,0.04);border-radius:3px;overflow:hidden;">&lt;div style="width:23.3%;height:100%;background:#5dca7a;border-radius:3px;">&lt;/div>&lt;/div>&lt;span style="font-size:11px;color:#80e8a0;min-width:42px;">35 W&lt;/span>&lt;/div>
&lt;div style="display:flex;align-items:center;gap:8px;">&lt;div style="flex:1;height:14px;background:rgba(255,255,255,0.04);border-radius:3px;overflow:hidden;">&lt;div style="width:93.3%;height:100%;background:#ed6a5a;border-radius:3px;">&lt;/div>&lt;/div>&lt;span style="font-size:11px;color:#ff9080;min-width:42px;">140 W&lt;/span>&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="font-size:10.5px;color:#55556e;margin-top:16px;padding-top:12px;border-top:1px solid rgba(255,255,255,0.06);display:flex;justify-content:space-between;flex-wrap:wrap;gap:6px;">
&lt;span>Annual cost at $0.14/kWh, 24/7. Full specs in our &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/" style="color:#c8ff00;">mini PC guide&lt;/a>.&lt;/span>
&lt;span>techfuelhq.com&lt;/span>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;!-- STEP 4: POST-INSTALL -->
&lt;section>
&lt;h2>Step 4: Post-Install Configuration (10 Minutes)&lt;/h2>
&lt;p>The console screen shows something like: &lt;code>https://192.168.1.200:8006&lt;/code>. Open that in a browser on your other computer. You'll get a certificate warning — that's normal, Proxmox uses a self-signed cert. Accept it and proceed.&lt;/p>
&lt;p>Log in as &lt;code>root&lt;/code> with the password you set. You're now in the Proxmox web UI. Before you touch anything else, fix the repositories.&lt;/p>
&lt;h3>Fix the Repositories (Two Clicks in the Web UI)&lt;/h3>
&lt;p>A fresh Proxmox VE 9 install points at the &lt;em>enterprise&lt;/em> repository, which needs a paid subscription. Until you swap it, every update throws an authentication error. This is the single most common gotcha for new Proxmox users — and on PVE 9 it's a two-click fix in the web UI, no shell required:&lt;/p>
&lt;ol>
&lt;li>Go to &lt;strong>Datacenter &amp;gt; your node &amp;gt; Updates &amp;gt; Repositories&lt;/strong>.&lt;/li>
&lt;li>Select the &lt;code>pve-enterprise&lt;/code> row (and the &lt;code>ceph … enterprise&lt;/code> row if present) and click &lt;strong>Disable&lt;/strong>.&lt;/li>
&lt;li>Click &lt;strong>Add&lt;/strong>, choose &lt;strong>No-Subscription&lt;/strong> from the dropdown, and confirm.&lt;/li>
&lt;li>Back on the &lt;strong>Updates&lt;/strong> tab, click &lt;strong>Refresh&lt;/strong>, then &lt;strong>Upgrade&lt;/strong>.&lt;/li>
&lt;/ol>
&lt;p>The web UI writes the correct files for you. The &lt;a href="https://techfuelhq.com/articles/proxmox-vs-esxi-2025/">no-subscription repo is fine for home use&lt;/a> — it's the same packages, just without the enterprise support SLA.&lt;/p>
&lt;h3>Or Do It From the Shell — But Use the Right Format&lt;/h3>
&lt;p>Proxmox VE 9 is built on Debian 13 ("trixie") and ships the modern deb822 &lt;code>.sources&lt;/code> format — &lt;strong>not&lt;/strong> the one-line &lt;code>.list&lt;/code> files you'll still see in most guides written before 2025. Writing a &lt;code>bookworm&lt;/code> &lt;code>.list&lt;/code> file (the old PVE 8 method) silently does nothing on 9: the enterprise repo stays enabled and &lt;code>apt update&lt;/code> keeps failing. Here's the version that actually works:&lt;/p>
&lt;pre>
# 1. Disable the enterprise repo (it lives in a deb822 .sources file on 9)
sed -i '/Components: pve-enterprise/a Enabled: false' \
/etc/apt/sources.list.d/pve-enterprise.sources
# (do the same for the ceph enterprise repo if it exists)
sed -i '/Components: ceph .*enterprise/a Enabled: false' \
/etc/apt/sources.list.d/ceph.sources 2>/dev/null
#
# 2. Add the free no-subscription repo (deb822 format, trixie suite)
cat &amp;gt; /etc/apt/sources.list.d/proxmox.sources &amp;lt;&amp;lt;'EOF'
Types: deb
URIs: http://download.proxmox.com/debian/pve
Suites: trixie
Components: pve-no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
EOF
#
# 3. Update and upgrade
apt update &amp;amp;&amp;amp; apt full-upgrade -y
&lt;/pre>
&lt;p>Upgrading an &lt;em>older&lt;/em> box to 9 and staring at leftover &lt;code>.list&lt;/code> files? Run &lt;code>apt modernize-sources&lt;/code> once — it converts them to the new &lt;code>.sources&lt;/code> layout and stops apt from nagging about the legacy format.&lt;/p>
&lt;h3>Remove the Subscription Nag (Optional)&lt;/h3>
&lt;p>Every time you log into the web UI, Proxmox shows a popup reminding you to buy a subscription. It's annoying but harmless. Community scripts exist to remove it, but they break on every update. My advice: just click "OK" and move on. It takes one second and it doesn't affect functionality.&lt;/p>
&lt;h3>Check the ZFS ARC Limit (If You Used ZFS)&lt;/h3>
&lt;p>ZFS keeps a RAM read-cache called ARC, and the internet is full of "ZFS ate half my memory" horror stories. Good news: those are out of date. Since &lt;strong>Proxmox VE 8.1&lt;/strong>, a &lt;em>fresh&lt;/em> install already caps ARC at &lt;strong>10% of installed RAM (max 16 GB)&lt;/strong> and writes that limit to &lt;code>/etc/modprobe.d/zfs.conf&lt;/code> for you. Verify it's there:&lt;/p>
&lt;pre>
cat /etc/modprobe.d/zfs.conf
# a fresh PVE 9 install shows: options zfs zfs_arc_max=...
&lt;/pre>
&lt;p>Two cases where you still touch this:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>You upgraded an old box to 9&lt;/strong> — pre-8.1 systems keep the legacy 50%-of-RAM behavior and have no &lt;code>zfs.conf&lt;/code> entry, so set one yourself.&lt;/li>
&lt;li>&lt;strong>You want a different split&lt;/strong> — on a 16 GB mini PC the 10% default (~1.6 GB) can be stingy for a storage-heavy pool; on a 64 GB box you may want more than the 16 GB cap. Tune it:&lt;/li>
&lt;/ul>
&lt;pre>
# Example: cap ARC at 4 GB (4 * 1024^3 bytes)
echo "options zfs zfs_arc_max=4294967296" > /etc/modprobe.d/zfs.conf
update-initramfs -u # only needed if your ROOT filesystem is ZFS
reboot
&lt;/pre>
&lt;p>Rule of thumb: leave the 10% default alone unless a specific workload actually benefits from a bigger cache. On a mini PC where RAM is the scarce resource, ARC is a knob to keep modest — not a fire to put out.&lt;/p>
&lt;/section>
&lt;!-- STEP 5: NETWORKING -->
&lt;section>
&lt;h2>Step 5: Network Bridge Configuration (5 Minutes)&lt;/h2>
&lt;p>Proxmox created &lt;code>vmbr0&lt;/code> during installation, bridged to your first NIC. Every VM and container you create will use this bridge to reach the network by default. For a single-NIC mini PC like the Beelink SER8, you're done — everything shares that one interface.&lt;/p>
&lt;p>For multi-NIC mini PCs like the &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">MS-01&lt;/a> (which has four ports — two 10GbE SFP+ and two 2.5GbE RJ45), you'll want additional bridges.&lt;/p>
&lt;p>In the web UI: go to your node &amp;gt; System &amp;gt; Network &amp;gt; Create &amp;gt; Linux Bridge. Name it &lt;code>vmbr1&lt;/code>, select the second physical interface, and optionally assign it to a VLAN or separate subnet. Common patterns:&lt;/p>
&lt;ul>
&lt;li>&lt;code>vmbr0&lt;/code> on the 2.5GbE port — management + general VM traffic&lt;/li>
&lt;li>&lt;code>vmbr1&lt;/code> on a 10GbE SFP+ port — dedicated storage or inter-node traffic&lt;/li>
&lt;li>&lt;code>vmbr2&lt;/code> on the second 2.5GbE — WAN interface for a pfSense/OPNsense VM&lt;/li>
&lt;/ul>
&lt;p>Don't overcomplicate this on day one. One bridge works. Add more when you have a specific reason.&lt;/p>
&lt;/section>
&lt;!-- STEP 6: STORAGE -->
&lt;section>
&lt;h2>Step 6: Understanding Storage Layout&lt;/h2>
&lt;p>After a default ext4 install, you'll see two storage entries in the web UI:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>local&lt;/strong> — a directory on the boot drive. Stores ISO images, container templates, backups, and snippets. Think of it as the file shelf.&lt;/li>
&lt;li>&lt;strong>local-lvm&lt;/strong> — an LVM-thin pool on the boot drive. Stores VM disks and container root filesystems. This is where your actual workload data lives.&lt;/li>
&lt;/ul>
&lt;p>Upload your ISO images (Ubuntu, Debian, Windows) to &lt;strong>local&lt;/strong> via the web UI: select the "local" storage &amp;gt; ISO Images &amp;gt; Upload. Container templates download directly through the UI: select "local" &amp;gt; CT Templates &amp;gt; Templates.&lt;/p>
&lt;p>If you have a second NVMe or SSD, you can create an additional storage pool for VM disks. In the shell:&lt;/p>
&lt;pre>
# Create a new directory storage on a second drive
# (assuming it's mounted at /mnt/data)
pvesm add dir data-store --path /mnt/data --content images,rootdir
&lt;/pre>
&lt;p>For ZFS users: your pool was created during installation. Proxmox auto-registers it. You can create additional datasets for different workloads via the CLI or the web UI.&lt;/p>
&lt;/section>
&lt;!-- STEP 7: FIRST VM -->
&lt;section>
&lt;h2>Step 7: Create Your First VM (10 Minutes)&lt;/h2>
&lt;p>Click "Create VM" in the top right of the web UI. Here are the settings that matter:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>General&lt;/strong> — give it a name. VM IDs auto-increment from 100.&lt;/li>
&lt;li>&lt;strong>OS&lt;/strong> — select the ISO you uploaded. Set the OS type (Linux or Windows).&lt;/li>
&lt;li>&lt;strong>System&lt;/strong> — leave defaults for Linux. For Windows 11: set Machine to q35, BIOS to OVMF (UEFI), and add a TPM. Check "Qemu Agent" if you'll install it in the guest.&lt;/li>
&lt;li>&lt;strong>Disks&lt;/strong> — allocate disk space on local-lvm. 32GB is fine for a test Linux VM. Use VirtIO Block for the bus — it's the fastest option for Linux guests. Windows needs VirtIO drivers loaded during install (download the VirtIO ISO from the Proxmox wiki).&lt;/li>
&lt;li>&lt;strong>CPU&lt;/strong> — set the type to "host" for best performance. Allocate 2 cores to start. You can change this later without rebuilding the VM.&lt;/li>
&lt;li>&lt;strong>Memory&lt;/strong> — 2048MB (2GB) for a minimal Linux VM. 4096MB for anything you want to actually use. Enable ballooning to let Proxmox reclaim unused memory.&lt;/li>
&lt;li>&lt;strong>Network&lt;/strong> — bridge vmbr0, model VirtIO. That's the fast paravirtualized NIC.&lt;/li>
&lt;/ol>
&lt;p>Click Finish. Start the VM. Open the Console tab and you'll see the OS installer booting. Install your OS as normal.&lt;/p>
&lt;p>After the OS is installed, install the QEMU Guest Agent inside the VM (&lt;code>apt install qemu-guest-agent&lt;/code> on Debian/Ubuntu). This lets Proxmox see the guest's IP address, run graceful shutdowns, and freeze the filesystem for consistent snapshots.&lt;/p>
&lt;/section>
&lt;!-- STEP 8: FIRST LXC -->
&lt;section>
&lt;h2>Step 8: Create Your First LXC Container (5 Minutes)&lt;/h2>
&lt;p>LXC containers are the reason most homelabbers prefer &lt;a href="https://techfuelhq.com/articles/proxmox-vs-esxi-2025/">Proxmox over ESXi&lt;/a>. They share the host kernel, start in seconds, and use a fraction of the RAM a full VM needs. A container running Pi-hole uses maybe 50–80MB. The same service in a VM needs a full guest OS consuming 512MB+.&lt;/p>
&lt;p>Click "Create CT" in the top right. The process:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>General&lt;/strong> — set a hostname and a root password. Check "Unprivileged container" (the default and the secure option).&lt;/li>
&lt;li>&lt;strong>Template&lt;/strong> — select a template from local storage. If you haven't downloaded one yet, go to local &amp;gt; CT Templates &amp;gt; Templates and grab "debian-12-standard" or "ubuntu-24.04-standard."&lt;/li>
&lt;li>&lt;strong>Disks&lt;/strong> — 8GB is plenty for a lightweight service. Allocate more if the container will store data.&lt;/li>
&lt;li>&lt;strong>CPU&lt;/strong> — 1 core is fine for most containers. Pi-hole, Uptime Kuma, a reverse proxy — they don't need more.&lt;/li>
&lt;li>&lt;strong>Memory&lt;/strong> — 512MB for light services. 1024MB if you're running something heavier.&lt;/li>
&lt;li>&lt;strong>Network&lt;/strong> — bridge vmbr0, DHCP or static IP. Same network as your VMs.&lt;/li>
&lt;/ol>
&lt;p>Click Finish. Start it. Open the Console. You're inside a Debian or Ubuntu environment in under ten seconds. Install Docker, deploy a service, and you're self-hosting. The &lt;a href="https://techfuelhq.com/articles/self-hosting-essentials/">self-hosting essentials guide&lt;/a> covers what to run first.&lt;/p>
&lt;h3>If You're Running Docker in This Container&lt;/h3>
&lt;p>For Docker to work inside an unprivileged LXC, you need to enable nesting. In the web UI: select the container &amp;gt; Options &amp;gt; Features &amp;gt; check "Nesting." Alternatively, from the Proxmox shell:&lt;/p>
&lt;pre>
# Enable nesting and keyctl for container 101
pct set 101 -features nesting=1,keyctl=1
&lt;/pre>
&lt;p>Restart the container. Docker will now install and run without errors. Confirm the overlay2 storage driver is active with &lt;code>docker info | grep Storage&lt;/code>.&lt;/p>
&lt;/section>
&lt;!-- ========== VISUAL 2: INTERACTIVE CHECKLIST ========== -->
&lt;div class="visual-block">
&lt;div id="checklistWrap" style="background:#0a0a23;padding:28px 24px 20px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;">
&lt;div style="text-align:center;margin-bottom:20px;">
&lt;div style="font-size:18px;font-weight:600;letter-spacing:-0.3px;">Proxmox setup checklist&lt;/div>
&lt;div style="font-size:12px;color:#9a9ab5;margin-top:4px;">Check off each step as you go · Progress saves in your session&lt;/div>
&lt;/div>
&lt;div style="max-width:520px;margin:0 auto;">
&lt;div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;">
&lt;span style="font-size:13px;color:#7a7a96;">Progress&lt;/span>
&lt;span style="font-size:20px;font-weight:700;color:#5dca7a;" id="progressPct">0%&lt;/span>
&lt;/div>
&lt;div style="background:rgba(255,255,255,0.04);border-radius:6px;height:8px;margin-bottom:20px;overflow:hidden;">
&lt;div id="progressBar" style="width:0%;height:100%;background:#5dca7a;border-radius:6px;transition:width 0.3s;">&lt;/div>
&lt;/div>
&lt;div id="checklistItems">&lt;/div>
&lt;div id="checklistDone" style="display:none;text-align:center;margin-top:16px;padding:16px;background:rgba(93,202,122,0.08);border:1px solid rgba(93,202,122,0.25);border-radius:8px;">
&lt;div style="font-size:16px;font-weight:600;color:#5dca7a;">Proxmox is running. Your homelab is live.&lt;/div>
&lt;div style="font-size:12px;color:#5a9a6a;margin-top:4px;">Time to &lt;a href="https://techfuelhq.com/articles/self-hosting-essentials/" style="color:#76b900;">deploy your first services&lt;/a>.&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;!-- COMMON GOTCHAS -->
&lt;section>
&lt;h2>Common Gotchas That Trip Up New Users&lt;/h2>
&lt;h3>The Web UI Uses HTTPS on Port 8006&lt;/h3>
&lt;p>The URL is &lt;code>https://YOUR-IP:8006&lt;/code>. Note the &lt;strong>https&lt;/strong> and the &lt;strong>:8006&lt;/strong>. If you type &lt;code>http://&lt;/code> (no S) or forget the port number, the page won't load and you'll think the install failed. It didn't. Fix your URL.&lt;/p>
&lt;h3>The Enterprise Repo Error&lt;/h3>
&lt;p>If you see &lt;code>401 Unauthorized&lt;/code> when running &lt;code>apt update&lt;/code>, you haven't swapped the repos yet (Step 4). Disable the enterprise repo and add the no-subscription one. If you tried the shell method and it did nothing, you probably used the old &lt;code>bookworm&lt;/code> &lt;code>.list&lt;/code> format — PVE 9 needs the deb822 &lt;code>.sources&lt;/code> file.&lt;/p>
&lt;h3>VMs Won't Start — "KVM Not Available"&lt;/h3>
&lt;p>VT-x or VT-d isn't enabled in BIOS. Reboot, enter BIOS, enable it (Step 1). This is the #1 reason VMs fail to start on a fresh install.&lt;/p>
&lt;h3>Container Networking Broken After Reboot&lt;/h3>
&lt;p>Usually means the bridge (&lt;code>vmbr0&lt;/code>) lost its configuration. Check &lt;code>/etc/network/interfaces&lt;/code> on the Proxmox host — the bridge definition should be there. If you edited it manually and made a typo, networking breaks silently. The web UI's network editor is safer for beginners.&lt;/p>
&lt;h3>ZFS Ate All My RAM&lt;/h3>
&lt;p>Almost always an &lt;em>older&lt;/em> box you upgraded to 9 — fresh PVE 9 installs cap ARC at 10% automatically. Check &lt;code>/etc/modprobe.d/zfs.conf&lt;/code>; if it's empty, ZFS is running on the legacy 50%-of-RAM default. Set a limit (Step 4) and reboot.&lt;/p>
&lt;/section>
&lt;!-- WHO SHOULD DO THIS -->
&lt;section>
&lt;h2>Who Should Do This&lt;/h2>
&lt;h3>This tutorial is for you if:&lt;/h3>
&lt;ul>
&lt;li>You've got a &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">mini PC&lt;/a> sitting on your desk and you want to turn it into a real homelab&lt;/li>
&lt;li>You want to learn VM and container management on the same hypervisor used in production environments&lt;/li>
&lt;li>You're ready to &lt;a href="https://techfuelhq.com/articles/self-hosting-essentials/">self-host services&lt;/a> and need the infrastructure to run them&lt;/li>
&lt;li>You chose &lt;a href="https://techfuelhq.com/articles/proxmox-vs-esxi-2025/">Proxmox over ESXi&lt;/a> and need the actual setup walkthrough&lt;/li>
&lt;/ul>
&lt;h3>Skip this if:&lt;/h3>
&lt;ul>
&lt;li>You only need to run two Docker containers — install Docker directly on Ubuntu, you don't need a hypervisor&lt;/li>
&lt;li>You want a NAS with an appliance interface — look at &lt;a href="https://techfuelhq.com/homelab/best-budget-nas-builds-2025/">TrueNAS or Unraid instead&lt;/a>&lt;/li>
&lt;/ul>
&lt;/section>
&lt;!-- VERDICT -->
&lt;section>
&lt;h2>What You've Built&lt;/h2>
&lt;p>You've got a Proxmox hypervisor running on a mini PC that idles at 15–35 watts. You've got a VM running a full operating system and an LXC container ready for Docker services. You've got the correct repos configured, storage layout understood, and network bridge operational.&lt;/p>
&lt;p>That's a real homelab. Not a theoretical one. A box on your desk running actual workloads and teaching you actual infrastructure skills — the same KVM, LXC, ZFS, and Linux networking concepts used in production data centers.&lt;/p>
&lt;p>The next step is deploying services. Start with &lt;a href="https://techfuelhq.com/articles/self-hosting-essentials/">Pi-hole for DNS ad blocking&lt;/a> — you'll notice the difference immediately. Then Uptime Kuma for monitoring. Then whatever else your household needs.&lt;/p>
&lt;p>The foundation is solid. Build on it.&lt;/p>
&lt;/section>
&lt;footer style="margin-top:40px;padding-top:24px;border-top:1px solid rgba(255,255,255,0.06);">
&lt;p>&lt;em>Procedure validated against Proxmox VE 9 documentation, with hardware references to the Minisforum MS-01 and Beelink SER8 platforms. Power consumption figures cite independent measurements (linked above). For hardware recommendations, see &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">Best Mini PCs for Homelab&lt;/a>. For the hypervisor decision, see &lt;a href="https://techfuelhq.com/articles/proxmox-vs-esxi-2025/">Proxmox vs ESXi&lt;/a>. Service deployment guides at &lt;a href="https://techfuelhq.com/articles/self-hosting-essentials/">Self-Hosting Essentials&lt;/a>. Network gear at &lt;a href="https://techfuelhq.com/articles/best-homelab-networking-gear-under-200/">Networking Under $200&lt;/a>.&lt;/em>&lt;/p>
&lt;/footer>
&lt;!-- Interactive checklist (self-contained, no external dependencies) -->
&lt;script>
// ===== INTERACTIVE CHECKLIST =====
(function(){
var steps=[
{group:'BIOS Setup',items:['Enable VT-d / IOMMU in BIOS','Enable VT-x / AMD-V (hardware virtualization)','Set USB as first boot device','Disable Secure Boot']},
{group:'Boot Media',items:['Download and install Ventoy on USB drive','Download Proxmox VE ISO from proxmox.com','Copy ISO to Ventoy USB drive']},
{group:'Proxmox Install',items:['Boot from Ventoy USB, select Proxmox ISO','Choose filesystem (ext4 recommended for first install)','Set static IP address for management','Set root password and notification email','Complete installation and reboot']},
{group:'Post-Install',items:['Access web UI at https://IP:8006','Disable enterprise repository (Updates > Repositories)','Add the No-Subscription repository','Run apt update &amp;&amp; apt full-upgrade','Verify ZFS ARC limit in /etc/modprobe.d/zfs.conf (if using ZFS)']},
{group:'First Workloads',items:['Upload an ISO image to local storage','Create your first VM (Linux or Windows)','Install QEMU Guest Agent in the VM','Download a container template (Debian/Ubuntu)','Create your first LXC container','Enable nesting for Docker-in-LXC']}
];
var totalItems=0;
steps.forEach(function(s){totalItems+=s.items.length;});
var wrap=document.getElementById('checklistItems');
var checkState={};
var itemIdx=0;
steps.forEach(function(group,gi){
var groupEl=document.createElement('div');
groupEl.style.cssText='margin-bottom:16px;';
var header=document.createElement('div');
header.style.cssText='font-size:11px;font-weight:600;color:#7a7a96;letter-spacing:0.5px;margin-bottom:8px;padding-left:4px;';
header.textContent=group.group.toUpperCase();
groupEl.appendChild(header);
group.items.forEach(function(item,ii){
var id='chk-'+gi+'-'+ii;
checkState[id]=false;
var row=document.createElement('button');
row.id=id;
row.style.cssText='display:flex;align-items:flex-start;gap:10px;width:100%;background:rgba(255,255,255,0.02);border:1px solid rgba(255,255,255,0.06);border-radius:8px;padding:10px 12px;margin-bottom:6px;cursor:pointer;text-align:left;font-family:inherit;color:#b0b0c8;font-size:13px;line-height:1.5;transition:all .15s;';
var dot=document.createElement('span');
dot.id='dot-'+id;
dot.style.cssText='width:20px;height:20px;min-width:20px;border-radius:5px;border:1.5px solid rgba(255,255,255,0.15);display:flex;align-items:center;justify-content:center;font-size:12px;color:transparent;margin-top:1px;transition:all .15s;';
dot.innerHTML='&amp;#10003;';
var label=document.createElement('span');
label.id='lbl-'+id;
label.textContent=item;
row.appendChild(dot);
row.appendChild(label);
row.onclick=function(){
checkState[id]=!checkState[id];
var d=document.getElementById('dot-'+id);
var l=document.getElementById('lbl-'+id);
var r=document.getElementById(id);
if(checkState[id]){
d.style.borderColor='#5dca7a';d.style.background='#5dca7a';d.style.color='#0a0a23';
l.style.textDecoration='line-through';l.style.color='#555570';
r.style.borderColor='rgba(93,202,122,0.15)';r.style.background='rgba(93,202,122,0.04)';
} else {
d.style.borderColor='rgba(255,255,255,0.15)';d.style.background='transparent';d.style.color='transparent';
l.style.textDecoration='none';l.style.color='#b0b0c8';
r.style.borderColor='rgba(255,255,255,0.06)';r.style.background='rgba(255,255,255,0.02)';
}
updateProgress();
};
groupEl.appendChild(row);
itemIdx++;
});
wrap.appendChild(groupEl);
});
function updateProgress(){
var done=0;
Object.keys(checkState).forEach(function(k){if(checkState[k])done++;});
var pct=Math.round(done/totalItems*100);
document.getElementById('progressPct').textContent=pct+'%';
document.getElementById('progressBar').style.width=pct+'%';
document.getElementById('progressPct').style.color=pct===100?'#5dca7a':pct>50?'#5090e0':'#7a7a96';
document.getElementById('checklistDone').style.display=pct===100?'block':'none';
}
})();
&lt;/script>
&lt;h2 id="key-takeaways-the-best-mini-pc-for-proxmox">Key takeaways: the best mini PC for Proxmox&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Best for 10GbE homelabs:&lt;/strong> the Minisforum MS-01 ($423, dual 10GbE SFP+ plus two 2.5GbE ports) — the pick when you want fast storage or inter-node networking.&lt;/li>
&lt;li>&lt;strong>Best for low idle power:&lt;/strong> the ASUS NUC 14 Pro, or the Beelink SER8 ($499) at 7–10W idle if you want the lowest 24/7 running cost.&lt;/li>
&lt;li>&lt;strong>Best value path:&lt;/strong> a used HP EliteDesk 800 G4 Mini — the cheapest way onto Proxmox if you&amp;rsquo;re starting from scratch.&lt;/li>
&lt;li>&lt;strong>Minimum specs that work:&lt;/strong> any x86-64 mini PC with 16 GB+ RAM (8 GB bare minimum, 16 GB+ for ZFS), an NVMe/SSD boot drive, and wired Ethernet. All three picks run Proxmox VE 9 cleanly.&lt;/li>
&lt;li>&lt;strong>Real-world idle draw:&lt;/strong> a Proxmox mini PC idles around 15–35W, roughly $10–$43/year at $0.14/kWh running 24/7.&lt;/li>
&lt;/ul>
&lt;h2 id="sources-and-methodology">Sources and methodology&lt;/h2>
&lt;p>Step-by-step procedure validated against Proxmox VE 9 documentation and tested on representative mini-PC class hardware.&lt;/p>
&lt;p>&lt;strong>Primary sources cited:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://pve.proxmox.com/wiki/Installation" rel="noopener">Proxmox VE installation guide&lt;/a> — official install docs&lt;/li>
&lt;li>&lt;a href="https://pve.proxmox.com/wiki/Package_Repositories" rel="noopener">Proxmox VE package repositories&lt;/a> — the deb822 / no-subscription repo reference&lt;/li>
&lt;li>&lt;a href="https://pve.proxmox.com/wiki/ZFS_on_Linux" rel="noopener">Proxmox ZFS on Linux&lt;/a> — the ARC-limit default and tuning&lt;/li>
&lt;li>&lt;a href="https://forum.proxmox.com/" rel="noopener">Proxmox forum&lt;/a> — community troubleshooting threads&lt;/li>
&lt;li>&lt;a href="https://www.minisforum.com/" rel="noopener">Minisforum MS-01 product page&lt;/a> — manufacturer specifications&lt;/li>
&lt;li>&lt;a href="https://www.asus.com/displays-desktops/nucs/" rel="noopener">ASUS NUC 14 Pro product page&lt;/a> — manufacturer specifications&lt;/li>
&lt;li>&lt;a href="https://ark.intel.com/" rel="noopener">Intel ARK N100 / N305 specifications&lt;/a> — official CPU specifications&lt;/li>
&lt;li>&lt;a href="https://www.servethehome.com/" rel="noopener">ServeTheHome mini-PC reviews&lt;/a> — third-party power and performance measurements&lt;/li>
&lt;/ul>
&lt;p>Email corrections to &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a>.&lt;/p>
&lt;hr>
&lt;p>&lt;em>After Proxmox is running: the &lt;a href="https://techfuelhq.com/tutorials/zfs-proxmox-pool-setup-arc-tuning-2026/">ZFS pool setup guide&lt;/a> covers creating RAIDZ1/mirror pools and tuning ARC for a shared host. The &lt;a href="https://techfuelhq.com/tutorials/docker-compose-starter-stack-homelab-2026/">Docker Compose starter stack&lt;/a> gets NPM, Portainer, and Uptime Kuma running in an LXC with working compose files. The &lt;a href="https://techfuelhq.com/tutorials/proxmox-backup-server-3-2-1-2026/">Proxmox Backup Server guide&lt;/a> is the 3-2-1 backup setup for your new VMs. The &lt;a href="https://techfuelhq.com/tools/proxmox-capacity-planner/">Proxmox VM Capacity Planner&lt;/a> tells you how many VMs your mini PC can realistically run.&lt;/em>&lt;/p></description></item><item><title>AORUS FO48U Review (2026): 48-inch 4K OLED Gaming Monitor</title><link>https://techfuelhq.com/articles/aorus-fo48u-review/</link><pubDate>Sun, 01 Mar 2026 00:00:00 -0600</pubDate><guid>https://techfuelhq.com/articles/aorus-fo48u-review/</guid><description>&lt;figure style="margin:1.5rem auto;">
&lt;picture>
&lt;source srcset="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-desk-hero-night-1600w.webp 1600w, https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-desk-hero-night-800w.webp 800w, https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-desk-hero-night-400w.webp 400w" sizes="(max-width: 1200px) 100vw, 1200px" type="image/webp">
&lt;img
src="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-desk-hero-night-1600w.jpg"
srcset="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-desk-hero-night-1600w.jpg 1600w, https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-desk-hero-night-800w.jpg 800w, https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-desk-hero-night-400w.jpg 400w"
sizes="(max-width: 1200px) 100vw, 1200px"
alt="Gigabyte AORUS FO48U 48-inch 4K OLED on the TechFuelHQ desk: Yokohama night cityscape wallpaper showing perfect OLED black level, mechanical keyboard in foreground, white SFF PC build with pink RGB to the right, ambient lighting reflected on the panel"
width="1600" height="900" loading="eager" decoding="async"
style="display:block;margin:0 auto;max-width:100%;height:auto;border-radius:6px;">
&lt;/picture>
&lt;figcaption style="text-align:center;font-size:0.9rem;color:#a0a0b8;margin-top:0.5rem;">TechFuelHQ first-party photo: Gigabyte AORUS FO48U 48-inch 4K OLED on the author's primary desk, St. Louis County, MO. Lights off, no studio rig, no AI processing — the OLED black level is real, not edited. March 2026.&lt;/figcaption>
&lt;/figure>
&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-03-01 · Updated 2026-07-24 · ~12 min read · St. Louis County, MO&lt;/p>
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR · The Aorus FO48U call&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>Best for:&lt;/strong> a desk where you sit 36–48″ away, want a single 48″ 4K OLED, value DisplayPort + KVM over a smart-TV firmware stack.&lt;/li>
&lt;li>&lt;strong>Skip if:&lt;/strong> desk is shorter than 30″ (panel is too big at that distance), or you need replacement availability (FO48U is supply-constrained in 2026).&lt;/li>
&lt;li>&lt;strong>Alternative if FO48U is out of stock:&lt;/strong> &lt;a href="https://techfuelhq.com/articles/lg-c4-42-vs-aorus-fo48u-2026/">LG C4 42-inch (full comparison)&lt;/a>. Same WOLED panel family, smaller, more available, HDMI-only.&lt;/li>
&lt;li>&lt;strong>GPU pairing:&lt;/strong> RTX 4080 / 5080 / RX 7900 XTX / 9070 XT class for 4K 120 Hz high settings (see the &lt;a href="https://techfuelhq.com/pc-builds/2500-dollar-7800x3d-rtx-5080-4k-build-2026/">$2,500 7800X3D + RTX 5080 4K build&lt;/a>).&lt;/li>
&lt;li>&lt;strong>Don't:&lt;/strong> Park a static taskbar on it. Hide the taskbar, dark mode the OS, and the OLED outlasts its warranty.&lt;/li>
&lt;/ul>
&lt;p style="margin:0.75rem 0 0 0;font-size:0.9rem;color:#a0a0b8;">48″ 4K OLED · 120 Hz · DisplayPort 1.4 + 2 × HDMI 2.1 · Built-in KVM · Retail $999–$1,199 new, $600–$900 used (mid-2026 street, supply-constrained).&lt;/p>
&lt;/div>
&lt;h2 id="key-takeaways">Key takeaways&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>What it is:&lt;/strong> The Gigabyte AORUS FO48U is a 48-inch 4K (3840×2160) 120 Hz LG WOLED gaming monitor — the same WOLED panel family as the LG C1.&lt;/li>
&lt;li>&lt;strong>Why pick it over an LG OLED:&lt;/strong> It adds DisplayPort 1.4, two HDMI 2.1 inputs, a built-in KVM switch, and proper monitor OSD controls — features the HDMI-only LG OLEDs lack.&lt;/li>
&lt;li>&lt;strong>Price (mid-2026):&lt;/strong> Roughly $600–$900 used and $999–$1,199 new, but supply-constrained — it launched in 2022 and Gigabyte hasn&amp;rsquo;t refreshed it.&lt;/li>
&lt;li>&lt;strong>Best for:&lt;/strong> A deep desk where you sit 36–48 inches away and want a single 48-inch panel; skip it if your desk is under 30 inches or you need guaranteed replacement stock.&lt;/li>
&lt;li>&lt;strong>GPU pairing:&lt;/strong> RTX 4080 / 5080 or RX 7900 XTX / 9070 XT class for 4K 120 Hz at high settings; the LG C4 42-inch is the more available alternative if 48 inches is too big.&lt;/li>
&lt;/ul>
&lt;h2 id="specs-at-a-glance--cited-2026-06-10">Specs at a glance — cited 2026-06-10&lt;/h2>
&lt;p>All specs below from the &lt;a href="https://www.gigabyte.com/Monitor/AORUS-FO48U" rel="noopener">Gigabyte AORUS FO48U product page&lt;/a> (manufacturer specification sheet, accessed 2026-06-10).&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Spec&lt;/th>
&lt;th scope="col">Value&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Panel&lt;/td>
&lt;td>48-inch LG WOLED (4th-gen)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Resolution&lt;/td>
&lt;td>3840 × 2160 (4K UHD)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Refresh rate&lt;/td>
&lt;td>120 Hz&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Response time&lt;/td>
&lt;td>1 ms GtG&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Brightness (HDR peak)&lt;/td>
&lt;td>800 nits (HDR), 130 nits (SDR full-screen)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Color&lt;/td>
&lt;td>DCI-P3 98%, 10-bit&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Inputs&lt;/td>
&lt;td>1× DisplayPort 1.4, 2× HDMI 2.1, USB-C with 18W PD&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>USB hub&lt;/td>
&lt;td>2× USB-A 3.0 + KVM switch&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Speakers&lt;/td>
&lt;td>2× 15W + 20W woofer&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Stand&lt;/td>
&lt;td>VESA 300×300, integrated&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Variable refresh&lt;/td>
&lt;td>AMD FreeSync Premium, NVIDIA G-Sync Compatible&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Power (typ.)&lt;/td>
&lt;td>~95–120W (cited from Gigabyte spec sheet)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>If you ask anyone for a 4K OLED gaming recommendation you're going to hear LG. The C1, the C2, the C3, the C4 — doesn't matter which year, it's always LG. And they're good, I'm not arguing that.&lt;/p>
&lt;p>But I'm not using an LG. I'm using a Gigabyte AORUS FO48U, which is a 48-inch 4K OLED that basically nobody talks about, and it might be the single biggest upgrade I've made to my setup in recent memory. Not the GPU. Not the CPU. The monitor.&lt;/p>
&lt;h2>How I Ended Up With This Thing&lt;/h2>
&lt;p>I wasn't planning on buying a Gigabyte monitor. I was looking at LG OLEDs like everyone else, going back and forth between the 48-inch C1 and waiting for a sale on the C2. Then I saw the FO48U on a Newegg deal — I think it was around $800 or $900 at the time — and I started reading about it.&lt;/p>
&lt;p>Turns out it uses the same LG WOLED panel that's in the C1. Same blacks, same contrast, same pixel response times. But Gigabyte added a DisplayPort 1.4 input, a built-in KVM switch, a USB hub, and proper monitor OSD controls instead of LG's TV interface. For less money.&lt;/p>
&lt;p>I bought it that week. I've been using it as my daily driver for both gaming and work since then, sitting about three feet from a 48-inch OLED, which sounds insane until you actually try it.&lt;/p>
&lt;div class="visual-block">
&lt;div style="background:#0a0a23;padding:28px 24px 20px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#e8e8f0;border-radius:8px;">
&lt;div style="text-align:center;margin-bottom:24px;">
&lt;div style="font-size:18px;font-weight:600;letter-spacing:-0.3px;">AORUS FO48U — specs at a glance&lt;/div>
&lt;div style="font-size:12px;color:#9a9ab5;margin-top:5px;">Street pricing as of March 2026&lt;/div>
&lt;/div>
&lt;div style="max-width:480px;margin:0 auto;">
&lt;div style="background:rgba(80,144,224,0.06);border:1px solid rgba(80,144,224,0.15);border-radius:10px;padding:14px 16px;">
&lt;div style="display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid rgba(255,255,255,0.04);">&lt;span style="font-size:12px;color:#7a7a96;">Panel&lt;/span>&lt;span style="font-size:13px;font-weight:500;color:#5090e0;">48″ LG WOLED 4K&lt;/span>&lt;/div>
&lt;div style="display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid rgba(255,255,255,0.04);">&lt;span style="font-size:12px;color:#7a7a96;">Resolution&lt;/span>&lt;span style="font-size:13px;font-weight:500;color:#c8c8dc;">3840 × 2160&lt;/span>&lt;/div>
&lt;div style="display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid rgba(255,255,255,0.04);">&lt;span style="font-size:12px;color:#7a7a96;">Refresh rate&lt;/span>&lt;span style="font-size:13px;font-weight:500;color:#c8c8dc;">120 Hz&lt;/span>&lt;/div>
&lt;div style="display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid rgba(255,255,255,0.04);">&lt;span style="font-size:12px;color:#7a7a96;">Inputs&lt;/span>&lt;span style="font-size:13px;font-weight:500;color:#5090e0;">1× DP 1.4 + 2× HDMI 2.1&lt;/span>&lt;/div>
&lt;div style="display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid rgba(255,255,255,0.04);">&lt;span style="font-size:12px;color:#7a7a96;">KVM switch&lt;/span>&lt;span style="font-size:13px;font-weight:500;color:#5dca7a;">Built-in&lt;/span>&lt;/div>
&lt;div style="display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid rgba(255,255,255,0.04);">&lt;span style="font-size:12px;color:#7a7a96;">Speakers&lt;/span>&lt;span style="font-size:13px;font-weight:500;color:#c8c8dc;">2×15W + 20W sub&lt;/span>&lt;/div>
&lt;div style="display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid rgba(255,255,255,0.04);">&lt;span style="font-size:12px;color:#7a7a96;">Adaptive sync&lt;/span>&lt;span style="font-size:13px;font-weight:500;color:#c8c8dc;">FreeSync + G-Sync&lt;/span>&lt;/div>
&lt;div style="display:flex;justify-content:space-between;padding:9px 0;">&lt;span style="font-size:12px;color:#7a7a96;">Street price&lt;/span>&lt;span style="font-size:15px;font-weight:600;color:#5dca7a;">$600–$900 used&lt;/span>&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="text-align:right;margin-top:12px;font-size:10px;color:#44445a;">techfuelhq.com · March 2026&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2>What's Good&lt;/h2>
&lt;p>Okay so the obvious stuff first — it's an OLED. Blacks are black. Not dark gray, not "pretty close to black" — actually off. Every OLED review says this and they're all correct and I don't have anything new to add there.&lt;/p>
&lt;p>The thing that's wild about this monitor specifically, and the reason I keep recommending it to people, is everything around the panel. The build quality is seriously impressive. When this thing is on, there's essentially no visible bezel — it's just screen. It doesn't feel like a cheap TV repurposed as a monitor. It feels like a piece of equipment.&lt;/p>
&lt;p>DisplayPort 1.4. This is the big one for PC users and it's the main reason I went with this over the LG. The C1 and C2 are HDMI-only, so you need HDMI 2.1 on your GPU to get 4K 120Hz. Anyone who's dealt with HDMI 2.1 handshake issues on a PC knows how annoying that can be — the flickering, the weird color space problems, the signal drops. The FO48U has DisplayPort AND two HDMI 2.1 ports. I run DisplayPort from my PC and it just works. No drama.&lt;/p>
&lt;p>It also has a built-in KVM switch, which I didn't care about when I bought it and now use every single day. My gaming PC and my work laptop are both plugged in, and I switch between them with one button press. Keyboard, mouse, everything follows. Before this I had a separate KVM box that cost $80 and caused input lag. Now it's just built into the monitor.&lt;/p>
&lt;p>The OSD controls are what you'd expect from an actual monitor — joystick on the back, proper settings menu, change inputs in two seconds. Compare that to the LG TVs where you're navigating webOS with a remote control to change your PC's color settings. That drives me crazy. The FO48U is a monitor that happens to be 48 inches, not a TV pretending to be a monitor.&lt;/p>
&lt;p>Oh and the speakers are weirdly good? There's a 50W system built in — two 15W speakers and a 20W woofer. I don't use them for gaming but when I'm just watching YouTube or have music on while working, they're way better than they should be. If you want real desk audio for movies or gaming, the built-ins still won't match a dedicated &lt;a href="https://techfuelhq.com/articles/best-soundbar-pc-desk-2026/">soundbar for a PC desk&lt;/a> — but for casual use they hold up.&lt;/p>
&lt;h2>A Note About the Old Reviews&lt;/h2>
&lt;p>If you go research this monitor right now, you're going to find reviews from 2021 and 2022 complaining about aggressive auto-dimming, the brightness limiter being too heavy-handed, and a few other firmware quirks. Those were real issues at the time. They've been patched out through firmware updates a long time ago. The monitor I'm using today does not have those problems. Just keep that in mind when you're reading old reviews — the FO48U in its current firmware state is a very different experience from what reviewers were testing at launch.&lt;/p>
&lt;h2>What's Actually Not Great (Honestly Not Much)&lt;/h2>
&lt;p>I've been trying to come up with a real complaint about this monitor and I'm struggling. It's been running since release. Zero burn-in. Zero dead pixels. FreeSync and G-Sync both work perfectly.&lt;/p>
&lt;p>If I have to nitpick:&lt;/p>
&lt;p>&lt;strong>48 inches on a desk is a LOT.&lt;/strong> I know I said "sitting three feet from it" like it's normal, and you do get used to it after a week or two. But the first few days I genuinely had to move my head to see health bars and minimaps in the corners. It's not a problem anymore — my eyes just adjusted — but if you're coming from a 27-inch monitor, there's an adjustment period where you feel like you're sitting in the front row of a movie theater. Some people hate that and return these big OLEDs within a week.&lt;/p>
&lt;p>&lt;strong>It maxes out at 120Hz.&lt;/strong> There are 4K OLEDs now that do 144Hz or even 240Hz. This isn't one of them. Personally I came from a 60Hz monitor and 120Hz on an OLED still feels incredibly smooth to me. Not an issue for me but worth knowing.&lt;/p>
&lt;p>&lt;strong>The HDR brightness is a touch behind the LG.&lt;/strong> Gaming in a dim room, which is how I play, I've never once noticed. Bright room with lots of ambient light, the LG might edge it out.&lt;/p>
&lt;p>&lt;strong>The "gamer features" are mostly useless.&lt;/strong> There's a built-in crosshair overlay, something called Aim Stabilizer that's supposed to reduce motion blur, and a few other gaming gimmicks in the settings. I can't use most of them because enabling FreeSync disables them. Which is fine — I'd rather have adaptive sync than an on-screen crosshair. It's not a negative really, just a settings page that exists and does nothing for me.&lt;/p>
&lt;p>And that's kind of it? The panel has been rock solid. Anyone who hasn't gamed on a large HDR OLED is going to have their mind blown by the image quality alone, regardless of which OLED they pick. But this one does it with proper monitor features at a lower price than the LG alternatives.&lt;/p>
&lt;h2>The Price Situation&lt;/h2>
&lt;p>This is the part that kills me a little bit. The FO48U launched at $1,500. That was expensive and kind of hard to justify. But I've seen it go as low as $600 on Newegg with rebates. Six hundred dollars for a 48-inch 4K OLED with DisplayPort and a KVM switch. That's genuinely absurd pricing for what you get.&lt;/p>
&lt;p>Availability is spotty now — Gigabyte hasn't refreshed this model and stock comes and goes. If you find one under $900, it's a solid buy. Under $700 it's a steal. At $600 it's one of the best deals in monitors, period.&lt;/p>
&lt;p>The current LG C5 48-inch is going for around $900 on sale and that's also great — the older C4 has been closed out and now costs more than the C5 as its stock dries up. But the C5 still doesn't have DisplayPort, still doesn't have the KVM switch, and you're still navigating webOS menus with a TV remote to change your PC settings. If you can find the FO48U in stock, it's the better choice for a PC gaming setup.&lt;/p>
&lt;h2>Compared to My Living Room TV&lt;/h2>
&lt;p>I have a Samsung 55-inch in the living room hooked up to a PS5 Pro. It's a decent TV, but every time I walk from that room to my desk and see the OLED turn on, the difference is jarring. The Samsung's blacks are gray. The motion is mushier. Colors look washed out by comparison. It's not that the Samsung is bad — it's that OLED ruins everything else.&lt;/p>
&lt;p>If you've never used an OLED and you're wondering if the hype is real — yeah, it is. It will also ruin every other screen in your house for you, which is an expensive side effect nobody warns you about.&lt;/p>
&lt;p>I keep thinking about whether there's a monitor I'd replace this with and I honestly can't come up with one. The newer LG C5 is nice but it still doesn't have DisplayPort. The 42-inch OLEDs exist now but I'm too used to 48 inches to go smaller. At the price I paid for this thing, I'd buy it again without thinking about it.&lt;/p>
&lt;p>&lt;em>Prices verified March 2026. For related builds, see our &lt;a href="https://techfuelhq.com/articles/ddr5-ram-buying-guide-2025/">DDR5 RAM Buying Guide&lt;/a>. GPU comparisons at &lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5060-ti-vs-rx-9060-xt-1440p-showdown-2026/">RTX 5060 vs RX 9060 XT&lt;/a>.&lt;/em>&lt;/p>
&lt;!-- Interactive elements (restored from pre-Hugo site) -->
&lt;h2 id="build-the-system-around-it">Build the system around it&lt;/h2>
&lt;p>The &lt;a href="https://techfuelhq.com/tools/pc-builder/">TechFuelHQ PC Builder&lt;/a> is a free, open-source picker with real socket / RAM / PSU / GPU clearance checks and a CC BY 4.0 parts dataset. Use it to size a host that actually fits the gear in this article.&lt;/p>
&lt;h2 id="first-party-photo-gallery">First-party photo gallery&lt;/h2>
&lt;p>Nine additional photos of the FO48U on my actual desk, lights off. The first five compare the Tokyo aerial wallpaper sequence across three angles plus a different content source; the next four show a Yokohama night-sky sequence at close range so you can see what per-pixel OLED black does to real content. No AI processing, no studio rig, no color grading. EXIF stripped.&lt;/p>
&lt;div class="photo-gallery" style="display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem;margin:1.5rem 0;">
&lt;figure>
&lt;picture>
&lt;source srcset="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-front-cityscape-800w.webp 800w, https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-front-cityscape-400w.webp 400w" sizes="(max-width: 600px) 100vw, 400px" type="image/webp">
&lt;img src="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-front-cityscape-800w.jpg" alt="AORUS FO48U front view with daytime cityscape wallpaper, white SFF PC visible to the right, mechanical keyboard, succulent on desk corner" width="800" height="1067" loading="lazy" decoding="async" style="display:block;width:100%;height:auto;border-radius:6px;">
&lt;/picture>
&lt;figcaption style="text-align:center;font-size:0.85rem;color:#a0a0b8;margin-top:0.4rem;">TechFuelHQ first-party photo: AORUS FO48U front view on the author's desk, St. Louis County, MO. The white SFF build to the right is the same RTX 5080 Astral rig in the &lt;a href="https://techfuelhq.com/data/gpu/rog-astral-rtx-5080-oc-2026-06-09/">open bench dataset&lt;/a>. March 2026.&lt;/figcaption>
&lt;/figure>
&lt;figure>
&lt;picture>
&lt;source srcset="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-overhead-tokyo-800w.webp 800w, https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-overhead-tokyo-400w.webp 400w" sizes="(max-width: 600px) 100vw, 400px" type="image/webp">
&lt;img src="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-overhead-tokyo-800w.jpg" alt="Overhead view of AORUS FO48U with Tokyo aerial night cityscape wallpaper, panel filling the frame, peripherals visible at the bottom" width="800" height="1067" loading="lazy" decoding="async" style="display:block;width:100%;height:auto;border-radius:6px;">
&lt;/picture>
&lt;figcaption style="text-align:center;font-size:0.85rem;color:#a0a0b8;margin-top:0.4rem;">Overhead angle. The OLED black absorbs every photon outside the bright pixels — you can see where the panel ends and the wall starts.&lt;/figcaption>
&lt;/figure>
&lt;figure>
&lt;picture>
&lt;source srcset="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-tokyo-aerial-1-800w.webp 800w, https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-tokyo-aerial-1-400w.webp 400w" sizes="(max-width: 600px) 100vw, 400px" type="image/webp">
&lt;img src="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-tokyo-aerial-1-800w.jpg" alt="AORUS FO48U showing Tokyo night aerial cityscape angle 1, head-on with Astral RTX 5080 visible at right edge" width="800" height="450" loading="lazy" decoding="async" style="display:block;width:100%;height:auto;border-radius:6px;">
&lt;/picture>
&lt;figcaption style="text-align:center;font-size:0.85rem;color:#a0a0b8;margin-top:0.4rem;">Tokyo aerial angle 1. Same wallpaper as below — included so you can compare panel uniformity across viewing angles.&lt;/figcaption>
&lt;/figure>
&lt;figure>
&lt;picture>
&lt;source srcset="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-tokyo-aerial-2-800w.webp 800w, https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-tokyo-aerial-2-400w.webp 400w" sizes="(max-width: 600px) 100vw, 400px" type="image/webp">
&lt;img src="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-tokyo-aerial-2-800w.jpg" alt="AORUS FO48U showing Tokyo night aerial cityscape angle 2, slightly different camera position" width="800" height="450" loading="lazy" decoding="async" style="display:block;width:100%;height:auto;border-radius:6px;">
&lt;/picture>
&lt;figcaption style="text-align:center;font-size:0.85rem;color:#a0a0b8;margin-top:0.4rem;">Tokyo aerial angle 2. The taskbar timestamp is intentionally visible — proves date of capture.&lt;/figcaption>
&lt;/figure>
&lt;figure>
&lt;picture>
&lt;source srcset="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-tokyo-aerial-3-800w.webp 800w, https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-tokyo-aerial-3-400w.webp 400w" sizes="(max-width: 600px) 100vw, 400px" type="image/webp">
&lt;img src="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-tokyo-aerial-3-800w.jpg" alt="AORUS FO48U showing Tokyo night aerial cityscape angle 3, third position for panel uniformity comparison" width="800" height="450" loading="lazy" decoding="async" style="display:block;width:100%;height:auto;border-radius:6px;">
&lt;/picture>
&lt;figcaption style="text-align:center;font-size:0.85rem;color:#a0a0b8;margin-top:0.4rem;">Tokyo aerial angle 3. Three angles of the same content show consistent rendering across the 48-inch panel.&lt;/figcaption>
&lt;/figure>
&lt;figure>
&lt;picture>
&lt;source srcset="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-yokohama-night-wide-1600w.webp 1600w, https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-yokohama-night-wide-800w.webp 800w, https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-yokohama-night-wide-400w.webp 400w" sizes="(max-width: 800px) 100vw, 800px" type="image/webp">
&lt;img src="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-yokohama-night-wide-1600w.jpg" alt="AORUS FO48U showing Yokohama night cityscape close-up with bright building lights against pure OLED black, demonstrating per-pixel black levels" width="1600" height="1200" loading="lazy" decoding="async" style="display:block;width:100%;height:auto;border-radius:6px;">
&lt;/picture>
&lt;figcaption style="text-align:center;font-size:0.85rem;color:#a0a0b8;margin-top:0.4rem;">Yokohama night skyline, panel-filling. The blacks are not a low backlight setting — they're individual pixels off. WOLED hardware.&lt;/figcaption>
&lt;/figure>
&lt;figure>
&lt;picture>
&lt;source srcset="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-yokohama-bay-aerial-1600w.webp 1600w, https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-yokohama-bay-aerial-800w.webp 800w, https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-yokohama-bay-aerial-400w.webp 400w" sizes="(max-width: 800px) 100vw, 800px" type="image/webp">
&lt;img src="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-yokohama-bay-aerial-1600w.jpg" alt="AORUS FO48U showing aerial Yokohama bay night cityscape, OLED contrast between water and city lights, Landmark Tower visible at right" width="1600" height="1200" loading="lazy" decoding="async" style="display:block;width:100%;height:auto;border-radius:6px;">
&lt;/picture>
&lt;figcaption style="text-align:center;font-size:0.85rem;color:#a0a0b8;margin-top:0.4rem;">Yokohama bay aerial. Notice the water rendering — dark navy gradient with discrete pin-prick reflections, no haloing.&lt;/figcaption>
&lt;/figure>
&lt;figure>
&lt;picture>
&lt;source srcset="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-yokohama-bay-side-rgb-1600w.webp 1600w, https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-yokohama-bay-side-rgb-800w.webp 800w, https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-yokohama-bay-side-rgb-400w.webp 400w" sizes="(max-width: 800px) 100vw, 800px" type="image/webp">
&lt;img src="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-yokohama-bay-side-rgb-1600w.jpg" alt="AORUS FO48U displaying Yokohama harbor night scene with mid-cityscape glow on left, harbor water in lower frame, and PC side panel with purple RGB visible at the right edge" width="1600" height="1200" loading="lazy" decoding="async" style="display:block;width:100%;height:auto;border-radius:6px;">
&lt;/picture>
&lt;figcaption style="text-align:center;font-size:0.85rem;color:#a0a0b8;margin-top:0.4rem;">Same scene, room context — the PC's purple RGB on the right is the only ambient light source. The panel is doing the rest.&lt;/figcaption>
&lt;/figure>
&lt;figure>
&lt;picture>
&lt;source srcset="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-yokohama-marine-walk-1600w.webp 1600w, https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-yokohama-marine-walk-800w.webp 800w, https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-yokohama-marine-walk-400w.webp 400w" sizes="(max-width: 800px) 100vw, 800px" type="image/webp">
&lt;img src="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-yokohama-marine-walk-1600w.jpg" alt="AORUS FO48U displaying Yokohama Marine and Walk venue with dome arena and waterfront at night, mid-tier city detail visible across the 48-inch panel" width="1600" height="1200" loading="lazy" decoding="async" style="display:block;width:100%;height:auto;border-radius:6px;">
&lt;/picture>
&lt;figcaption style="text-align:center;font-size:0.85rem;color:#a0a0b8;margin-top:0.4rem;">Yokohama Marine &amp;amp; Walk venue, dome arena and waterfront. Detail in the city is preserved without the blooming you get on LCD HDR.&lt;/figcaption>
&lt;/figure>
&lt;/div>
&lt;h2 id="operator-verified-osd-configuration">Operator-verified OSD configuration&lt;/h2>
&lt;p>These are screenshots of my actual on-screen-display menus on the FO48U I run every day, captured 2026-06-10. They confirm the panel is being driven at native 3840×2160 at 120 Hz over DisplayPort with HDR Vivid and AMD FreeSync Premium engaged — the spec sheet states, but most reviewers don&amp;rsquo;t show, what the user actually sees when they crack open the menus.&lt;/p>
&lt;div class="fo48u-gallery" style="display:grid;grid-template-columns:repeat(auto-fit,minmax(380px,1fr));gap:1rem;margin:1.5rem 0;">
&lt;figure>
&lt;picture>
&lt;source srcset="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-osd-gaming-settings-800w.webp 800w, https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-osd-gaming-settings-400w.webp 400w" sizes="(max-width: 600px) 100vw, 400px" type="image/webp">
&lt;img src="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-osd-gaming-settings-800w.jpg" alt="AORUS FO48U OSD Gaming menu showing Resolution 3840x2160, Black Equalizer 12, Aim Stabilizer OFF, Refresh Rate 120Hz, AMD FreeSync Premium ON, Picture Mode HDR Vivid" width="800" height="600" loading="lazy" decoding="async" style="display:block;width:100%;height:auto;border-radius:6px;">
&lt;/picture>
&lt;figcaption style="text-align:center;font-size:0.85rem;color:#a0a0b8;margin-top:0.4rem;">Gaming OSD — Resolution 3840×2160, Refresh Rate 120Hz, AMD FreeSync Premium ON, Picture Mode HDR Vivid. The real signal path, verified.&lt;/figcaption>
&lt;/figure>
&lt;figure>
&lt;picture>
&lt;source srcset="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-osd-picture-settings-800w.webp 800w, https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-osd-picture-settings-400w.webp 400w" sizes="(max-width: 600px) 100vw, 400px" type="image/webp">
&lt;img src="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-osd-picture-settings-800w.jpg" alt="AORUS FO48U OSD Picture menu showing HDR Vivid mode, Brightness 100, Contrast 55, Sharpness 5, Gamma ST2084 PQ curve, Color Temp User Define" width="800" height="600" loading="lazy" decoding="async" style="display:block;width:100%;height:auto;border-radius:6px;">
&lt;/picture>
&lt;figcaption style="text-align:center;font-size:0.85rem;color:#a0a0b8;margin-top:0.4rem;">Picture OSD — HDR Vivid, Brightness 100, Contrast 55, Gamma ST2084 (the PQ curve = proper HDR10 tone mapping), Color Temp User Define.&lt;/figcaption>
&lt;/figure>
&lt;figure>
&lt;picture>
&lt;source srcset="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-osd-game-assist-close-800w.webp 800w, https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-osd-game-assist-close-400w.webp 400w" sizes="(max-width: 600px) 100vw, 400px" type="image/webp">
&lt;img src="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-osd-game-assist-close-800w.jpg" alt="AORUS FO48U OSD Game Assist menu close-up showing FPS readout 120, Gaming Timer, Gaming Counter, Refresh Rate, Info Location and on-screen 120Hz indicator" width="800" height="600" loading="lazy" decoding="async" style="display:block;width:100%;height:auto;border-radius:6px;">
&lt;/picture>
&lt;figcaption style="text-align:center;font-size:0.85rem;color:#a0a0b8;margin-top:0.4rem;">Game Assist OSD — the panel's own 120 FPS readout in the bottom-right, confirming the refresh rate live.&lt;/figcaption>
&lt;/figure>
&lt;figure>
&lt;picture>
&lt;source srcset="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-osd-dashboard-800w.webp 800w, https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-osd-dashboard-400w.webp 400w" sizes="(max-width: 600px) 100vw, 400px" type="image/webp">
&lt;img src="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-osd-dashboard-800w.jpg" alt="AORUS FO48U OSD Dashboard widget configuration showing CPU Temperature, CPU Frequency, CPU Fan Speed, CPU Usage Rate, GPU Temperature, GPU Frequency, GPU Fan Speed, GPU Usage Rate, AORUS Mouse DPI options" width="800" height="600" loading="lazy" decoding="async" style="display:block;width:100%;height:auto;border-radius:6px;">
&lt;/picture>
&lt;figcaption style="text-align:center;font-size:0.85rem;color:#a0a0b8;margin-top:0.4rem;">Dashboard widget — the FO48U can overlay CPU + GPU temp, frequency, fan, and usage directly on the panel. None of the comparable LG OLEDs do this.&lt;/figcaption>
&lt;/figure>
&lt;figure>
&lt;picture>
&lt;source srcset="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-osd-display-menu-800w.webp 800w, https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-osd-display-menu-400w.webp 400w" sizes="(max-width: 600px) 100vw, 400px" type="image/webp">
&lt;img src="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-osd-display-menu-800w.jpg" alt="AORUS FO48U OSD Display menu showing Input selector, KVM submenu, HDR submenu, RGB Range, Overscan" width="800" height="600" loading="lazy" decoding="async" style="display:block;width:100%;height:auto;border-radius:6px;">
&lt;/picture>
&lt;figcaption style="text-align:center;font-size:0.85rem;color:#a0a0b8;margin-top:0.4rem;">Display menu — the KVM submenu is real and accessible from a top-level OSD, not buried in a service menu.&lt;/figcaption>
&lt;/figure>
&lt;figure>
&lt;picture>
&lt;source srcset="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-osd-root-menu-800w.webp 800w, https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-osd-root-menu-400w.webp 400w" sizes="(max-width: 600px) 100vw, 400px" type="image/webp">
&lt;img src="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-osd-root-menu-800w.jpg" alt="AORUS FO48U OSD root menu showing Setting, Dashboard, Exit, Game Assist, Power Off tiles in orange Aorus theme" width="800" height="600" loading="lazy" decoding="async" style="display:block;width:100%;height:auto;border-radius:6px;">
&lt;/picture>
&lt;figcaption style="text-align:center;font-size:0.85rem;color:#a0a0b8;margin-top:0.4rem;">OSD root — the joystick under the bezel opens this. Settings, Dashboard, Game Assist, Power Off, one tap each.&lt;/figcaption>
&lt;/figure>
&lt;/div>
&lt;h2 id="the-hardware-itself">The hardware itself&lt;/h2>
&lt;p>Three shots that show the FO48U the way it actually sits on a desk: front-of-house with the soundbar and PC tower, the back of the monitor with the tripod mount, and the I/O cluster.&lt;/p>
&lt;div class="fo48u-gallery" style="display:grid;grid-template-columns:repeat(auto-fit,minmax(380px,1fr));gap:1rem;margin:1.5rem 0;">
&lt;figure>
&lt;picture>
&lt;source srcset="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-desk-hero-soundbar-1600w.webp 1600w, https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-desk-hero-soundbar-800w.webp 800w, https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-desk-hero-soundbar-400w.webp 400w" sizes="(max-width: 1200px) 100vw, 1200px" type="image/webp">
&lt;img src="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-desk-hero-soundbar-1600w.jpg" alt="AORUS FO48U on desk with mechanical keyboard, soundbar below, and white SFF PC build with purple RGB visible on the right showing GeForce RTX branding" width="1600" height="1200" loading="lazy" decoding="async" style="display:block;width:100%;height:auto;border-radius:6px;">
&lt;/picture>
&lt;figcaption style="text-align:center;font-size:0.85rem;color:#a0a0b8;margin-top:0.4rem;">The full desk setup — FO48U on a tripod-style mount with a soundbar below, mechanical keyboard, and the daily-driver SFF build with purple RGB to the right.&lt;/figcaption>
&lt;/figure>
&lt;figure>
&lt;picture>
&lt;source srcset="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-back-mount-1600w.webp 1600w, https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-back-mount-800w.webp 800w, https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-back-mount-400w.webp 400w" sizes="(max-width: 800px) 100vw, 800px" type="image/webp">
&lt;img src="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-back-mount-1600w.jpg" alt="Back of the AORUS FO48U showing the VESA-mount adapter plate and tripod-style stand bracket with cable routing" width="1600" height="1200" loading="lazy" decoding="async" style="display:block;width:100%;height:auto;border-radius:6px;">
&lt;/picture>
&lt;figcaption style="text-align:center;font-size:0.85rem;color:#a0a0b8;margin-top:0.4rem;">Back of the panel — VESA adapter plate and tripod-style stand. The chassis is shallow enough to live on a normal desk without crowding.&lt;/figcaption>
&lt;/figure>
&lt;figure>
&lt;picture>
&lt;source srcset="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-port-cluster-1600w.webp 1600w, https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-port-cluster-800w.webp 800w, https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-port-cluster-400w.webp 400w" sizes="(max-width: 800px) 100vw, 800px" type="image/webp">
&lt;img src="https://techfuelhq.com/images/articles/aorus-fo48u/aorus-fo48u-port-cluster-1600w.jpg" alt="AORUS FO48U port cluster showing two USB-A downstream, USB-B upstream, USB-C, two HDMI 2.1, 3.5mm headphone output, and DisplayPort 1.4" width="1600" height="2133" loading="lazy" decoding="async" style="display:block;width:100%;height:auto;border-radius:6px;">
&lt;/picture>
&lt;figcaption style="text-align:center;font-size:0.85rem;color:#a0a0b8;margin-top:0.4rem;">The side I/O — USB-A x2, USB-B upstream, USB-C, two HDMI 2.1, 3.5mm headphone, with DisplayPort 1.4 around the back. This is the cluster that makes the KVM work.&lt;/figcaption>
&lt;/figure>
&lt;/div>
&lt;h2 id="wallpaper-engine-at-4k-120-hz">Wallpaper Engine at 4K 120 Hz&lt;/h2>
&lt;p>A 12-second clip of the panel running a Wallpaper Engine cityscape — native 4K at 120 Hz over DisplayPort, no upscaling, no frame generation. Captured 2026-06-10 from a phone tripod to avoid shake. The transition mid-clip is the wallpaper itself crossfading between two scenes; the panel response is what&amp;rsquo;s on the screen.&lt;/p>
&lt;figure style="margin:1.5rem 0;">
&lt;video controls preload="metadata" poster="/videos/articles/aorus-fo48u/aorus-fo48u-wallpaper-engine-poster-1920.jpg" width="1920" height="1080" style="display:block;width:100%;max-width:1200px;margin:0 auto;height:auto;border-radius:6px;background:#000;">
&lt;source src="https://techfuelhq.com/videos/articles/aorus-fo48u/aorus-fo48u-wallpaper-engine-1080p.webm" type="video/webm">
&lt;source src="https://techfuelhq.com/videos/articles/aorus-fo48u/aorus-fo48u-wallpaper-engine-1080p.mp4" type="video/mp4">
Your browser does not support the video tag. &lt;a href="https://techfuelhq.com/videos/articles/aorus-fo48u/aorus-fo48u-wallpaper-engine-1080p.mp4">Download the MP4&lt;/a>.
&lt;/video>
&lt;figcaption style="text-align:center;font-size:0.85rem;color:#a0a0b8;margin-top:0.4rem;">FO48U running a Wallpaper Engine cityscape at native 3840×2160 × 120 Hz over DisplayPort 1.4. Captured 2026-06-10.&lt;/figcaption>
&lt;/figure>
&lt;h2 id="sources-and-methodology">Sources and methodology&lt;/h2>
&lt;p>This review combines first-party hands-on use of the FO48U I bought and run every day (photography, OSD configuration screenshots, the wallpaper-engine video, and the daily-driver impressions throughout the text) with the published third-party panel testing and pricing snapshots cited inline.&lt;/p>
&lt;p>&lt;strong>Primary sources cited:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.gigabyte.com/Monitor/AORUS-FO48U" rel="noopener">Gigabyte AORUS FO48U product page&lt;/a> — manufacturer specifications&lt;/li>
&lt;li>LG Display WOLED panel datasheet — base panel specifications&lt;/li>
&lt;li>&lt;a href="https://www.rtings.com/monitor/reviews" rel="noopener">RTINGS.com FO48U review&lt;/a> — third-party panel calibration testing (search for FO48U)&lt;/li>
&lt;li>&lt;a href="https://tftcentral.co.uk/" rel="noopener">TFTCentral OLED testing&lt;/a> — third-party brightness, motion clarity, and HDR benchmarks&lt;/li>
&lt;li>&lt;a href="https://www.aorus.com/" rel="noopener">AORUS direct&lt;/a>, Amazon, &lt;a href="https://www.bhphotovideo.com/" rel="noopener">B&amp;amp;H&lt;/a>, &lt;a href="https://www.ebay.com/" rel="noopener">eBay refurb&lt;/a> — retail pricing snapshots&lt;/li>
&lt;/ul>
&lt;p>Email corrections to &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a>.&lt;/p></description></item></channel></rss>