Checking your license
Your deployment checks in with the license server on a schedule and caches the signed verdict. You can run that check-in by hand and read the cached result from the terminal.
Run a check-in
Section titled “Run a check-in”docker compose exec web python manage.py license_checkin| Output | Meaning |
|---|---|
Licensing enforcement disabled (no LICENSE_SERVER_URL); skipping. |
No license server is configured. Every installed module is entitled and nothing is checked. |
License check-in ok. |
The server’s signed verdict was verified and cached. |
License check-in failed (see logs). |
The server was unreachable or the verdict failed verification. Read the licensing log lines in docker compose logs web. |
Read the cached verdict
Section titled “Read the cached verdict”This never touches the network. It prints what the last verified check-in stored, plus the enforcement mode derived from it.
docker compose exec web python manage.py shell -c "from apps.platform.licensing.services.license_service import LicenseService, enforcement_enabledservice = LicenseService()state = service.current_state()print('enforcement_enabled:', enforcement_enabled())print('status :', state.status)print('edition :', state.edition)print('entitlements :', state.entitlements)print('seat_caps :', state.seat_caps)print('expires_at :', state.expires_at)print('grace_days :', state.grace_days)print('checked_ok_at :', state.checked_ok_at)print('last_checked_at :', state.last_checked_at)print('last_message :', state.last_message)print('enforcement_mode :', service.enforcement_mode())print('renew_reminder :', service.renew_reminder())"checked_ok_at is the last verified check-in. last_checked_at is the
last attempt. Failed attempts move only the second one, so a run of
failures lets the first one age toward read-only.
To check a single module, add print(service.is_entitled('blog')) to the
snippet. See Entitlements for the vocabulary.
Enforcement modes
Section titled “Enforcement modes”| Mode | When |
|---|---|
NORMAL |
Verified recently and not expired, within the expiry grace period, or inside the first-install window. |
READ_ONLY |
No verified check-in after the first-install window, no verified check-in for over 72 hours, the license is suspended, or it is past expiry plus grace. |
LOCKED |
The license is revoked, or far past expiry plus grace. |
If the check-in fails
Section titled “If the check-in fails”Check these environment variables in .env, then restart with
docker compose up -d web:
LICENSE_SERVER_URL— empty means licensing is off.LICENSE_KEY— your deployment’s license key.LICENSE_SERVER_PUBLIC_KEY— the PEM public key that verifies the signed verdict. A wrong key makes every check-in fail verification.
Also confirm the host can reach the server: see the status page and probe.