Repository navigation
v0.1.0
The first release meant to be kept. Earlier 0.0.x tags were development snapshots: their
databases cannot be upgraded and must be recreated (see
Upgrading to 0.1.0).
From this release on, the schema only moves forward through migrations.
Highlights
- Runs beside an existing NGINX. On a host that already serves sites, the agent either takes
over running NGINX or works with the one the host's own service runs (AGENT_NGINX_MANAGED=false).
It refuses to start a second master instead of crash-looping, checks thatnginx.confincludes
the platform's tree and refuses a deployment that NGINX would never load, and a host can keep its
own default server (PUT /api/v1/nginx-instances/{id}/default-server). HTTP/2 is rendered in the
form the host's version understands, so stock NGINX on current Debian and Ubuntu LTS loads it.
1.22 (Debian 12) and 1.27 are tested; 1.18 and later is expected to work. - Custom directives without an editor. Every rendered server block includes host-owned files
under/etc/nginx/enginx/custom/—http/,server/,sites/<domain>/,redirect/and
default/— NGINX Proxy Manager's custom-files mechanism. Writing one takes root on the host, not
a grant in the console, and every deployment's validation loads them. - VERIFY proves the site is served. Each site answers
/.well-known/enginx/sitewith its own id,
and only that answer verifies it. A default page answering 200 used to pass for a site that was not
being served at all. - Push agents behind a TLS-terminating proxy. A dialled agent can authenticate the platform with
a pre-shared token (AGENT_PUSH_PROTOCOL=http) instead of a client certificate. The token is
compared in constant time, must be at least 32 characters, and is stored sealed under the same
envelope encryption as private keys. The agent can serve HTTPS itself (AGENT_TLS_CERT/
AGENT_TLS_KEY); without it, it and the console warn that traffic is unencrypted. A token is
replaced in place withPUT /api/v1/nginx-instances/{id}/agent-token. - HTTP-01 certificates on pull-mode hosts. A challenge reaches a host that calls in as a job,
and issuance waits for the host to confirm it (enginx.acme.pull-confirm-timeout, default 20s). - Keycloak client roles. The four roles can be realm roles, client roles on the console's client
(OIDC_ROLE_CLIENT_ID, defaultenginx-frontend), or both. Endpoint checks and scoped
permissions now read the same set, so a role cannot count for one and not the other. forceHttps=falseserves both ports. An SSL site without the redirect answers on 80 and 443;
before, port 80 fell through to a 404.- Versions are visible. The console shows its own release and the server's, and both when they
differ. New hosts enrolled from the console are given the matching agent image.
Breaking changes since 0.0.9
- The database schema is a new baseline. A
0.0.xdatabase will not start; recreate it. pushTransport: GRPC_TOKENandAGENT_PUSH_PROTOCOL=grpcare gone. Neither was ever gRPC; use
HTTP_TOKENandhttp.- An unknown
AGENT_PUSH_PROTOCOL, or a token shorter than 32 characters, now stops the agent at
startup instead of being accepted. - Registering an instance with both a fingerprint and a token, or with a transport inferred from
whichever credential was sent, is refused;pushTransportmust match the credential. pushTransportis an enum in the API (MTLS,HTTP_TOKEN) and isnullfor a pull host.- Client roles on
enginx-apino longer grant anything. Only the console's client counts. enginx.agent.verify-hostnameis removed. It was never read; hostname verification is always on.- OpenAPI operation ids are now
<controller>_<method>. Generated clients keyed on the old ids
must be regenerated. - Compose files and Kubernetes manifests reference
0.1.0images rather thanlatest. - VERIFY now fails when a name is answered by anything other than the site's own server block. The
agent's verify request carriessiteswith markers; agents from before 0.1.0 do not understand it,
which is one more reason to upgrade agents first. - An agent left on the default
AGENT_NGINX_MANAGED=truerefuses to start while another NGINX master
is running, and a deployment to a host whosenginx.confdoes not include
/etc/nginx/enginx/current/conf.d/*.conffails validation instead of reporting success.
Upgrading to 0.1.0
There is no in-place upgrade from 0.0.x. Recreate the database and re-register hosts:
cd docker && docker compose down -v && docker compose up -dUpgrade agents before the management server, as for every release
(production guide §2.3).
Container images
ghcr.io/xiidea/enginx-management:0.1.0
ghcr.io/xiidea/enginx-agent:0.1.0
ghcr.io/xiidea/enginx-console:0.1.0
Built for linux/amd64 and linux/arm64.
Full Changelog: v0.0.9...v0.1.0