🤖 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`.
7.5 KiB
title, description, weight
| title | description | weight |
|---|---|---|
| Устранение неполадок | Симптомы, диагностика и исправление типовых сбоев apex. | 40 |
Типовые сбои в работе движка, точные сообщения из логов и способы их устранения.
APEX_NODE_FQDN откатывается к имени хоста
Симптомы: каждое действие пишет в лог APEX_NODE_FQDN not set in node.env; using hostname '<fqdn>'.
Диагностика: в node.env не задан APEX_NODE_FQDN, поэтому движок взял FQDN из имени хоста ОС. Если имя хоста совпадает с целевым FQDN, это не повредит работе. В противном случае маршрутизация Traefik по правилу Host() получит неверное доменное имя.
Решение: явно укажите APEX_NODE_FQDN в файле node.env в корне репозитория (например, APEX_NODE_FQDN=node1.example.com).
Разрешение идентичности завершается с кодом 66
Симптомы: identity: APEX_NODE_FQDN missing from node.env and no hostname или identity: APEX_SUBNET missing from node.env, код выхода 66.
Диагностика: не удалось определить обязательный параметр идентичности. Первое сообщение указывает, что ни в node.env, ни в имени хоста ОС нет FQDN; второе — что не задана подсеть APEX_SUBNET. Движок не пытается угадывать эти значения.
Решение: укажите нужные переменные в файле node.env в корне репозитория: задайте APEX_SUBNET и APEX_NODE_FQDN (либо настройте корректное имя хоста в ОС).
configure/ufw завершается с кодом 66
Симптомы: Rules directory does not exist: ... или Config directory does not exist: ..., код выхода 66.
Диагностика: отсутствует одна из директорий: configs/ufw/docker/ либо configs/ufw/host/. Это свидетельствует о нарушении структуры каталогов, а не об осознанном отключении правил.
Решение: создайте недостающую директорию (она может быть пустой: в этом случае docker/ лишь выведет предупреждение No .rules files found ... nothing to apply. и продолжит выполнение).
Отсутствует инструментарий ufw
Симптомы: ufw not installed/working via sudo. Run configure/base first. или ufw-docker not found at ~/.local/bin/ufw-docker. Run configure/base first., код выхода 1.
Диагностика: не установлены компоненты, необходимые для настройки фаервола.
Решение: запустите apex configure/base, затем повторите вызов apex configure/ufw.
Установка crontab отклонена или откачена
Симптомы: Rendered crontab is empty; aborting (previous kept). (код выхода 65) или crontab install failed; restoring previous. (код выхода 1).
Диагностика: сгенерированный файл configs/cron/crontab оказался пустым (ошибка в шаблоне или переменных: неизвестные $VARS остаются как есть и не очищают файл) либо утилита crontab отклонила синтаксис.
Решение: проверьте вывод предпросмотра, исправьте шаблон и запустите apex configure/cron заново. В обоих случаях предыдущая версия crontab остаётся без изменений.
sync/repository прерывается
Симптомы: Commons submodule at <path> has uncommitted changes. Aborting. или Directory '<repo>/compositions' does not exist. Cannot sync., код выхода 1.
Диагностика: операция capture-up прерывается, чтобы не фиксировать некорректное состояние репозитория (незакоммиченные изменения в субмодуле или отсутствующий каталог композиций).
Решение: при наличии изменений в субмодуле сбросьте их командой git -C commons checkout -- . (либо зафиксируйте намеренное обновление субмодуля в коммите). Если отсутствует дерево каталогов, восстановите чекаут до следующего планового запуска.
Telegram не доставлен
Симптомы: в логе появляется Telegram Bot URL not provided. Skipping notification. или Failed to send Telegram notification: <error>. При этом действия, отправляющие уведомления (backup/run, sync/repository, sync/packages), завершаются с кодом 1, даже если основная задача выполнена.
Диагностика: не указан URL бота либо сбой произошёл при отправке запроса (проблемы с сетью, прокси или отозванный токен). Ненулевой код возврата предусмотрен намеренно: автоматическая задача, о результате которой невозможно сообщить, считается неудачной.
Решение: проверьте файл с URL бота, доступность сети и прокси, а также валидность токена. Затем выполните команду вручную, чтобы проверить доставку.
docker compose отклоняет базовую обёртку
Симптомы: команда docker compose сообщает об ошибке на директиве include при обработке compositions/apex/docker-compose.yml.
Диагностика: базовая композиция подключается через директиву include:, для которой требуется Docker Compose версии 2.20 или новее.
Решение: обновите плагин Compose (проверить текущую версию можно командой docker compose version).
См. также: