Docs / Install / On-prem

Install: on-prem

Run the whole pipeline inside your own infrastructure. Your build activity stays in your network; Protet only issues the signed detection bundle and the license your deployment verifies offline.

Availability. A new self-serve account is on the free cloud plan. On-prem accounts are set up by us, and the pipeline images and the Helm chart are provided to those deployments, not published publicly. If you want to run on-prem, write to hello@protet.io. This page shows how to fetch what your deployment needs.

What you receive

ItemWhat it isWhere it comes from
Pipeline images and Helm chartThe services that collect, window, evaluate and deliver findings.Provided by us when your on-prem account is set up.
Pull tokenA secret that authorises downloading your bundle. Used as MODEL_BUNDLE_KEY.Dashboard, Pull tokens (on-prem accounts only), or POST /portal/pull-tokens.
Signed detection bundleA bundle.tar.gz with a signed manifest. Your deployment verifies the signature before loading it.GET /v1/bundle (the URL is MODEL_BUNDLE_URL).
license.jsonAn Ed25519-signed license, verified offline. An expired license makes the services refuse to start.Dashboard, Download license.json, or GET /v1/license.
Public keysThe keys that verify the bundle and the license. They are public.GET /v1/public-keys, no authentication.

Fetch the bundle, license and public keys

Set your pull token and download. The first request for a new bundle version returns 202 while it is built; the loop below repeats until the file arrives. Stop it with Ctrl-C if it keeps failing, and see Troubleshooting.

export MODEL_BUNDLE_URL=https://protet.io/v1/bundle
export MODEL_BUNDLE_KEY="<your pull token>"

until [ "$(curl -sL -o bundle.tar.gz -w '%{http_code}' \
    -H "x-license-key: $MODEL_BUNDLE_KEY" "$MODEL_BUNDLE_URL")" = 200 ]; do
  echo "bundle not ready (or request failed), retrying in 30s"; sleep 30
done
mkdir -p bundle && tar xzf bundle.tar.gz -C bundle

Get the license from the dashboard (Download license.json), or with a logged-in session token (see Quickstart for how to obtain one):

curl -fL -H "Authorization: Bearer $TOKEN" https://protet.io/v1/license -o license.json
mkdir -p license && mv license.json license/

Read the two public keys you will configure:

curl -s https://protet.io/v1/public-keys \
  | python3 -c 'import sys, json; d = json.load(sys.stdin); print("BUNDLE_PUBLIC_KEY=" + d["bundle"]); print("LICENSE_PUBLIC_KEY=" + d["license"])'

Air-gapped: do these downloads on a connected machine, then copy bundle/, license/ and the two key values to the isolated environment. Nothing else needs to leave or enter it.

Deploying the pipeline

The pipeline images, the Helm chart and the deployment steps for your environment are handed over with your on-prem account, so they match the version you were given. To plan ahead, every setting that takes the bundle, the license and the two public keys is listed in the Configuration reference (environment variables and Helm values). With license enforcement on, the services refuse to start on an expired license.

Questions before you are set up: hello@protet.io.