Skip to content

Self-host Paperless-ngx

updated Jul 2026prices checked · Jul 2026Install verified on Ubuntu 26.04 · Jul 2026 · how we test
We earn commissions when you shop through the links below. Full disclosure →

A self-hosted document management system that OCRs, tags, and full-text-indexes your scanned paperwork into a searchable, paperless archive.

Key facts

CategoryDocuments
LicenseGPL-3.0
StackPython, Django
Min RAM2048 MB
Official imageyes
Difficulty
Our recommendation

Pick Paperless-ngx when you want scanned paper turned into a searchable archive on hardware you control and you accept the project's own warning that it "should never be run on an untrusted host" — documents are stored in clear text, and upstream's advice is a local server at home with backups. It is GPL-3.0, Python/Django, and the compose stack is three containers: `ghcr.io/paperless-ngx/paperless-ngx`, a required Valkey (Redis-protocol) broker, and PostgreSQL (recommended) or MariaDB; SQLite is the default engine and the one upstream suggests for a Raspberry Pi. OCR runs through OCRmyPDF, and upstream's low-power guidance is about worker counts and trimming memory use — it publishes no RAM figure.

Follow the Paperless-ngx deploy guide →

What you need

  • Any VPS with at least 2048 MB of RAM
  • A domain you control — most self-hosted setups need HTTPS in front of them
  • About an afternoon — budget time for troubleshooting
Where to host itaffiliate disclosure
Hetzner Cloudrun it on
From $23.59/mo · 2 vCPU / 4 GB / 80 GB · EU + US
Get Hetzner Cloud (opens in new tab)
Kamaterafree trial
From $4/mo · 1 vCPU / 1 GB / 20 GB · US + EU + Asia
Start free on Kamatera → (opens in new tab)
DigitalOceanalso works on
From $6/mo · 1 vCPU / 1 GB / 25 GB · US + EU + Asia
Deploy on DigitalOcean → (opens in new tab)

Paid link — we earn a commission if you shop through it.

Install

Run these commands on your server:

# Paperless-ngx ships an official installer that scaffolds the compose stack
bash -c "$(curl -L https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/install-paperless-ngx.sh)"
# follow the prompts → http://SERVER_IP:8000

What you take on

Paperless-ngx's docs are good, but v3 changed several defaults and the OCR pipeline needs tuning on small boxes:

non-negotiablePAPERLESS_SECRET_KEY is required since v3 — "Paperless will refuse to start if this is not set" — and installs that relied on the old built-in default must set it to that value or invalidate every session and token. The install script generates one; hand-written compose files must add it (python3 -c "import secrets; print(secrets.token_urlsafe(64))"). v3 also requires PAPERLESS_DBENGINE=postgresql (or mariadb) explicitly, can only be upgraded to from 2.20.15, and comes with a migration guide upstream says to read first.
non-negotiableBehind a reverse proxy, or on any real hostname, set PAPERLESS_URL (no trailing slash, no path): it fills ALLOWED_HOSTS, CORS_ALLOWED_HOSTS and CSRF_TRUSTED_ORIGINS, and the CSRF list is what lets POSTs through. Left alone, PAPERLESS_ALLOWED_HOSTS defaults to *, which upstream says leaves an internet-facing install open to host-header attacks.
non-negotiableThe consume, media and data folders are chown'd to the container user at start; set USERMAP_UID and USERMAP_GID to your host user if it is not 1000, or the consumer fails with Permission denied when it tries to delete a processed file. NFS shares that refuse chown fail with Operation not permitted, and filesystems without inotify need PAPERLESS_CONSUMER_POLLING_INTERVAL set to a positive number.
non-negotiableBack up with docker compose exec -T webserver document_exporter ../export — it writes documents, thumbnails, metadata and database contents to a folder and supports incremental rsync — but an export can only be imported into the same Paperless version, and API tokens are not included. Updating is docker compose down, docker compose pull, docker compose up, which also applies migrations; take the export first.
non-negotiableThe 2 GB floor is our estimate; upstream publishes no RAM requirement. Its low-power guidance is to stay on SQLite, keep PAPERLESS_TASK_WORKERS * PAPERLESS_THREADS_PER_WORKER at or below your core count, set PAPERLESS_WEBSERVER_WORKERS=1 ("This will save some memory") and PAPERLESS_OCR_CLEAN=none, and set PAPERLESS_CONVERT_MEMORY_LIMIT (e.g. 32) if the consumer dies with "unable to extend pixel cache".

More self-hosted tools

Documents

Papra

A minimalist document management and archiving platform: upload, tag and full-text search documents, share them within organizations, and import them automatically from email or a watched folder, with text extraction from images and scans. Runs as a single container with an embedded SQLite database.
TypeScriptNode.jsSolidJSSQLite
easyRead guide →
AI Coding Agents

OpenHands

A self-hosted control center for AI coding agents: describe a task in natural language and OpenHands writes code, runs commands, and iterates on its own. It ships as Agent Canvas, an npx-installable web UI that runs its own agent or third-party agents (Claude Code, Codex, and other Agent-Client-Protocol-compatible agents), and you bring your own LLM API key (Anthropic, OpenAI, or a self-hosted OpenAI-compatible endpoint).
TypeScriptReactPython
moderateRead guide →
Project Management

Taiga

Open-source agile project management platform built around Scrum and Kanban, with backlogs, sprints, epics, user stories, issue tracking, and a wiki. The self-hosted stack is the same MPL-2.0 open-source code that powers Taiga's cloud product — self-hosting is free with no project, member, or storage caps and no feature gate; only the hosted cloud plans and an optional paid on-premise support/SLA contract sit on top of the identical software.
PythonAngularJSPostgreSQL
moderateRead guide →
AI Chat Interfaces

vLLM

High-throughput LLM inference and serving engine with PagedAttention and continuous batching — an OpenAI-compatible API server built for GPU-backed, multi-user production workloads.
PythonCUDA
moderateRead guide →

We use analytics cookies (Google Analytics, PostHog) to see which guides are useful. No ad networks, no cross-site tracking. See our privacy policy.