Paperless-ngx turns your paperwork into a searchable archive. Scan or upload a letter, bill or receipt, and it reads the text, files it with tags and dates, and lets you find it again in seconds.
On this page
- At a glance
- What it's good for
- Signing in
- Getting documents in
- The document language
- Adding people
- On your phone, away from home
- Good to know
- What the install asks
- Addresses and ports
- Settings
- In its config file
- Tools
- Works with
- Privacy and security
- What leaves this server
- What LibrePortal turns off
- Sources
- Under the hood
Good to know before you install
Uses about 750 MB of memory at rest and up to 1.1 GB while it reads a document; each extra document language adds memory and disk.
At a glance#
- What it is
- Document Archive Productivity
- Where it opens
- Web Interface
On its own port at
http://your-server:port, ordocs.your-domainonce you have a domain - Updates
- When you choose New versions wait for you to press Update
- Backups
- Included Part of the daily backup when that's switched on
- Copies
- One per server
- Needs
- memory
What it's good for#
Most homes have a drawer, or a box, of letters that might matter one day: bank statements, payslips, the boiler warranty, the council tax bill. Paperless-ngx is where they go instead. You give it a scan or a PDF, it reads every word on the page (that's the OCR, optical character recognition), and from then on you can search for "boiler" and find the warranty. It also learns as you go. Once you've tagged a few letters from your energy supplier, it starts tagging the next ones for you.
The originals are kept untouched, alongside a searchable PDF copy, so nothing you put in is altered.
Paperless-ngx or Stirling PDF?
Stirling PDF is a toolbox: merge, split, compress or convert a PDF and take the result away. Paperless-ngx is an archive: it keeps your documents and helps you find them. Many people use both.
Signing in#
The account is called admin. Paperless makes it itself on its very first start, after setting up its database and before its web page ever answers, so nobody can get in first. Its password is in the Login Details shown when the install finished; press Welcome on the app's page to see it again. Sign-ups are off.
That first start takes a few minutes. Once it's up, LibrePortal checks that Paperless refuses anyone without a login and accepts yours; if it ever answered without one, LibrePortal stops it rather than leave your documents open.
If you reinstall Paperless and it keeps its old database, the admin keeps the old password. Use Reset User Password on the Tools tab to set a new one; for admin, the new password replaces the one in Login Details.
Getting documents in#
There are four ways in, and you can mix them.
Upload in the browser. Drag files onto the Paperless page, or use the upload button on its dashboard. This is the easy one for a scan you've just made or a PDF you've downloaded.
From your phone. There's no official app, but Paperless-ngx's own wiki lists several community ones. Paperless Mobile (Android) and Swift Paperless (iPhone and iPad) are two popular choices, and many of them can scan a letter with the camera and upload it in one go. Give the app your Paperless address and your username and password.
The consume folder. Paperless watches a folder called consume in its app folder, which on a standard install is /libreportal-containers/paperless/consume on the server. Anything you put there is imported and then removed from the folder. That's handy for a scanner that can save to a network folder, but LibrePortal doesn't share that folder over your network for you; you'd need to copy files in on the server yourself, or set up a share for it.
Email. Paperless can log in to a mailbox and import the attachments from the messages you choose. Set it up on Paperless's own Mail page: add a mail account (the mailbox's IMAP address and login), then a mail rule saying which messages to take and what to do with them afterwards. Any mailbox with IMAP works. If you run Stalwart on the same server, its row under Works with on Paperless's page shows whether a mail account has been set up yet and tells you how if not.
PDFs, images and text
LibrePortal runs Paperless without the two extra services it needs for Word, Excel, PowerPoint and email files, because together they use about a gigabyte of memory before a single document arrives. PDFs, scans and photos (JPEG, PNG, TIFF and the like) and plain text all work. Save anything else as a PDF first.
The document language#
Paperless reads documents in the language set by Document Language on the Config tab, as a short code: eng for English, deu for German, fra for French. If your paperwork is in more than one language, join them with a plus: deu+eng.
It's worth setting before you add much, because it only affects documents as they're read. Changing it later applies to new documents; ones already in the archive keep the text they were read with, unless you ask Paperless to read them again from its document list.
English, German, French, Italian and Spanish are built in. Any other language is downloaded each time Paperless starts, so that start needs the internet. Don't add languages you don't have documents in: each one makes every document slower to read, uses more memory, and makes the results worse, not better.
Adding people#
Each person can have their own login, and Paperless lets you decide who sees which documents. That's all done on Paperless's own Users & Groups page, signed in as the admin, because that's also where the permissions are. The Tools tab has List Users and Reset User Password for when someone is locked out.
On your phone, away from home#
Paperless is Private to start with: only your trusted places, like your home network and your devices on the LibrePortal VPN, can reach it. What it holds is your post, bills and papers, so that's the right default. To use a phone app when you're out, connect the phone to the VPN first.
You can make it public, but think twice. And don't put a password prompt from Traefik in front of it either: the phone apps talk to the same address and can't get past one.
Good to know#
- Memory. Paperless uses about 750 MB sitting still and up to 1.1 GB while it reads a document. Every extra document language adds to that.
- Updates wait for you. Every Paperless release changes its database the first time it starts, with no way back, so LibrePortal pins an exact version (3.2.1) and nothing changes until you press Update. That only brings rebuilds of the same version, with a backup taken first; if the Updates tab offers a newer release, Upgrade can't move Paperless to it yet.
- Backups include the database (tags, correspondents and the text of every document), the archive itself, and the search index. The consume folder is a drop box and isn't backed up, so don't leave anything there that isn't also somewhere else.
- One per server. Paperless can't run as several copies side by side.
- With a domain, it's at
docs.<your domain>. Signing in works on the domain, on HTTPS and on the plain address alike, with nothing to set.
What the install asks#
When you install Paperless-ngx, LibrePortal asks for a little more than usual before it starts:
- Extras. Change them later under Tools.
Addresses and ports#
Paperless-ngx has one port. LibrePortal picks a free port number for each when you install, so yours will differ from anyone else's. The Config tab's Network section shows them, and the app's Open button uses the right one.
| What it is | Who can reach it | With a domain |
|---|---|---|
| Web Interface | Trusted places only | docs.your-domain |
Settings#
These are Paperless-ngx's own settings on its Config tab. The settings every app shares, like backups, updates and where its data lives, are explained in App pages and settings.
| Setting | What it does | Starts as |
|---|---|---|
| Document Language | e.g. eng, or deu+eng. More languages use more memory. | eng |
| AI Model | The Ollama model for AI suggestions, fetched when they are turned on. Slow without a graphics card. | llama3.2:3b |
In its config file#
A few more aren't on the Config tab yet. They live in the app's config file, described here so you know they exist. How to change them.
| Setting | What it does | Starts as |
|---|---|---|
NameCFG_PAPERLESS_DISPLAY_NAME |
What this app is called on your dashboards. Leave empty to use its usual name | Empty |
Show on the LibrePortal DashboardCFG_PAPERLESS_SHOW_ON_DASHBOARD |
Whether this app gets a shortcut on the front page of the LibrePortal WebUI, separate from any Dashy dashboard Choices: true, false |
true |
ExtrasCFG_PAPERLESS_EXTRAS |
Optional parts of Paperless that are on; change them from the Tools tab | Empty |
Update checkCFG_PAPERLESS_UPDATE_CHECK |
Whether Paperless may ask GitHub if a newer version exists Choices: true, false |
false |
Tools#
Paperless-ngx's Tools tab has 3 buttons for jobs you'd otherwise need a terminal for. Each one runs as a task, so you can watch it on the Tasks page and read what it did. More about Tools.
AI suggestions with the Ollama app. Removing it keeps your documents and tags as they are.
Set a new password for an existing user. Leave blank to generate one.
List every active user.
Works with#
These are the other apps Paperless-ngx knows how to work with. Once it's installed, its page shows the same list with whether each one is connected. How this works.
- Email: Sends password resets and shared-document emails through your mail server, from an account of its own. Needs the mail server to have a real certificate. LibrePortal sets this up by itself when both are installed.
- Mail: Can collect document attachments from a mailbox. There's nothing to switch on; LibrePortal shows whether it can work and lets you check.
- AI suggestions: Suggests a title, tags and sender with a model on this server.
- Grafana: Shows dashboards for the apps that have one. works with every app
- Prometheus: Collects metrics from the apps that can export them. works with every app
- Uptime Kuma: Watches your apps and shows when one goes down. works with every app
Privacy and security#
All clear Paperless keeps your scanned documents on your server. LibrePortal turns off its GitHub update check, so it contacts nobody.
What leaves this server#
Nothing leaves this server on its own.
What LibrePortal turns off#
- Update check against GitHub (switchable in Config)
Licence: GPL-3.0. Audited: 21 October 2026. See the privacy of every app and the Promise.
Sources#
Under the hood#
- It runs these images:
paperlessngx/paperless-ngx:3.2.1@sha256:5fa76604a81df6945086e0837b14b56543d137e8ce4f311cc5d9ebe907e74e79,postgres:18.6@sha256:979bccfde35445db618c65107d27d08c6c21339d8dc3ad4c830c6633947be0e4,valkey/valkey:9.1.2-alpine@sha256:48332870af354a799964c0012ae1194a0bf2bf894eb508f945810596dc2d8d11. The version is pinned, and moves only when you update it. - It can sit behind Authelia's sign-in once Authelia is installed.
- Its own project and documentation: github.com/paperless-ngx/paperless-ngx
Ports, settings, tools and connections on this page are read from LibrePortal v0.10.97's app catalogue each time the guide is built.