Paperless‑ngx is an open‑source document management system (DMS) that turns your physical and digital documents into a searchable, organized, long‑term archive. It’s a community‑maintained evolution of the original Paperless project, with major improvements in performance, OCR accuracy, automation, and UI design.
Paperless‑ngx performs OCR on scanned documents using the Tesseract engine, supporting 100+ languages. This makes PDFs and images fully searchable.
It automatically organizes documents using:
All of this is searchable and filterable in the UI.
It uses ML to automatically assign tags, document types, and correspondents based on document content.
It handles:
Documents are stored as PDF/A, a format designed for long‑term preservation, alongside the original unmodified files.
All data stays on your server; nothing is transmitted externally.
sudo apt update && sudo apt upgrade -ycurl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh
sudo apt install docker-compose-pluginsudo usermod -aG docker $USERsudo systemctl enable dockersudo rebootdocker run hello-worldmkdir ~/docker mkdir ~/docker/paperlessngx
In ~/docker/paperlessngx, on the source and target devices, create docker-compose.yml
services:
broker:
image: redis:7
container_name: paperless_redis
restart: unless-stopped
volumes:
- redis_data:/data
db:
image: postgres:15
container_name: paperless_db
restart: unless-stopped
environment:
POSTGRES_DB: paperless
POSTGRES_USER: paperless
POSTGRES_PASSWORD: paperlesspassword
volumes:
- db_data:/var/lib/postgresql/data
webserver:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
container_name: paperless_web
restart: unless-stopped
depends_on:
- db
- broker
environment:
# Database settings
PAPERLESS_DBENGINE: "postgresql"
PAPERLESS_DBHOST: "db"
PAPERLESS_DBNAME: "paperless"
PAPERLESS_DBUSER: "paperless"
PAPERLESS_DBPASS: "paperlesspassword"
# Redis broker
PAPERLESS_REDIS: "redis://broker:6379"
# Admin user
PAPERLESS_USERNAME: "admin"
PAPERLESS_PASSWORD: "adminpassword"
PAPERLESS_EMAIL: "example@example.com"
# Timezone
PAPERLESS_TIME_ZONE: "America/New_York"
volumes:
- ./data/media:/usr/src/paperless/media
- ./data/documents:/usr/src/paperless/documents
ports:
- "7654:8000"
volumes:
db_data:
redis_data:
From within ~/docker/paperlessngx:
docker compose up
docker logs paperlessngx
Open your browser and go to "http://<SOURCE_DEVICE>:7654. Create an account and you can start uploading files by clicking on Upload Dockments.
If you find my content useful, please consider supporting this page: