Requirements

Document Engine is delivered as a Docker container that you deploy to your own infrastructure. It then requires a PostgreSQL database and dedicated file storage, the latter of which can be either the PostgreSQL database itself, or any S3-compatible object storage.

The minimum requirements for Document Engine are:

  • PostgreSQL 14, 15, or 16 — earlier versions may work, but they aren’t officially supported

  • Docker 1.10.0 or newer

The following cloud database services are also supported:

PSPDFKit for Web Version Requirements

When integrating Document Engine 1.5.2 with PSPDFKit for Web, the minimum required version of PSPDFKit for Web is version 2024.1.0.

Document Engine Resource Requirements

Document Engine requires a certain amount of compute and memory resources to serve and process documents. However, the amount of resources used depends on many factors, including, but not limited to, the number of uploads, views, and editing users.

Document Engine was built to run on both x86_64- and ARM64-based processors. We recommend using ARM-based hardware, since in many cases, this offers almost identical performance to x86_64 at a lower price.

In general, Document Engine relies more heavily on CPU than on memory. The Docker container is likely to use RAM in the range of the hundreds of megabytes per document processed concurrently as a baseline.

CPU-intensive operations include rendering and preprocessing PDFs, and the output of these activities is cached either in memory or in Redis (if enabled). So depending on the distribution of files that are “hot,” this will change and might increase your requirements.

A good starting point is a Document Engine with 2–4 CPU cores and 4–8 GB of memory (e.g. a c7g.large or c7g.xlarge instance if you’re deploying on AWS).

Information

We don’t recommend using burstable instances: PDF rendering is CPU intensive, and burstable instances would quickly run out of CPU credits, making it more difficult to maintain acceptable performance.

When Document Engine saturates one of these resources and performance becomes unsatisfying, you can increase Pod resources if you’re deploying on Kubernetes, or switch to a more powerful instances. To achieve better observability of your nodes, we recommend setting up metrics.