Admin

License Invalid or Expired

Diagnose and fix license validation failures in the Opterius Agent.

Last updated 1775606400

The Panel shows "License Required" on the dashboard, or write operations (creating accounts, issuing certificates, etc.) return a 403 with "error": "license_required". The Agent is running and reachable, but it is refusing to carry out write operations due to a license problem.

The Agent validates the license at startup and periodically thereafter. Reads (viewing account lists, status checks) are always permitted. Only writes are blocked.

Step 1: Check License Status

Query the Agent's license status endpoint directly:

curl http://127.0.0.1:7443/license/status

The response tells you exactly what the Agent knows:

{
  "valid": false,
  "tier": "starter",
  "expires_at": "2026-03-01T00:00:00Z",
  "reason": "expired"
}

Common reason values: expired, server_ip_mismatch, not_found, verification_failed.

Step 2: Check the License Cache

The Agent caches the last successful license verification:

cat /etc/opterius/license-cache.json

This shows the last known-good state. If the cache is stale or empty, the Agent could not reach opterius.com for re-verification.

Common Causes and Fixes

License expired. The most common cause. Renew at opterius.com. After payment processes, restart the Agent to trigger an immediate re-check:

systemctl restart opterius-agent

Server IP changed. Licenses are tied to a server IP. If your server's IP changed (VPS migration, IP reassignment), the Agent will report server_ip_mismatch. Fix: log in to opterius.com → Dashboard → Licenses, find your license, and click Move to update the registered IP to the new one. Then restart the Agent.

Agent cannot reach opterius.com. The Agent verifies licenses by calling https://opterius.com/api/license/verify. If outbound HTTPS is blocked, verification fails. Test:

curl https://opterius.com/api/license/verify

If this times out or is refused, your server's firewall is blocking outbound port 443. Allow it:

# ufw
ufw allow out 443/tcp

# iptables
iptables -I OUTPUT -p tcp --dport 443 -j ACCEPT

Many cloud providers (Linode, AWS, etc.) also have external firewall rules (security groups / firewall rules in the control panel) separate from the OS firewall — check those too.

Free plan account limit. If you are on the Free plan and have 5 accounts, creating a 6th will return 403 with account_limit_reached (not license_required). Upgrade your plan or delete an unused account.

Force Re-Verification

Restarting the Agent triggers an immediate license check on startup — it does not wait for the next scheduled verification interval:

systemctl restart opterius-agent
journalctl -u opterius-agent -n 20

The logs will confirm whether the license check passed or failed and why.

Related