Skip to main content

Overview

On-premise deployment gives you full infrastructure sovereignty. Enclave runs on your servers, connects to your HSM, and stores data in your storage systems. No traffic leaves your network perimeter.

System requirements

The content-inspection (DLP) subsystem — Microsoft Presidio (NLP) + Apache Tika (JVM) — sets the memory floor: 16 GB is the minimum with DLP enabled. For millions of files / thousands of users, size to 16 vCPU / 64 GB / NVMe. See the private appliance sizing profiles for the full tier table; the appliance auto-tunes to the VM it’s given, while a hand-rolled on-premise Compose deployment must set container memory limits itself.

Components

Installation

Enclave ships as a Docker Compose stack. You receive a private registry token when you purchase an on-premise licence.

Environment configuration

Key variables in .env:

Object storage CORS

Enclave’s web client encrypts files in the browser and uploads ciphertext directly to your bucket via pre-signed URLs — plaintext never transits the application server. For this to work, your bucket must allow PUT requests from the Enclave web origin(s). Apply a CORS configuration like the following, replacing https://enclave.yourcompany.com with your deployment’s domain:
Via the AWS console:
1

Open the bucket

S3 → click into your bucket
2

Go to Permissions

Open the Permissions tab
3

Edit CORS

Scroll to Cross-origin resource sharing (CORS) and click Edit
4

Paste the rules and save

The console expects the rules array directly (no CORSRules wrapper):
Click Save changes. The policy takes effect immediately.
Only add http://localhost:3000 to AllowedOrigins when developing against this bucket from a local frontend build. Production deployments do not need it.
ExposeHeaders: ETag is required for multipart uploads — the client reads the ETag returned for each uploaded part. Without a matching CORS rule, browser uploads fail with a CORS policy error on the pre-signed PUT and the file remains stuck in pending/scanning until the abandoned-upload cleanup worker removes it.

Updates

Database migrations run automatically on startup. Back up PostgreSQL before each update.

High availability

For HA deployments, run multiple application instances behind a load balancer. The application is stateless — all state is in PostgreSQL and object storage. Use PostgreSQL streaming replication for database HA. Contact hello@kvelden.com for the HA architecture guide.