Paperless-NGX

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.

🧠 Core Features

  1. OCR & Text Extraction
  2. Paperless‑ngx performs OCR on scanned documents using the Tesseract engine, supporting 100+ languages. This makes PDFs and images fully searchable.

  3. Smart Organization
  4. It automatically organizes documents using:

    All of this is searchable and filterable in the UI.

  5. Machine Learning Auto‑Tagging
  6. It uses ML to automatically assign tags, document types, and correspondents based on document content.

  7. Broad File Support
  8. It handles:

  9. Long‑Term Archival
  10. Documents are stored as PDF/A, a format designed for long‑term preservation, alongside the original unmodified files.

  11. Local‑First & Private
  12. All data stays on your server; nothing is transmitted externally.

🚀 Docker Installation Steps

  1. Update your system
    sudo apt update && sudo apt upgrade -y
  2. Install Docker
    curl -fsSL https://get.docker.com -o get-docker.sh
    sudo sh get-docker.sh
  3. Install Docker Compose
    sudo apt install docker-compose-plugin
  4. Add your user to the Docker group
    sudo usermod -aG docker $USER
  5. Enable Docker at boot
    sudo systemctl enable docker
  6. Reboot
    sudo reboot
  7. Test Docker
    docker run hello-world

📁 Setup Paperless-NGX

Do this on the source and target devices:

mkdir ~/docker
mkdir ~/docker/paperlessngx

🧾 Docker Compose File

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:

▶️ Start Paperless-NGX

From within ~/docker/paperlessngx:

docker compose up

📜 View Logs

docker logs paperlessngx

🌐 Access Web Interface

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:

☕ Buy Me a Coffee