Files
ermnvldmr.com/services/docs/content/ru/apex/getting-started.md
T
deytenit 9ee672504f fix: PageHead header alignment, analytics proxy, and infra improvements (#64)
🤖 Pull request created from `various-fixes` containing PageHead
breadcrumbs and navigation alignment fixes, Umami analytics proxy, and
infrastructure updates.
2026-10-24 16:52:49 +03:00

7.0 KiB

title, description, weight
title description weight
Начало работы с узлом apex Начальная настройка репозитория узла и перевод хоста под управление apex. 5

В этом руководстве показано, как настроить новый хост: от клонирования репозитория узла до запуска рабочего стека сервисов. Предполагается, что репозиторий узла уже создан; если его нужно собрать с нуля, см. Руководство: Сборка репозитория узла.

Предварительные требования

  • Хост на базе Debian. Подойдёт любой FQDN: идентичность узла задаётся явно в node.env (APEX_NODE_FQDN, APEX_NODE_HOST, APEX_SUBNET), а не выводится из имени хоста.
  • git и Python 3 — движок использует только стандартную библиотеку, pip не нужен.
  • Docker с Compose версии 2.20 или новее (базовая композиция подключается через директиву include:).
  • Учётная запись с правами sudo для входа на хост.
  • Три хранилища под уровни (например, три точки монтирования).

Начальная настройка

{{% steps %}}

Склонируйте репозиторий узла

git clone --recurse-submodules git@github.com:<owner>/<node-repo>.git
cd <node-repo>
./init.sh
source ~/.bashrc

Скрипт init.sh инициализирует субмодуль commons/, настраивает core.hooksPath на commons/githooks, помечает чекаут как safe.directory и добавляет commons/ в начало PATH (лаунчер находится в commons/apex).

Проверьте обнаружение действий

apex --help

В списке отображается каждое действие commons плюс любые локальные проприетарные модули узла с меткой (local). Если в node.env не задан APEX_NODE_FQDN, движок выводит предупреждение и использует имя хоста ОС. На рабочей станции это безобидно, но на самом узле задайте APEX_NODE_FQDN явно. Параметр APEX_SUBNET обязателен: без него движок завершит работу с кодом 66.

Свяжите уровни хранилища

apex tiers/link <tier1-path> <tier2-path> <tier3-path>

Команда создаёт ссылки compositions/@tierN на уровне узла, каталоги уровней и ссылки @tierN для каждого проекта, области shared/, а также символьную ссылку на .env каждого проекта в уровень 1. При успешном выполнении выводится сообщение @tier setup completed..

Заведите пользователей проектов

apex tiers/useradd
apex tiers/chown

Команда tiers/useradd создаёт по одному системному пользователю noroot-<project> для каждой композиции и общую группу noroot-shared, а также прописывает APEX_UID, APEX_GID и APEX_SHARED_GID в .env каждого проекта. Затем tiers/chown выставляет права по матрице владения (см. Концепция: Многоуровневое хранилище) и выводит сообщение Permissions applied..

Заполните базовые секреты

Отредактируйте compositions/apex/.env (символьная ссылка в хранилище уровня 1, никогда не коммитится), указав ключи из файла SECRETS.md репозитория узла:

APEX_RESTIC_PASSWORD=...
APEX_RESTIC_AWS_ACCESS_KEY_ID=...
APEX_RESTIC_AWS_SECRET_ACCESS_KEY=...
APEX_TRAEFIK_CF_DNS_API_TOKEN=...
APEX_TRAEFIK_ACME_EMAIL=...
APEX_OBS_BASIC_AUTH_PASS=...   # только когда включён профиль наблюдаемости alloy

Переменные APEX_UID, APEX_GID и APEX_SHARED_GID уже добавлены: tiers/useradd сохраняет их между специальными комментариями-маркерами. Несекретные скалярные значения (APEX_RESTIC_REPOSITORY, push-URL, COMPOSE_PROFILES, TZ и др.) хранятся в отслеживаемом файле compositions/apex/apex.env (см. Руководство: Сборка репозитория узла).

Настройте хост

apex configure

Команда запускает все действия configure/* в строгом порядке: base, ufw, crowdsec, cron, systemd, routing. Каждый шаг можно выполнить и отдельно; некоторые из них поддерживают флаг --dry-run (см. Руководство: Эксплуатация узла).

Поднимите стек

apex compose up

Сначала запускается базовая композиция (она создаёт общие сети), затем — композиции отдельных сервисов в алфавитном порядке.

{{% /steps %}}

Проверка

  • apex --help выводит список действий без предупреждений на работающем хосте.
  • docker ps показывает базовые контейнеры (apex-traefik, apex-socket-proxy и дополнительные сервисы активных профилей), а также якорный контейнер каждого проекта.
  • apex utils/lint-docker-compose завершается сообщением Anchor IP validation passed..

См. также: