Writing

Paperless-ngx: Scan and Search Everything

Saturday. Apr 4, 2026

Installing Paperless-ngx

This server started as a way to keep entertainment off my phone and out of the cloud. But once it was stable, it kind of turned into a tiny home “office” server too.

So I added Paperless-ngx for documents: ingest, OCR, and search. It’s the same idea as Immich, but for PDFs instead of photos — and it stays LAN-only.

For this install, I kept it simple and used the official installation script, which sets up a Docker Compose deployment for you.

1. Create the paperless-ngx app folder

This is where I run the installer and keep the generated files.

sudo mkdir -p /srv/appdata/paperless-ngx
sudo chown -R $USER:$USER /srv/appdata/paperless-ngx
cd /srv/appdata/paperless-ngx

2. Run the installation script

This is the one-liner from the docs:

bash -c "$(curl --location --silent --show-error https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/install-paperless-ngx.sh)"

The script is interactive: it asks a few setup questions, generates the config + compose files, pulls images, and starts Paperless-ngx.

3. First login

Once it’s up, I access it by local IP from another device on my network: http://<server-ip>:8000 and create an admin account.

4. Workflow

Paperless-ngx is at its best when it’s boring:

  • scan → upload / import → OCR → search later

Once it’s set, it’s just a quiet archive that makes paper stop piling up.