---
title: "Deployment overview"
description: "Choose how to run the CloudPDF server — npm, Docker, Docker Compose, or Helm — based on your scale and operational needs."
source: "https://www.cloudpdf.com/docs/server/deployment"
---

# Choosing a deployment

The server is one application, packaged four ways. They run the same binary and
read the same [`CLOUDPDF_*` configuration](https://www.cloudpdf.com/docs/server/configuration), so the
choice is purely about *how you want to operate it* — not what it can do.

| Method                                                                               | Best for                                         | Typical database    | Typical storage            | Scaling                        |
| ------------------------------------------------------------------------------------ | ------------------------------------------------ | ------------------- | -------------------------- | ------------------------------ |
| [**Node / npm**](https://www.cloudpdf.com/docs/server/deployment/npm)                | Local dev, existing Node platforms, custom hosts | SQLite or Postgres  | Disk or cloud              | Manual                         |
| [**Docker**](https://www.cloudpdf.com/docs/server/deployment/docker)                 | Single host, simple self-hosting, CI             | SQLite or Postgres  | Disk or cloud              | Manual / your orchestrator     |
| [**Docker Compose**](https://www.cloudpdf.com/docs/server/deployment/docker-compose) | A full self-hosted stack on one box              | Postgres (included) | MinIO / S3 (included)      | A few replicas, one host       |
| [**Helm / Kubernetes**](https://www.cloudpdf.com/docs/server/deployment/helm)        | Production, startup → enterprise                 | Postgres (managed)  | S3 / GCS / Azure (managed) | Autoscaling, multi-replica, HA |

> You can always start small and grow. Because storage is configured, not
> compiled in, moving from SQLite + disk to Postgres + S3 — or from Docker to
> Kubernetes — is a configuration change, not a rewrite.

## A quick decision guide

- **Just exploring, or developing locally?** Use [npm](https://www.cloudpdf.com/docs/server/deployment/npm)
  or the [Quick start](https://www.cloudpdf.com/docs/server/getting-started/quick-start) Docker one-liner.
- **Self-hosting on a single server or VM?** Use
  [Docker](https://www.cloudpdf.com/docs/server/deployment/docker) for the server alone, or
  [Docker Compose](https://www.cloudpdf.com/docs/server/deployment/docker-compose) for the server plus
  Postgres and object storage in one file.
- **Running in production, or need high availability?** Use
  [Helm](https://www.cloudpdf.com/docs/server/deployment/helm). You get multiple replicas, autoscaling,
  managed schema migrations, and a clean separation of secrets — the things that
  matter when downtime is expensive.

## What every method needs

No matter how you deploy, the server needs:

1. **A signing secret** — `CLOUDPDF_JWT_SECRET`, shared with the backend that
   mints tokens. See [Authentication](https://www.cloudpdf.com/docs/server/configuration/authentication).
2. **A database** — SQLite (default) or Postgres. See
   [Database](https://www.cloudpdf.com/docs/server/configuration/database).
3. **An object store** — local disk (default) or a cloud bucket. See
   [Storage](https://www.cloudpdf.com/docs/server/configuration/storage).
4. **Persistent volumes** for `/data` when you use SQLite, local storage, or the
   local cache.

> For anything customer-facing: set
> `CLOUDPDF_ENGINE_ISOLATION=host` so a native PDF crash costs a
> sub-second engine respawn instead of the instance, and run **more
> than one replica** (Compose or Helm) so a single failure can't take
> you offline. Details in
> [Health & scaling](https://www.cloudpdf.com/docs/server/operations/health-and-scaling).

## Pick your path

- [Node / npm](https://www.cloudpdf.com/docs/server/deployment/npm) — Install the package, run the CLI.
- [Docker](https://www.cloudpdf.com/docs/server/deployment/docker) — One self-contained image.
- [Docker Compose](https://www.cloudpdf.com/docs/server/deployment/docker-compose) — Server + Postgres + object storage.
- [Helm / Kubernetes](https://www.cloudpdf.com/docs/server/deployment/helm) — Production-grade, autoscaling.
