Files
ermnvldmr.com/services/docs/content/en/apex/troubleshooting.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

4.4 KiB

title, description, weight
title description weight
Troubleshooting Symptoms, diagnosis, andĀ fixes forĀ common apex failure modes. 40

Failure modes theĀ engine reports, withĀ theĀ exact log lines itĀ emits.

APEX_NODE_FQDN falls back toĀ theĀ hostname

Symptoms: every action logs APEX_NODE_FQDN not set in node.env; using hostname '<fqdn>'.

Diagnosis: node.env does not set APEX_NODE_FQDN, soĀ theĀ engine derived theĀ FQDN fromĀ theĀ OS hostname. OnĀ aĀ node whose hostname isĀ theĀ intended FQDN this isĀ harmless; otherwise traefik Host() routing will use theĀ wrong name.

Solution: set APEX_NODE_FQDN explicitly inĀ node.env atĀ theĀ repository root (forĀ example APEX_NODE_FQDN=node1.example.com).

Identity exits 66Ā 

Symptoms: identity: APEX_NODE_FQDN missing from node.env and no hostname orĀ identity: APEX_SUBNET missing from node.env, exit 66.

Diagnosis: aĀ required identity field cannot be resolved. TheĀ first line means neither APEX_NODE_FQDN norĀ anĀ OS hostname yields anĀ FQDN; theĀ second means APEX_SUBNET isĀ absent. TheĀ engine refuses toĀ guess.

Solution: create orĀ complete node.env atĀ theĀ repository root — set APEX_SUBNET, andĀ set APEX_NODE_FQDN (orĀ ensure theĀ OS hostname isĀ usable).

configure/ufw exits 66Ā 

Symptoms: Rules directory does not exist: ... orĀ Config directory does not exist: ..., exit 66.

Diagnosis: exactly one ofĀ configs/ufw/docker/ orĀ configs/ufw/host/ isĀ missing — aĀ broken config layout rather than anĀ intentionally rule-less node.

Solution: restore theĀ missing directory (empty isĀ acceptable: anĀ empty docker/ warns No .rules files found ... nothing to apply. andĀ continues).

ufw tooling missing

Symptoms: ufw not installed/working via sudo. Run configure/base first. orĀ ufw-docker not found at ~/.local/bin/ufw-docker. Run configure/base first., exit 1.

Diagnosis: theĀ firewall layer's prerequisites are absent.

Solution: run apex configure/base, then retry apex configure/ufw.

Crontab install refused orĀ rolled back

Symptoms: Rendered crontab is empty; aborting (previous kept). (exit 65) orĀ crontab install failed; restoring previous. (exit 1).

Diagnosis: theĀ rendered configs/cron/crontab was empty (template/variable problem — remember unknown $VARS stay literal, they do not blank theĀ file) orĀ crontab rejected theĀ syntax.

Solution: inspect theĀ printed preview, fix theĀ template, re-run apex configure/cron. TheĀ previous crontab isĀ intact inĀ both cases.

sync/repository aborts

Symptoms: Commons submodule at <path> has uncommitted changes. Aborting. orĀ Directory '<repo>/compositions' does not exist. Cannot sync., exit 1.

Diagnosis: theĀ capture-up commit refuses toĀ record aĀ broken checkout — aĀ dirty pinned submodule orĀ aĀ missing compositions tree.

Solution: forĀ aĀ dirty submodule, git -C commons checkout -- . (orĀ commit anĀ intentional pin move); forĀ aĀ missing tree, restore theĀ checkout before theĀ next scheduled run.

Telegram not delivered

Symptoms: Telegram Bot URL not provided. Skipping notification. orĀ Failed to send Telegram notification: <error> — andĀ notify-gated actions (backup/run, sync/repository, sync/packages) exit 1 even though their work succeeded.

Diagnosis: theĀ bot URL argument was empty, orĀ theĀ send failed (network, proxy, revoked token). TheĀ non-zero exit isĀ deliberate: anĀ unattended run whose status cannot be reported isĀ treated asĀ failed.

Solution: verify theĀ URL source file theĀ cron line reads, network/proxy reachability, andĀ theĀ bot token; re-run manually toĀ confirm delivery.

docker compose rejects theĀ core wrapper

Symptoms: docker compose errors onĀ theĀ include keyword when evaluating compositions/apex/docker-compose.yml.

Diagnosis: theĀ core composition isĀ consumed through include:, which requires Docker Compose v2.20+.

Solution: upgrade theĀ Compose plugin (docker compose version toĀ verify).


See also: