The warning signal: papermerge-core issue #1318
On September 5, 2026, Eugen Ciur published issue #1318 on the papermerge/papermerge-core repository with an unambiguous title: "Looking for a maintainer". The announcement is direct: Papermerge will become a commercial SaaS product under the name Papermerge Cloud. The open source project is looking for a community maintainer within a thirty-day window. Without an identified maintainer, the repository will be archived around October 5, 2026 — tickets will remain visible but no further commits will be accepted.
This scenario is structurally different from a simply inactive project. An archived repository receives no security patches. Papermerge v3.x relies on FastAPI, React, and a REST API — a modern architecture, but one whose dependencies (Python, FastAPI, OCR libraries) regularly publish critical updates. Continuing to run an unmaintained instance means silently accumulating a security debt.
What you lose by staying on a frozen Papermerge
- No more security patches: any vulnerability discovered after archiving will remain open — FastAPI and its dependencies publish several advisories per month
- Python compatibility declining: new Python versions drop deprecated APIs; an OS update is enough to break the environment
- Orphaned plugins and integrations: third-party connectors (scanners, mail clients, webhooks) will no longer be updated to follow Papermerge's REST API evolution
- No official schema migrations: if a database bug is discovered, no fix will come from the archived repository
- No contractual support coverage possible: no vendor will cover an installation on an archived project
- Ecosystem closing in: official Docker images stop being published, and unofficial images introduce a supply chain risk
Why Paperless-ngx is the natural successor
Paperless-ngx is a community fork of paperless-ng, itself derived from Daniel Quinn's original Paperless project. It is published under the GPL-3.0 license, counts ~23,000 stars on GitHub as of September 25, 2026, and receives regular updates from a distributed team of about ten active contributors — no single maintainer.
The architecture is more mature than Papermerge v3.x for SME use: Django as the backend, Celery for asynchronous tasks, PostgreSQL or SQLite as the database, and an integrated Angular frontend. The official Docker Compose file — maintained in the repository — deploys everything with a single command. Volumes persist documents, the database, and index data.
- Multi-language OCR via Tesseract: French, Arabic, Spanish, English and dozens of other languages configurable via environment variables
- Hierarchical tags: fine-grained document organization with inherited automatic assignment rules
- Correspondents: identification of recurring senders/recipients, automatic assignment by rule
- S3-compatible storage: archive originals to an S3 or compatible bucket (MinIO, Garage) without modifying the interface
- Documented REST API: integration with external workflows (n8n, curl scripts) via
/api/documents/ - Consume folder: any file dropped in
/consumeis automatically ingested — natural connection for network scanners and mail clients
Papermerge v3 vs Paperless-ngx: comparison
Papermerge v3 vs Paperless-ngx
Scroll the table
| Criterion | Papermerge v3 | Paperless-ngx |
|---|---|---|
| Project status | Archiving announced ~Oct. 5, 2026 | Active, regular releases |
| License | Apache 2.0 | GPL-3.0 |
| Backend | FastAPI (Python) | Django + Celery (Python) |
| OCR | Tesseract (manual configuration) | Tesseract multi-language, auto-detect |
| Document organization | Hierarchical folders | Tags, correspondents, document types |
| External storage | Not native | S3 / S3-compatible (MinIO, Garage) |
| Official Docker Compose | Yes, but unmaintained after archiving | Yes, actively maintained |
| GitHub community | ~2,500 stars | ~23,000 stars |
Prerequisites before migrating
Paperless-ngx is lighter than its reputation suggests. The minimum requirements for a team of 1 to 10 users with a corpus of a few thousand documents are reasonable on a standard VPS.
- VPS: 2 vCPU / 2 GB RAM minimum — 4 GB recommended if OCR runs in parallel on multiple documents during ingestion
- Docker and Docker Compose: Docker ≥ 24, Docker Compose ≥ 2.20 (integrated plugin, not the legacy Python binary)
- 40 GB SSD storage minimum for originals + index data; plan for more depending on archive volume
- Domain or subdomain with a valid TLS certificate — Paperless-ngx does not require HTTPS but strongly recommends it for sessions and API tokens
- Root or sudo access on the VPS to install Docker and configure the reverse proxy
- Backup of your existing Papermerge instance before any operation: document export + database dump
Step-by-step migration guide
Migrate from Papermerge to Paperless-ngx
Export your documents from Papermerge
In the Papermerge interface, go to Documents → Export. Select "All documents" and start the export. Papermerge generates a ZIP file containing the originals (PDFs, images) organized by folder. Download this file to your local machine or transfer it directly to the target VPS via
scp:scp papermerge-export.zip user@your-vps:/tmp/Unzip the export and prepare the consume folder
On the VPS, unzip the archive into a temporary directory:
mkdir -p /opt/paperless-import unzip /tmp/papermerge-export.zip -d /opt/paperless-import/You get a directory tree of files. Paperless-ngx will consume these files via its consume folder in a later step.
Install Paperless-ngx via the official Docker Compose file
Fetch the official
docker-compose.ymlfrom the Paperless-ngx repository:mkdir -p /opt/paperless && cd /opt/paperless curl -fsSL https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/docker/compose/docker-compose.postgres.yml -o docker-compose.yml curl -fsSL https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/.env.example -o .envEdit the
.envfile: setPAPERLESS_URL,PAPERLESS_SECRET_KEY(a long random string),PAPERLESS_OCR_LANGUAGE(e.g.fra+engfor French + English), andPAPERLESS_TIME_ZONE(Europe/Parisor your timezone).Start the instance and create the administrator account
Launch the containers in the background:
docker compose up -dWait for the service to be ready (30 to 60 seconds), then create the superuser:
docker compose exec webserver python3 manage.py createsuperuserLog in at
http://localhost:8000(or your domain) to verify the interface responds.Import documents exported from Papermerge
Copy the exported directory tree into the Paperless-ngx consume folder. By default, this folder is the
consumevolume declared indocker-compose.yml:cp -r /opt/paperless-import/* /opt/paperless/consume/Paperless-ngx will automatically detect the new files and ingest them via Celery. You can monitor progress in the Logs tab of the interface or via:
docker compose logs -f celeryworkerConfigure the reverse proxy and TLS
Expose Paperless-ngx behind nginx. Minimal block example for a subdomain:
server { listen 443 ssl; server_name docs.your-domain.com; ssl_certificate /etc/letsencrypt/live/docs.your-domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/docs.your-domain.com/privkey.pem; location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }Obtain or renew a Let's Encrypt certificate for this subdomain, then reload nginx.
Verify OCR coverage and test imported documents
In the Paperless-ngx interface, open several imported documents and verify their content is indexed (working search bar). For documents where OCR failed (warning icon), relaunch OCR manually from the interface or via the REST API:
curl -X POST http://localhost:8000/api/documents/<id>/redo_ocr/ \ -H 'Authorization: Token <your-token>'Validate and shut down the old Papermerge instance
After the full import, verify that the document count in Paperless-ngx matches your Papermerge export. Test full-text search on known terms, check attachments and downloadable originals. Once validation is complete, stop the Papermerge instance and remove its containers:
docker compose downfrom its deployment directory.
Essential Paperless-ngx configuration
After the initial import, three configuration areas have a direct impact on day-to-day service quality.
- OCR:
PAPERLESS_OCR_LANGUAGEaccepts a list of Tesseract language codes separated by+(fra+eng+ara). If your corpus is multilingual, declare all languages from the start so imported documents are reprocessed correctly - S3 storage: set
PAPERLESS_STORAGE_BACKEND=s3,PAPERLESS_S3_ACCESS_KEY,PAPERLESS_S3_SECRET_KEYandPAPERLESS_S3_BUCKET_NAMEto offload originals to an S3-compatible bucket — useful for multi-gigabyte corpora on a storage-limited VPS - Automatic assignment rules: in the interface, create rules that assign a tag, correspondent, or document type based on OCR content (e.g. any document containing "invoice" → tag
Invoices, correspondentSupplier X) - Scheduled tasks: the Celery worker already handles automatic consumption; verify that
PAPERLESS_CONSUMER_POLLINGis0(inotify) or a reasonable interval if inotify is not available in your Docker environment
To reduce ingestion time on a large corpus, enable parallel consumption by setting PAPERLESS_TASK_WORKERS=4 in your .env (adjust to your vCPU count). On a 4 vCPU / 4 GB RAM VPS, ingesting 500 single-page PDFs drops from ~20 min to ~6 min. Monitor memory: Tesseract consumes ~200 MB per active worker.
Integration with your existing tools
Paperless-ngx integrates into document workflows without custom development. Three entry points cover the majority of SME use cases.
- Network scanner: configure your scanner to send scans via SFTP or SMB into
/consume. Paperless-ngx ingests them on arrival, with no manual action required - Mail client: the mail consumer (
PAPERLESS_EMAIL_HOST,PAPERLESS_EMAIL_PORT) monitors an IMAP mailbox and automatically imports PDF attachments from messages matching your filters (subject, sender) - REST API: the
POST /api/documents/post_document/endpoint accepts a multipart file. From n8n, a workflow can send any received email attachment directly to Paperless within seconds. The API token is generated underSettings → API Tokens - Mobile app: the Paperless Mobile app (Android/iOS, open source) connects to your self-hosted instance via URL and API token
Troubleshooting: common issues after migration
- Imported documents with no OCR text: verify the Tesseract language code is correct (
PAPERLESS_OCR_LANGUAGE=franotfr). Valid codes are listed in the Tesseract documentation. Relaunch OCR on affected documents via the interface or API - Consume folder not monitored: if you use a Docker volume mounted from an NFS partition or object storage, inotify does not work. Set
PAPERLESS_CONSUMER_POLLING=60for a scan every 60 seconds - "Permission denied" error on
/consume: the Paperless worker runs as UID 1000. If files copied to/consumebelong to root, change permissions:chown -R 1000:1000 /opt/paperless/consume/on the host - Incomplete import — missing documents: Papermerge exports documents in the folder structure visible in its interface. Documents in deeply nested folders are all exported, but filenames containing special characters may cause issues. Check with
find /opt/paperless-import -name '*.pdf' | wc -land compare to your Papermerge instance total
Take back control of your archives
The window is short: the papermerge-core repository will be archived around October 5, 2026 if no maintainer comes forward. Staying on a frozen Papermerge instance means silently accumulating a security debt on a tool that handles potentially sensitive documents — invoices, contracts, official correspondence.
Paperless-ngx offers a lossless migration: your original files are imported as-is via the consume folder, OCR is rerun on documents that need it, and no destructive transformation is applied. The official Docker Compose deployment makes the installation reproducible in under an hour on any VPS. On ServOrbit, Paperless-ngx is available directly in the collaboration marketplace — you start from a pre-configured Docker Compose environment ready to receive your archives.