---
title: Register
order: 15
description: Register a server once, for free, to use the console. The debug bar needs no registration, and BoxLang+ needs none.
icon: lucide:badge-check
---

# Register

BxLens has two surfaces, and they are treated differently:

| | Needs a registration? |
|---|---|
| The **debug bar** | No. It works from the first request. |
| The **console** on Free or a trial | **Yes, once per server.** It is free. |
| The console with **BoxLang+** | No. |

When a server is not registered, opening the console shows the **Register** page, before the sign in. After registering you sign in as usual.

## How to register

1. Open `/~bxlens/index.bxm`. The Register page asks for your **name**, **work email** and, if you like, your **company**.
2. Say where BxLens runs: a **server or VM**, or a **container** (see below).
3. Agree to the [privacy notice](../privacy.md). Tick the optional box if you want product news. It is off by default and registering does not need it. Press **Register and email my key**.
4. The key arrives by email within a minute. Paste it into the page and press **Activate**.
5. Press **Continue to sign in**. You will not be asked again for this server.

The form goes from **your server** to the registration service, not from your browser, so this server needs outgoing access to `https://bxlens-register.boxlang.io` once. Nothing about your application is sent: only the form, and the versions of BxLens, BoxLang and Java. Checking the key afterwards is offline, with no call to anyone.

## The 14 day trial

The first registration of an email address starts a **14 day trial of the BoxLang+ features** (see [Licensing](../licensing.md)). One trial belongs to one address: registering more servers with the same address shares the same end date. After that BxLens stays free and registered.

A bx-plus trial is capped by it: the BoxLang+ features of BxLens last until the BxLens trial ends, even if the bx-plus trial has more days.

## The key is tied to a server name

A key names one server: the `server.name` setting, then the `LENS_SERVER_NAME` environment variable, then the host name. A key for one name does not work for another.

### Containers

The host name of a container changes with every deploy, so a key tied to it would stop working. In the form choose **Container** and type a name for the service, for example `orders-api`. Then:

1. Set `LENS_SERVER_NAME=orders-api` in your image, compose file or Helm chart. Every replica and every redeploy of the service then has the same name and the same key. Replicas of one service share one registration.
2. Give the key to the container so it needs no typing: set `registration.key`, or set `registration.keyEnv` to the name of an environment variable that holds the key.

```json
"registration": { "keyEnv": "BXLENS_REGISTRATION_KEY" }
```

```bash
docker run -e LENS_SERVER_NAME=orders-api -e BXLENS_REGISTRATION_KEY=bxl1.... my-app
```

If you paste a key for a different name than the one this server has, the page tells you which name to set. The key is saved, so after you set the name and restart you do not paste it again.

## Where the key is kept

* The `registration.key` setting, or the environment variable named by `registration.keyEnv`, are read first.
* The Register page writes the key to `config/bxlens-registration.json` in the BoxLang home. Delete the file to register again.

See [`registration`](../configuration.md#registration) for every setting.

## Good to know

* **Air gapped servers** cannot reach the registration service, so they cannot register. Use BoxLang+, which needs no registration.
* A lost key: submit the form again with the same email and server name. The same key is mailed again.
* A key does not expire and cannot be revoked. Someone who needs their data removed can ask, see the [privacy notice](../privacy.md).
* The Register page is limited: a few forms and keys per address every ten minutes.
