<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Paperless-Ngx on rHomelab</title><link>https://rhomelab.com/tags/paperless-ngx/</link><description>Recent content in Paperless-Ngx on rHomelab</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Fri, 16 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://rhomelab.com/tags/paperless-ngx/index.xml" rel="self" type="application/rss+xml"/><item><title>Self-Hosting Paperless-ngx: Turning a Pile of Scanned Paper Into a Searchable Archive</title><link>https://rhomelab.com/self-hosted/paperless-ngx-document-management/</link><pubDate>Fri, 16 Oct 2026 00:00:00 +0000</pubDate><guid>https://rhomelab.com/self-hosted/paperless-ngx-document-management/</guid><description>A practical look at running Paperless-ngx for document management, covering the consumption workflow, OCR and classification, hardware needs, and why backup matters more here than almost anywhere else in your stack.</description><content:encoded><![CDATA[<p>Most homelab stacks start with the fun stuff, media servers, dashboards, maybe a VPN. The boring problem that never goes away is paper: tax documents, insurance paperwork, warranty receipts, kids&rsquo; school forms, the occasional letter that actually matters. Paperless-ngx exists to solve exactly that, and it&rsquo;s one of the few self-hosted apps where the payoff shows up the first week instead of months later. Scan something in, and from then on you can find it by typing a word that appears anywhere in it, not by remembering which folder you filed it under three years ago.</p>
<h2 id="what-paperless-ngx-actually-does">What Paperless-ngx actually does</h2>
<p>Paperless-ngx is a document management system built around one core idea: every document gets OCR&rsquo;d on the way in, so its full text is searchable forever after, regardless of whether it started as a scanned image or a native PDF. Under the hood it&rsquo;s a Django web app backed by a database (SQLite for small single-user setups, Postgres if you want something that scales better or you&rsquo;re already running Postgres for other apps anyway), a task queue backed by Redis for the actual consumption and OCR work, and a document storage layer that keeps both the original file you fed it and a searchable, OCR&rsquo;d archive version side by side.</p>
<p>The project is a community-maintained continuation of the original Paperless, which went unmaintained; it&rsquo;s been the active, actually-updated version for years now and is what basically everyone means when they say &ldquo;paperless&rdquo; in a self-hosted context today.</p>
<h2 id="the-consumption-folder-is-the-whole-workflow">The consumption folder is the whole workflow</h2>
<p>Everything in Paperless-ngx starts with the consumption directory, a watched folder that the app polls (or watches via inotify) for new files. Drop a PDF, PNG, JPG, or a handful of other supported formats into it, and a background worker picks it up, runs OCR if the text layer isn&rsquo;t already there, extracts whatever text it can, and files the result away. That&rsquo;s the entire ingestion model, there&rsquo;s no &ldquo;upload&rdquo; button you have to click for the bulk of your documents, just a folder.</p>
<p>In practice that folder gets fed from a few different directions:</p>
<ul>
<li>A network scanner with &ldquo;scan to folder&rdquo; (SMB/FTP) pointed directly at the consumption directory, the cleanest path if your scanner supports it.</li>
<li>A flatbed or sheet-fed scanner hooked to a desktop, with the resulting PDFs synced over to the consumption folder afterward.</li>
<li>A phone, using Paperless-ngx&rsquo;s own mobile app or a general-purpose &ldquo;scan with camera&rdquo; app configured to drop its output into a synced folder. Phone-camera scans OCR noticeably worse than a real scanner on noisy or skewed pages, worth knowing before you commit to phone-only scanning for anything you&rsquo;ll actually need to search later.</li>
<li>Email, via the built-in mail fetcher, point it at an IMAP mailbox (or a dedicated folder within one) and it&rsquo;ll pull attachments in automatically, useful for e-receipts and PDF statements that already arrive as email attachments instead of paper.</li>
</ul>
<h2 id="ocr-and-why-searchability-is-the-actual-feature">OCR and why searchability is the actual feature</h2>
<p>The OCR step uses Tesseract under the hood, and it&rsquo;s genuinely the thing that makes this whole system worth running instead of just dumping scanned PDFs into a folder in Nextcloud. A scanned image, by itself, is just a picture of text to a computer, nothing in it is searchable. Paperless-ngx&rsquo;s OCR pass extracts the actual text and buries it as an invisible text layer in the archived PDF, so a full-text search for &ldquo;deductible&rdquo; or a specific policy number turns up the right document instantly, even in a stack of a few thousand scans.</p>
<p>Install the language packs for whatever language your documents are actually in, OCR accuracy for an English-only install trying to parse a document in another language is bad enough to be useless. If you deal with mixed-language paperwork, you can configure multiple languages and it&rsquo;ll try each.</p>
<p>OCR is genuinely one of the more CPU-intensive things you&rsquo;ll run in a typical homelab, noticeably more than something like Pi-hole or Uptime Kuma, though far less than video transcoding. Budget real CPU time for the consumer worker, and if you&rsquo;re bulk-importing a backlog of hundreds of old scans at once, expect that initial run to take a while and to peg a core or two for a stretch. Day-to-day ingestion of a handful of new documents a week is a non-event on almost any homelab hardware.</p>
<h2 id="classification-correspondents-document-types-tags-and-storage-paths">Classification: correspondents, document types, tags, and storage paths</h2>
<p>Where Paperless-ngx earns its name over &ldquo;a folder of searchable PDFs&rdquo; is the classification layer on top. Three core concepts organize everything:</p>
<ul>
<li><strong>Correspondents</strong> are who the document is from or to, your bank, your insurer, a specific person.</li>
<li><strong>Document types</strong> describe what it is, invoice, statement, letter, receipt.</li>
<li><strong>Tags</strong> are freeform labels you can stack arbitrarily, tax-2026, warranty, needs-action, whatever fits your own filing instincts.</li>
</ul>
<p>Paperless-ngx includes a built-in machine-learning classifier that learns from how you&rsquo;ve tagged documents in the past and starts suggesting (or, if you let it, auto-assigning) correspondents, types, and tags on new incoming documents based on patterns it&rsquo;s picked up. It&rsquo;s not magic, it needs a reasonable number of manually-tagged examples before its suggestions get genuinely useful, but once it&rsquo;s past that point it meaningfully cuts down the manual triage work on routine, recurring documents like monthly statements.</p>
<p>On top of tags, storage paths let you define a templated folder/filename structure (using the document&rsquo;s metadata, correspondent, date, type) that the underlying files get organized into on disk. Useful if you ever want to browse the raw files outside the web UI, or if you&rsquo;re nervous about Paperless-ngx&rsquo;s database being the only place that organization lives.</p>
<h2 id="where-to-run-it-and-what-it-needs">Where to run it and what it needs</h2>
<p>Paperless-ngx ships as a Docker Compose stack (web app, Redis, and optionally Postgres as separate containers), and that&rsquo;s the path of least resistance, the project&rsquo;s own documentation is built around it. It fits fine in an LXC with Docker inside, or as a straightforward Compose deployment alongside whatever else you&rsquo;re already running. For a single household&rsquo;s document volume, a couple of CPU cores and a gig or two of RAM for the always-on services is plenty, the real resource spike is transient, during active OCR consumption, not sitting idle.</p>
<p>Put it behind your existing reverse proxy with real TLS, same as anything else holding documents you don&rsquo;t want sitting on an open port. If you&rsquo;re running an SSO/forward-auth layer like Authentik or Authelia in front of your stack, Paperless-ngx supports header-based remote user auth cleanly, so you can gate it behind your IdP rather than maintaining a separate login, unlike a password vault, this one doesn&rsquo;t need to stay independent of your identity layer.</p>
<h2 id="backup-here-is-not-optional-and-its-not-like-backing-up-a-media-server">Backup here is not optional, and it&rsquo;s not like backing up a media server</h2>
<p>This is the one point worth being blunt about. If your Plex library disappears, that&rsquo;s annoying and re-rippable. If your Paperless-ngx archive disappears and you&rsquo;d already shredded the paper originals on the assumption the scan was good enough, you&rsquo;ve actually lost the document, not just the convenience of having it searchable. Treat this backup with the same seriousness you&rsquo;d give a password vault, not the same shrug you might give a media server.</p>
<p>Three things need to survive, together, as a consistent set: the database (SQLite file or Postgres dump), the <code>media</code> directory holding both the original and archived versions of every document, and the export of your actual configuration if you&rsquo;ve invested time into correspondents, types, and tags. A hypervisor-level VM backup covers the box dying, but pair it with an app-level backup (Restic or Borg, or Paperless-ngx&rsquo;s own built-in document exporter run on a schedule) that you&rsquo;ve actually tested a restore from. The export/import path (<code>document_exporter</code>/<code>document_importer</code>) is also the sanest way to move a Paperless-ngx instance between hosts if you ever rebuild.</p>
<p>On the shred-the-original question: that&rsquo;s a decision only you can make based on what the documents are and what retention requirements apply to you, this isn&rsquo;t legal advice and requirements vary by document type and jurisdiction. What&rsquo;s universally true regardless of that decision is that a scan you&rsquo;re relying on as your only copy of something deserves a tested backup before you treat the paper as disposable.</p>
<h2 id="bottom-line">Bottom line</h2>
<p>Paperless-ngx is the rare self-hosted app that pays for its setup time almost immediately, once a document is in and OCR&rsquo;d, you stop thinking about where you filed it and start just searching for it. The consumption-folder workflow makes ingestion close to zero-friction once you&rsquo;ve got a scanner or a mail fetcher feeding it, and the correspondent/type/tag classification (with the machine-learning assist once it&rsquo;s trained) keeps a few thousand documents actually navigable instead of becoming a second junk drawer. The part that deserves real attention, more than with most other apps in this category, is backup: a scanned document you&rsquo;re trusting as your only copy of something is exactly the kind of data where &ldquo;I&rsquo;ll back it up eventually&rdquo; is the wrong answer.</p>
]]></content:encoded></item></channel></rss>