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
licenseSecretvalue, keylicense.lic(see Kubernetes). - Azure Container Apps: the
licenseContentdeployment parameter.
What happens in each state
| State | Server behavior |
|---|---|
| Valid | Normal operation; startup log shows customer, type, days remaining |
| Expiring within 30 days | Warning in logs and as2_license_days_remaining gauge counts down |
| Expired, within 14-day grace | Everything still works; loud warnings; /healthz body says degraded: license in grace, N day(s) left |
| Expired past grace | Inbound messages answered 503 (partners’ retry logic redelivers after renewal); outbound deliveries pause but stay queued; /healthz body degraded: license expired |
| File missing | Server boots “unlicensed”: health answers, AS2 traffic 503s until the file appears |
| File present but invalid | Server 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.