Launch on 01/01/2027Licenses available from 01/01/2027
PreviewThis page documents the release that launches on 01/01/2027. Packages, images and sign-up open then, and details may change before it.
Docs / Guides / Deploy

Deploy

Ready
TL;DR

Every deployment, on any platform, does the same handful of things — and the recipes just automate them for you. One container and PostgreSQL on a VM is the simplest shape; an L4 / TCP-passthrough load balancer adds HA. The recipe is a plain, editable file you own, so you can take it as-is or reason your own way from scratch. One hard rule: nothing in front may terminate TLS.

Who this is for: whoever stands a deployment up — whether you want a one-command recipe or to build it by hand on infrastructure we don’t ship a recipe for. Both paths follow the same steps below.

ⓘ The one rule

Ydentifi’s mutual-TLS handshake must terminate at the server — the client certificate is the identity, so anything that terminates TLS at an edge strips it. Only L4 / TCP-passthrough load balancers are compatible. This isn’t a limitation to work around; it’s the shape banking-grade mTLS gateways have used for years, and it fails closed: a TLS-terminating proxy doesn’t weaken security, it refuses to connect.

The steps, in principle#

Whatever the platform, a deployment does these six things. Read them once and you can follow a recipe with your eyes open — or build your own on infrastructure we don’t ship a recipe for.

Runtime

Get the image and a database

Pull the ydentifi-server container, and provision a PostgreSQL database — managed, or one you run yourself.

Trust

Establish the PKI

ydfi bootstrap mints the root CA and the server certificates. Store the root key in your secret manager. See Certificates & PKI.

Config

Configure it

Feed the database URL, the TLS cert and key, the master encryption keys, and the license to the server as environment variables — from a file, or your platform’s secret store.

License

Install a license

A license lets the deployment run and sets its seat count. Download it with ydfi pull and install it with ydfi license apply; see Get a license.

Expose

Serve on :443, end to end

Put the server on :443 — directly on the host, or behind an L4 / TCP-passthrough load balancer for HA. Never anything that terminates TLS.

Go live

Publish trust & verify

Point DNS at it, hand your root CA certificate (ca.crt) to your relying parties as their trust anchor, start the server, and confirm with ydfi admin health.

Recipes, or roll your own#

The recipes automate those steps for the common targets. Crucially, a recipe is not a black box: it generates a plain docker-compose file, an env file, and your PKI into a directory you choose — standard artifacts you can read, commit, share, and modify. Take them as-is, or use them as a worked starting point for your own manifests.

TargetRecipeStatus
On-prem · any cloud VM
GCP, AWS, Azure — same command
ydfi deploy local up --domain …✓ Shipped
Managed Kubernetes
GKE, EKS, AKS
ydfi deploy gke | eks | aksAt launch
From scratch
anything else
the six steps above✓ Anywhere
# evaluate on a laptop or a stock VM (self-signed, local only)
$ ydfi deploy local up

# single-host production: your domain + your TLS cert, end to end
$ ydfi deploy local up --domain ydentifi.acme.example \
      --tls-cert fullchain.pem --tls-key privkey.pem

# managed Kubernetes recipes  — at launch
$ ydfi deploy gke   # or: eks, aks

deploy local is one container plus PostgreSQL on the host you run it on — the same command whether that host is your own hardware or a GCP/AWS/Azure VM; only the machine underneath differs. The managed k8s recipes are pre-launch; until they ship, wrap the same container in a standard Kubernetes manifest with an L4 LoadBalancer Service, exactly as step 5 describes.

Pick your shape#

Two questions decide the topology: do you need high availability, and are you already on Kubernetes?

Need HA or multi-region? ├─ No → one VM + a static / Elastic IP, open :443 (cheapest, simplest) └─ Yes → an L4 load balancer → VMs or k8s pods on :443 ├─ already on k8s? → Service type LoadBalancer + NLB └─ a few pods? → managed instance / target group

What works, what breaks#

What can sit in front of the serverThe one deployment constraint that eliminates otherwise reasonable infrastructure.WORKSA network load balancer passing connections throughA proxy configured to forward the raw streamSeveral server instances behind eitherNo load balancer at allThe connection reaches the server intactThe server needs to see the client’scertificate. Anything that forwards theconnection untouched preserves it.DOES NOT WORKAn application load balancer terminating HTTPSA content delivery network in its usual modeAny proxy that opens the connection and re-makes itA gateway that inspects or rewrites requestsThe client’s certificate never arrivesTerminating the connection and starting a newone discards the certificate the wholeauthentication rests on.This rules out the default arrangement on several major cloudsIt is a real constraint on where the product can be deployed, and it is worth knowing before you choose a load balancer.
Which load-balancing arrangements work and which do not. Device-gateway mTLS terminates at the server, so anything that terminates TLS at the edge strips the client certificate.
✓ Works — raw TCP reaches the server
  • A VM + public / Elastic IP on :443 — the simplest deployment.
  • AWS NLB, GCP passthrough Network LB, Azure L4 Standard LB — layer-4, preserve the TCP stream.
  • Kubernetes Service type: LoadBalancer backed by an L4 NLB.
  • nginx-stream TCP passthrough, or Cloudflare Spectrum (true TCP).
✗ Breaks — TLS terminates at an edge
  • AWS ALB, Cloud Run, App Engine / Functions, GCP HTTPS LB.
  • Azure App Gateway, Front Door, App Service.
  • Cloudflare Tunnel, proxy, or Workers (edge-terminated even with a tcp:// ingress).
  • Vercel, Netlify, Render, Heroku — all edge-terminated HTTPS.

The dividing line is simple: if the platform decrypts TLS before your server sees it, the client certificate is gone and mutual TLS can’t happen. Pick anything from the left column.

Opens on 01/01/2027

Available at launch

Until then, you can try the whole ceremony on your own phone.