Self-hosting

Run the editor container in your own infrastructure — for air-gapped networks, data residency and strict change control.

The self-hosted deployment serves the same editor iframe from your own infrastructure instead of ours. Your page embeds it exactly like the hosted SDK; only embedUrl changes.

When to choose it

  • The network cannot reach external hosts (air-gapped or restricted egress).
  • Documents must not traverse any third party, even for loading the application.
  • You need full control over versions, patching and rollout windows.
  • Procurement requires the software to run inside your perimeter.

What you get

  • A container image that serves the editor as static files behind nginx, from your own host.
  • An offline licence: a JWT without exp, verified against the public key built into the image — no call to an RSJ server at runtime, no telemetry.
  • Version pinning: you decide when an update is rolled out.

Deployment

  1. Load the image into your registry.
  2. Run it in your container environment:
docker run -d --name pdfmerge pdfmerge:<version>
  1. Serve it under a hostname your product can embed, for example https://pdfmerge.internal.example — through your reverse proxy, ingress or service discovery, with the port and TLS your setup already uses. The image contains no secrets and makes no outbound requests.

The editor build reads its settings from src/config.production.json before the image is built — most importantly licensePublicKey (the ES256 key the licence is signed with) and licenseAudience. A self-hosted build is produced with your licence key, so the tokens you receive verify inside your perimeter.

Embedding

Only embedUrl changes:

const editor = new PDFMergeSortSplitClass('#editor', {
  embedUrl: 'https://pdfmerge.internal.example',
  apiKey: '<offline licence>',
});

Events, exports, provenance and the origin checks behave exactly as in the hosted deployment.

Updates

Self-hosted customers receive new image tags and release notes. You choose when to deploy them; the licence does not expire with a version, only with the agreed term.

Support

Deployment support, architecture reviews and a test licence are part of the enterprise agreement. Contact info@rsj.de to start.