Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Installing your license

Your license is a short signed text file (license.lic). as2d validates its signature against a key built into the binary — locally, instantly, with no network access.

Where it goes

The config file points at it:

[license]
path = "/config/license.lic"   # default: /etc/as2d/license.lic
  • Docker: mount it read-only next to your config (see Quickstart).
  • Kubernetes: a Secret named by the chart’s licenseSecret value, key license.lic (see Kubernetes).
  • Azure Container Apps: the licenseContent deployment parameter.

What happens in each state

StateServer behavior
ValidNormal operation; startup log shows customer, type, days remaining
Expiring within 30 daysWarning in logs and as2_license_days_remaining gauge counts down
Expired, within 14-day graceEverything still works; loud warnings; /healthz body says degraded: license in grace, N day(s) left
Expired past graceInbound messages answered 503 (partners’ retry logic redelivers after renewal); outbound deliveries pause but stay queued; /healthz body degraded: license expired
File missingServer boots “unlicensed”: health answers, AS2 traffic 503s until the file appears
File present but invalidServer refuses to start, with the exact reason on stderr/logs

/healthz always returns HTTP 200 — degraded states are reported in the response body and the metrics gauges, so load balancers keep routing and partners get diagnosable protocol-level errors instead of connection failures.

Renewal

Replace the file; as2d re-reads it hourly. On Kubernetes that means updating the Secret in place — no restart, no pod roll. If a bad file lands (truncated upload, wrong file), the server keeps the last good license and logs the error; a botched renewal can never take a healthy server down.

Entitlement errors at startup

If your configuration exceeds the license — an algorithm not covered, a partnership requesting async MDNs on a license without them, more partnerships than allowed, outbound partners on a receive-only license — as2d refuses to start and names the exact partnership and entitlement. Fix the configuration or upgrade the license; the point of failing at startup is that a partner’s message at 2 am is never the first sign.