Администрирование
Разделы админ-консоли
Заголовок раздела «Разделы админ-консоли»Админ-консоль открывается по адресу /admin в кабинете и доступна операторам с ролью admin и owner. Роль owner дополнительно может создавать и удалять организации и видеть все организации; admin ограничен своей. Роли operator и viewer в админку не попадают.
| Раздел | Что здесь делают |
|---|---|
| Организации | Создание организации (slug и название), удаление. Только для owner. |
| Операторы | Создание оператора, роль, включение/отключение, удаление, локальный Unix-пользователь для терминалов («Терминал → юзер»), категории подтверждения команд («Апрув: категории»). |
| Агенты | Регистрация машины (логин, hostname, отображаемое имя), токены подключения, теги, реле, режим доступа (Управляемый / Только по коду), канал и политика обновлений, выдача root воркеру на время, панель Скилы, управляемые туннели, ссылка на установщик для Windows. |
| NX endpoints | Регистрация NX-эндпоинтов (только self-hosted), канал и политика обновлений. См. NX-эндпоинты. |
| Релизы | Ключи подписи и список опубликованных релизов агента и NX с переводом между каналами и отзывом. |
| Audit log | Журнал событий с фильтрами. |
| Заявки | Заявки на закрытое тестирование с публичной формы: статусы «новая», «связались», «принята», «отклонена». |
Операторы
Заголовок раздела «Операторы»Создание. В разделе Операторы заполните email, пароль и роль; поле «Организация» пустое — оператор попадёт в вашу организацию. Тот же результат даёт CLI на хосте control plane:
nythronix-server admin create-operator \ --email new@example.com --password "…" --role adminnythronix-server admin list operatorsОтключение. Кнопка Отключить в списке или nythronix-server admin disable operators --id <operator-id>. Оба пути немедленно отзывают сессии оператора и пишут admin.operator.disabled в аудит.
Сброс пароля. В интерфейсе смены пароля нет — на странице настроек оператор видит примечание «Смена пароля выполняется администратором». Сброс делается через CLI с тем же pepper, что и у сервера:
nythronix-server admin \ --password-pepper "$NYTHRONIX_PASSWORD_PEPPER" \ reset-password --email admin@example.com --password "$(openssl rand -base64 24)"Активные сессии оператора отзываются, в аудит попадает auth.password_changed с operator_id=cli. В compose-стеке команду выполняют внутри контейнера: docker compose exec control-plane /app/nythronix-server admin ….
Пароли агентов и NX-эндпоинтов сбрасываются командами admin reset-agent-password и admin reset-nx-endpoint-password; после этого обновите учётные данные на машине.
Публикация релиза агента и авто-обновление
Заголовок раздела «Публикация релиза агента и авто-обновление»Релизы подписываются ключом Ed25519, а агенты проверяют подпись по закреплённому публичному ключу — control plane не может подменить бинарник.
-
Ключ подписи. На машине сборки выполните
nythronix-release init --out ~/keys/nyx.hex; команда печатает публичную часть. В разделе Релизы нажмите Зарегистрировать ключ подписи, укажите имя и публичный ключ в hex. Если оставить поле пустым, ключ сгенерируется на сервере, и приватная часть будет показана один раз. -
Доверие на машинах. Агенты, подключённые через токен (
enroll), получают закреплённые ключи автоматически и хранят их в/etc/nythronix/agent.json. Для ручной установки задайтеNYTHRONIX_TRUSTED_KEYS=<hex>в/etc/nythronix-agent/agent.env. Без ключей агент принимает обновления с проверкой только SHA-256 и пишет предупреждение. -
Публикация. На машине сборки (не на control plane — сборка тяжёлая):
Окно терминала NYTHRONIX_SERVER=https://cp.example.com \NYTHRONIX_ADMIN_EMAIL=admin@example.com NYTHRONIX_ADMIN_PASSWORD=… \NYX_SIGN_KEY=~/keys/nyx.hex \scripts/release.sh 0.1.5Скрипт поднимает версию, собирает агент, NX-эндпоинт и CLI
nx, подписывает и публикует их в каналstable(переменнаяCHANNELзадаёт другой). -
Каналы и политика. У каждого агента в разделе Агенты есть Канал (
stable/canary) и Update policy:manual(по умолчанию — агент только подтверждает получение предложения),disabled,auto(применить сразу) иauto_idle_only(применить, когда на машине нет активных сессий). Агент получает предложение при следующем переподключении или по запросуPOST /api/admin/agents/<id>/update-trigger, проверяет SHA-256 и подпись и перезапускается в новый бинарник; результат приходит в аудит какendpoint.update.ack. -
Управление релизами. В списке можно перевести релиз в
stableилиcanaryи Отозвать — отозванный релиз перестаёт предлагаться. Ключ подписи можно отключить; после этого новые публикации этим ключом не пройдут проверку.
Работа с аудитом
Заголовок раздела «Работа с аудитом»Раздел Audit log показывает события с фильтрами по префиксу action (например auth или admin.operator), severity, operator id, типу цели и диапазону дат в формате RFC3339; страницы подгружаются кнопкой Загрузить ещё. Действия из CLI записываются с operator_id=cli.
Полезные имена событий:
auth.login,auth.login_failed,auth.password_changed;admin.operator.*,admin.agent.*,admin.enroll_token.*,admin.release.*;admin.agent.sudo_policy_set,admin.agent.mcp_config_set— выдача root воркеру и изменение скиллов;agent.cmd_exec— каждая команда воркера на машине, с текстом и сведениями о подтверждении;agent.mcp.call— каждый выполненный MCP-инструмент;chat.approval.decided— решение оператора по карточке подтверждения;security.unauthorized_access,security.signature_failure,endpoint.auth_failed— события с severitysecurity.
При JSON-хранилище журнал лежит в audit.jsonl в каталоге состояния, и его удобно читать с хоста:
jq -c 'select(.severity=="security")' /var/lib/nythronix/audit.jsonl | tail -50Резервное копирование и восстановление
Заголовок раздела «Резервное копирование и восстановление»По умолчанию состояние control plane — файлы в NYTHRONIX_STATE_DIR (в compose это том nythronix_state, смонтированный в /var/lib/nythronix). Резервная копия — архив каталога:
tar -czf nythronix-state-$(date -u +%Y%m%dT%H%M%S).tgz -C "$NYTHRONIX_STATE_DIR" .Восстановление выполняется на остановленном control plane:
systemctl stop nythronix-server # или: docker compose stop control-planerm -rf "$NYTHRONIX_STATE_DIR" && mkdir -p "$NYTHRONIX_STATE_DIR"tar -xzf nythronix-state-XXX.tgz -C "$NYTHRONIX_STATE_DIR"systemctl start nythronix-serverПосле восстановления сверьте последние события в /admin/audit и список операторов через nythronix-server admin list operators. Вместе с состоянием храните NYTHRONIX_PASSWORD_PEPPER и приватный ключ подписи релизов — без них восстановленная копия непригодна. Если вы включили NYTHRONIX_STORAGE=postgres, резервируйте базу штатными средствами Postgres (pg_dump).