Skip to content
VaultTerm
Browse docs

self-hosting

Self-hosting FAQ

Straight answers on Kubernetes, air-gapped operation, license expiry, who can read the vault under escrow, and how upgrades work.

Updated Jun 23, 2026

Short, honest answers to the questions operators ask most. Each links to the page with the full detail.

Do I need Kubernetes?

No. VaultTerm is a modular monolith — one application process, not a fleet of services — so the supported deployment unit is Docker Compose, not Helm or Kubernetes. The stack is three containers: the app (API plus web portal on :4000, admin plane on :4100), postgres:16, and redis:7. There is no orchestrator to operate. See Self-hosting overview and Install with Docker Compose.

Can it run fully air-gapped?

Yes. You build a self-contained bundle on a connected host — the app image plus postgres:16 and redis:7, the compose file, and an installer — transfer one tarball, and install on a disconnected host with no network. The license verifies locally against a built-in vendor public key, so there is no activation call, and the over-deployment heartbeat is off unless you set its URL — an air-gapped install never phones home. See Air-gapped install.

What happens when the license expires?

It is not a hard outage. An expired license is honoured through a grace window, then lapses to free-tier limits — a late renewal degrades gracefully rather than taking the install down. The strict cases are different: a missing, malformed, forged, or rolled-back license is fatal at boot under production. See Licensing and activation.

Who can read the vault under managed escrow?

Nobody from a single share. The recovery key is 2-of-3 Shamir-split, so recovery needs two of the three shares — one is never enough. Under managed mode the vendor holds exactly one break-glass share, which alone cannot read or recover anything. Under customer-only mode the vendor holds nothing and is mathematically unable to read or recover the vault. See Backups and recovery.

How do upgrades work?

You move to a newer image and let migrations run on boot. Connected: git pull then docker compose up -d --build. Air-gapped: rebuild the bundle with a new version tag, transfer it, and re-run the installer (your .env is preserved). Migrations are forward-only, so back up the database first — the backup is also your rollback path. See Upgrading.

Is this zero-knowledge?

No, and we do not claim it. VaultTerm is an audited access broker: the server decrypts a secret in memory only for a specific authorized, audited action, under envelope encryption with no plaintext at rest. A self-hosted install keeps that whole boundary on your own infrastructure. See the Security model.

Where do I keep the admin plane?

Off the public internet. The admin/platform plane on :4100 binds to loopback by default — reach it over an SSH tunnel or a trusted private interface, and proxy only :4000 publicly. See Self-hosting overview.