Skip to main content

Applying a license

Written by Aron Day

A 3B license is a signed token provided by Tines. It starts with 3bl_v1_ and applies to the whole install. Tines Support or your account team will send you the token.

Paste it as a single line, with no extra spaces or line breaks.

3B reads the license when services start. After you change it, the api, orchestrator, and public services must be restarted. Each flow below covers this.

Single-server install (k3s)

Use these steps if you installed 3B with the single-server installer (setup.sh on the host).

Fresh install

On first run the installer asks for the signed 3B license token. Paste the 3bl_v1_… token from Tines when prompted.

Apply or renew a license

Step 1. Set the license. On the server, open /opt/3b/.env and set LICENSE to the token from Tines:

LICENSE=3bl_v1_…

Step 2. Re-run setup:

sudo bash /opt/3b/setup.sh

This updates the Kubernetes secret and restarts the services that read the license.

Step 3. Confirm. Open the 3B UI in a browser. The license message should be gone and the app should load as usual.

Kubernetes (Helm)

Use these steps if you installed 3B with the Helm chart on your own cluster.

The chart stores the license on the license key of the api-secrets secret. The default namespace is 3b; replace <namespace> if you installed into a different one.

A Helm upgrade of the same chart version does not restart running pods on its own. After the secret changes, restart the services that read it.

Helm manages secrets

Follow these steps if your values file has secrets.generate: true (the default).

Step 1. Set the license in values. Open your Helm values file and set:

license: "3bl_v1_…"

Step 2. Upgrade the release:

helm upgrade 3b oci://oci.tines.com/3b/charts/3b --version <VERSION> \
  --namespace <namespace> -f values.yaml

Step 3. Restart services:

kubectl -n <namespace> rollout restart deployment/api deployment/orchestrator deployment/public

Wait for the rollouts to finish:

kubectl -n <namespace> rollout status deployment/api
kubectl -n <namespace> rollout status deployment/orchestrator
kubectl -n <namespace> rollout status deployment/public

Step 4. Confirm. Open the 3B UI in a browser. The license message should be gone and the app should load as usual.

Secrets are managed outside Helm

Follow these steps if your values file has secrets.generate: false. In this case, the license field in Helm values is ignored.

Step 1. Update the secret:

kubectl -n <namespace> patch secret api-secrets --type merge \
  -p '{"stringData":{"license":"3bl_v1_…"}}'

If you store the token in an external secret manager, update it there instead and wait until api-secrets shows the new value.

Step 2. Restart services:

kubectl -n <namespace> rollout restart deployment/api deployment/orchestrator deployment/public

Wait for the rollouts to finish:

kubectl -n <namespace> rollout status deployment/api
kubectl -n <namespace> rollout status deployment/orchestrator
kubectl -n <namespace> rollout status deployment/public

Step 3. Confirm. Open the 3B UI in a browser. The license message should be gone and the app should load as usual.

Did this answer your question?