Files
ermnvldmr.com/services/docs/content/en/apex/concepts/node-identity.md
T
deytenit b3638f4d63 fix: cyrillic fonts, dev certs, page head, and ru-text typography (#67)
šŸ¤– PR generated for branch `fix/cyrillic-fonts-dev-certs-and-page-head`.

### Changes Summary
- **Fonts**: Add Cyrillic glyph subsets for Lato, EB Garamond, and Fira
Code.
- **Dev**: Support remote Root CA and encrypted dev CA key in
`.env.dev`.
- **UI & Kits**: Add size variant to `Breadcrumbs` component and enlarge
`PageHead` breadcrumbs with tuned collapse scroll threshold.
- **ESLint**: Add `no-hanging-particles` i18n & markdown typography rule
with auto-fixer.
- **Content & i18n**: Apply `ru-text` editorial and typography polish
(em dashes, number ranges, «ё» restoration, non-breaking spaces) across
`services/www` and `services/docs`.
2026-10-25 15:21:09 +03:00

3.8 KiB

title, description, weight
title description weight
Node identity resolution How aĀ node learns who itĀ is: node.env identity keys andĀ theĀ FQDN fallback. 12

Every apex operation runs inĀ theĀ context ofĀ exactly one node. TheĀ engine derives that node identity — node name, subnet, FQDN, andĀ public host — fromĀ theĀ node.env file atĀ theĀ repository root, withĀ theĀ OS hostname asĀ aĀ fallback forĀ theĀ FQDN only. TheĀ framework assumes noĀ domain andĀ noĀ clustering: aĀ node declares who itĀ isĀ explicitly. This resolution step succeeds theĀ root_require_node mechanism ofĀ theĀ bash "root" commons framework that apex replaces.

Identity sources

node.env

node.env isĀ aĀ plain KEY=value file (shell-sourceable) located atĀ theĀ repository root. When parsed, comments andĀ blank lines are ignored, andĀ surrounding single orĀ double quotes around values are stripped.

ItĀ declares identity explicitly through these keys:

  • APEX_NODE_FQDN — theĀ node's real FQDN, used forĀ traefik Host() routing. IfĀ unset, theĀ engine falls back toĀ theĀ OS hostname (andĀ warns).
  • APEX_NODE_HOST — theĀ node's public host name, used forĀ theĀ backup --host andĀ theĀ observability/notify instance. Defaults toĀ APEX_NODE_FQDN.
  • APEX_SUBNET — theĀ node's /24 forĀ theĀ direct network. Required; there isĀ noĀ other source forĀ itĀ (see Concept: Fleet addressing scheme).
APEX_NODE_FQDN=node1.example.com
APEX_NODE_HOST=node1.example.com
APEX_SUBNET=198.18.16.0/24

TheĀ OS hostname

TheĀ OS hostname isĀ consulted only asĀ aĀ fallback forĀ APEX_NODE_FQDN. When node.env does not set APEX_NODE_FQDN, theĀ engine uses theĀ hostname andĀ emits aĀ warning. ItĀ isĀ never parsed forĀ aĀ node name orĀ any other coordinate.

Resolution order

{{% steps %}}

Resolve theĀ FQDN

fqdn isĀ APEX_NODE_FQDN fromĀ node.env, orĀ theĀ OS hostname when that key isĀ unset. IfĀ neither yields aĀ value, resolution fails (see Failure modes).

Resolve theĀ public host

host isĀ APEX_NODE_HOST fromĀ node.env, orĀ fqdn when that key isĀ unset.

Derive theĀ short name

name isĀ theĀ first label ofĀ host (host.split(".")[0]) — forĀ example, node1 forĀ node1.example.com. ItĀ isĀ used forĀ logs, theĀ sync/<node> branch, andĀ messages.

Read theĀ subnet

subnet isĀ always read fromĀ APEX_SUBNET inĀ node.env. ItĀ isĀ required.

{{% /steps %}}

TheĀ result isĀ aĀ Node record withĀ four fields: name, subnet, fqdn, andĀ host.

Warnings

Identity resolution emits exactly one warning; itĀ signals aĀ recoverable inconsistency that should be fixed.

Condition Warning message
APEX_NODE_FQDN isĀ unset inĀ node.env (theĀ hostname isĀ used instead) APEX_NODE_FQDN not set in node.env; using hostname '<fqdn>'.

Failure modes

Resolution refuses toĀ guess. Two conditions are fatal, andĀ both exit withĀ code 66 — theĀ engine's exit-code convention forĀ missing input:

  • No FQDN atĀ all. APEX_NODE_FQDN isĀ unset inĀ node.env and theĀ OS hostname isĀ empty. TheĀ engine writes identity: APEX_NODE_FQDN missing from node.env and no hostname toĀ stderr andĀ exits.
  • No subnet. APEX_SUBNET isĀ absent fromĀ node.env (including when theĀ file itself isĀ missing). TheĀ engine writes identity: APEX_SUBNET missing from node.env toĀ stderr andĀ exits.

Warning

AĀ valid node.env carrying APEX_SUBNET isĀ required onĀ every node. APEX_NODE_FQDN may be omitted only when theĀ OS hostname supplies aĀ usable FQDN.


See also: