[{"data":1,"prerenderedAt":153},["ShallowReactive",2],{"seo-verification":3,"blog-host-paperless-ngx-on-your-own-vps-en":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"id":7,"slug":8,"slugs":9,"title":12,"excerpt":13,"readTime":14,"views":15,"isPinned":16,"publishedAt":17,"category":18,"categories":24,"featuredImage":26,"bgImage":27,"posterImage":28,"relatedSolution":29,"intro":31,"sections":32,"ctaTitle":101,"ctaBody":102,"ctaButton":103,"ctaUrl":104,"relatedPosts":105},85,"host-paperless-ngx-on-your-own-vps",{"fr":10,"en":8,"ar":11},"heberger-paperless-ngx","استضافة-paperless-ngx-على-خادمك-الافتراضي-الخاص-vps","Host Paperless-ngx on Your Own VPS","Install Paperless-ngx on your VPS: self-hosted document management with OCR, indexing, automatic classification and SSL via Docker.",3,0,false,"2026-03-27T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":23},7,"Self-hosting","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[25],{"id":19,"name":20,"slug":21,"color":22,"icon":23},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fheberger-paperless-ngx-poster.svg",{"categorySlug":21,"appSlug":30},"paperless-ngx","Paperless-ngx turns your paper documents and PDFs into a searchable digital archive: automatic OCR, classification by correspondent, tags and full-text search. Self-hosted on your VPS, it becomes the document vault of your business, indexed and accessible in seconds.",[33,37,47,50,72,75,78,81,99],{"type":34,"title":35,"body":36},"h2","Why self-host Paperless-ngx on a VPS","Invoices, contracts, payslips, administrative correspondence: document management involves confidential data that few companies want to entrust to a third-party cloud. Paperless-ngx ingests each PDF or scan, applies OCR (text recognition) to make it searchable, then automatically classifies it by correspondent, type and tags thanks to a matching engine. On a VPS, you get an archive accessible from anywhere, fed by simply dropping files into a watched folder or by email. The stack relies on PostgreSQL for the index, Redis for the task queue, and a processing service that runs Tesseract for OCR. You control legal retention, backup encryption and access, with no dependence on a vendor.",{"type":38,"title":39,"items":40},"ul","The benefits of a self-hosted Paperless-ngx",[41,42,43,44,45,46],"Automatic OCR via Tesseract: each scan or PDF becomes full-text searchable.","Automatic classification by correspondent, document type and tags according to your rules.","Watched folder and email ingestion: drop a file, and it is processed and indexed on its own.","Instant search across all textual content, not just file names.","Preservation of the originals intact alongside the OCR'd versions, for evidentiary value.","Controlled backups of a legally sensitive archive, without a third-party cloud.",{"type":34,"title":48,"body":49},"Hardware and software requirements","Paperless-ngx is reasonable at idle but OCR is demanding in bursts: 2 vCPUs and 3 to 4 GB of RAM offer good comfort, since OCR of a multipage document temporarily taxes the CPU. For a large initial ingestion of several thousand documents, additional cores speed up processing considerably. Plan for storage covering the originals plus the OCR'd archive files, roughly double the raw volume. On the software side: Docker and `docker compose` v2, PostgreSQL, Redis, and the Tesseract languages you need (`fra`, `eng`, `ara`). A domain (`docs.yourcompany.com`) and, optionally, a dedicated IMAP account for the automatic ingestion of email attachments.",{"type":51,"title":52,"steps":53},"steps","Deploy Paperless-ngx step by step",[54,57,60,63,66,69],{"title":55,"body":56},"Prepare the VPS and volumes","Install Docker, then create the persistent folders: `consume` (watched drop point), `media` (OCR'd archive), `data` and `export`. The `consume` folder will be your document inbox.",{"title":58,"body":59},"Retrieve the official compose file","The project provides an interactive installation script, but in production start from the official `docker-compose.yml` declaring `webserver`, `broker` (Redis), `db` (PostgreSQL) and the worker. Adapt the volume paths to the folders you created.",{"title":61,"body":62},"Configure the OCR languages and secrets","In the environment file, set `PAPERLESS_OCR_LANGUAGE=fra+eng+ara`, `PAPERLESS_SECRET_KEY` generated with `openssl rand -base64 48`, and the public URL `PAPERLESS_URL=https:\u002F\u002Fdocs.yourcompany.com`.",{"title":64,"body":65},"Create the superuser and start","Run `docker compose up -d`, then create the administrator with `docker compose run --rm webserver createsuperuser`. Then log in to the interface to check that the workers are properly processing the task queue.",{"title":67,"body":68},"Add a reverse proxy and SSL","Place Caddy in front of the web service for `docs.yourcompany.com`, with an automatic Let's Encrypt certificate. Increase the proxy's maximum upload size to accept large scanned PDFs without a 413 error.",{"title":70,"body":71},"Connect email ingestion","In Administration, configure a dedicated IMAP account: Paperless-ngx will retrieve the attachments of incoming emails, OCR them and classify them automatically according to your matching rules.",{"type":73,"body":74},"tip","Define correspondents and document types with automatic matching rules (by keyword or regular expression) from the start. Paperless-ngx also learns through classification: after manually tagging about fifty documents, enable the automatic classifier so it suggests the tags for new files on its own. Combined with the watched `consume` folder, you get a fully automatic chain from scan to indexed archive.",{"type":34,"title":76,"body":77},"Common integrations","The Paperless-ngx REST API (available at `\u002Fapi\u002F` with Swagger docs) opens up many possibilities. In n8n, an HTTP Request node can trigger document ingestion as soon as an invoice lands in your Gmail. With Nextcloud, the Paperless-ngx plugin lets you push files directly to the DMS from the Nextcloud interface. In your CI pipelines, a simple `curl` can upload the build report PDF right after a successful deploy, with tags `#ci` and `#deploy` applied automatically.",{"type":34,"title":79,"body":80},"Migrating from Paperless-ngx v2 to v3: three blocking issues","Version 3 of Paperless-ngx replaces the Whoosh full-text search engine with Tantivy. This core change improves indexing performance but silently invalidates the queries behind existing saved views: they still appear in the interface but return no results. Two additional infrastructure issues block the worker from starting on VPS instances without unrestricted outbound network access: an attempted compilation of the `psycopg-c` C library on first launch, and a file descriptor limit too low for Celery and Redis running together. These three blocking issues do not appear in the official v3 migration guide — overlooking them results in a worker that never starts or an archive whose saved filters stop working after the update.",{"type":51,"title":82,"steps":83},"Migration procedure: v2 to v3",[84,87,90,93,96],{"title":85,"body":86},"Back up the database and media","Before any update, export the PostgreSQL database with `docker compose exec db pg_dump -U paperless paperless > backup-$(date +%F).sql` and archive the `media` volume containing all your originals and OCR'd files. A migration without a prior backup is irreversible.",{"title":88,"body":89},"Update the image and restart","In your `docker-compose.yml`, update the tag of the `ghcr.io\u002Fpaperless-ngx\u002Fpaperless-ngx` image to the target v3 version. Then run `docker compose pull` followed by `docker compose up -d`. The worker applies the database migrations on startup.",{"title":91,"body":92},"Recreate saved views","After the update, go through each saved view in the interface (Views menu). Tantivy replaces Whoosh as the full-text engine: queries compiled under v2 are no longer valid. Delete each affected view and recreate it with the same criteria — full-text search works correctly again once rebuilt.",{"title":94,"body":95},"Set PAPERLESS_OCR_LANGUAGE in the .env file","On a VPS without full outbound network access, the container attempts to compile the `psycopg-c` C library on first start and fails without a clear error message, leaving the worker in a blocked state. Explicitly adding `PAPERLESS_OCR_LANGUAGE=fra+eng` (or the languages you need) to your `.env` file before launching avoids this cold build. Check the worker log with `docker compose logs worker` if the service is unresponsive.",{"title":97,"body":98},"Set ulimits nofile in docker-compose.yml","Celery and Redis together open more than 1024 file descriptors under load. The default system limit (`ulimit -n 1024`) causes the worker to crash without a readable warning. Add the following block to the `webserver` service and the worker service in your `docker-compose.yml`:\n```yaml\nulimits:\n  nofile:\n    soft: 65536\n    hard: 65536\n```\nThen restart with `docker compose up -d` for the limit to take effect.",{"type":73,"body":100},"Always test on a copy before migrating to production. Restore your backup to a second VPS or a second Docker project, apply the v3 migration, and verify that your saved views, email ingestion and search results meet your expectations. The initial Tantivy indexing duration depends on volume: allow several minutes for an archive of several thousand documents.","Digitize and index all your documents","The ServOrbit Cloud VPS offers the CPU, storage and Docker ready for Paperless-ngx, its Tesseract OCR, PostgreSQL and Redis. Turn your stacks of paper into a searchable archive, backed up and under your sole control.","Deploy Paperless-ngx on a Cloud VPS","\u002Fvps-cloud",[106,122,138],{"id":107,"slug":108,"slugs":109,"title":112,"excerpt":113,"readTime":114,"views":15,"isPinned":16,"publishedAt":115,"category":116,"categories":117,"featuredImage":26,"bgImage":27,"posterImage":119,"relatedSolution":120},71,"hosting-nextcloud-on-your-own-vps",{"fr":110,"en":108,"ar":111},"heberger-nextcloud","استضافة-nextcloud-على-خادمك-الـvps-الخاص","Self-Host Nextcloud on VPS: Complete Guide, NC 34 and Security","Deploy Nextcloud 34.0.2 on your VPS with Docker and Redis. Complete guide: missing NC 34.0.0 apps, PostgreSQL oc_filecache_extended constraint, and 2FA CVEs.",12,"2026-04-10T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":23},[118],{"id":19,"name":20,"slug":21,"color":22,"icon":23},"\u002Fblog\u002Fcovers\u002Fheberger-nextcloud-poster.svg",{"categorySlug":21,"appSlug":121},"nextcloud",{"id":123,"slug":124,"slugs":125,"title":128,"excerpt":129,"readTime":130,"views":15,"isPinned":16,"publishedAt":131,"category":132,"categories":133,"featuredImage":26,"bgImage":27,"posterImage":135,"relatedSolution":136},72,"hosting-ghost-on-your-own-vps",{"fr":126,"en":124,"ar":127},"heberger-ghost","استضافة-ghost-على-خادمك-الـvps-الخاص","Hosting Ghost on your own VPS: complete 2026 guide","Deploy Ghost v6 on your VPS with Caddy, MySQL, Ghost CLI and Stripe Tax: installation, TLS reverse proxy, updates and troubleshooting common startup errors.",9,"2026-04-09T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":23},[134],{"id":19,"name":20,"slug":21,"color":22,"icon":23},"\u002Fblog\u002Fcovers\u002Fheberger-ghost-poster.svg",{"categorySlug":21,"appSlug":137},"ghost",{"id":139,"slug":140,"slugs":141,"title":144,"excerpt":145,"readTime":14,"views":15,"isPinned":16,"publishedAt":146,"category":147,"categories":148,"featuredImage":26,"bgImage":27,"posterImage":150,"relatedSolution":151},73,"host-wordpress-on-your-own-vps",{"fr":142,"en":140,"ar":143},"heberger-wordpress","استضافة-wordpress-على-خادم-vps-الخاص-بك","Host WordPress on your own VPS","Host WordPress on your VPS for maximum performance and control: Docker, MariaDB, caching, reverse proxy and SSL.","2026-04-08T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":23},[149],{"id":19,"name":20,"slug":21,"color":22,"icon":23},"\u002Fblog\u002Fcovers\u002Fheberger-wordpress-poster.svg",{"categorySlug":21,"appSlug":152},"wordpress",1787580999690]