11 KiB
11 KiB
План разработки
Подробные требования к собственному bootstrap, управляемой настройке Linux и Xray находятся в ТЗ Provisioning и Xray VPN. Все компоненты Server Monitor Manager разрабатываются, версионируются и выпускаются только в этом репозитории.
Текущее автоматическое покрытие поддерживаемых Linux-платформ описано в Linux platform matrix.
Этап 0 — граница и базовая архитектура
- переименовать проект в Server Monitor Manager;
- зафиксировать самостоятельность репозитория и отсутствие межрепозиторных runtime-зависимостей;
- выбрать звёздную архитектуру Hub/Node для первого Mesh;
- разделить monitoring, terminal, Agent, Operator и AI-automation identities;
- описать направленные Links и kill switch;
- выбрать Apache License 2.0;
- добавить CI, форматирование, тесты и release checksums.
Этап 1 — Windows SSH MVP
- создать packaged WinUI 3 приложение;
- добавить адаптивный Overview и профили нескольких серверов;
- генерировать отдельный Ed25519 monitoring SSH key;
- защищать monitoring key и Operator certificate через DPAPI;
- сохранять профили локально без паролей;
- получать CPU/load, RAM, disk, uptime и latency;
- редактировать и удалять серверы;
- поддерживать единственный изменяемый Mesh Hub;
- добавить страницы Servers, Links, Sessions и Settings;
- собирать и запускать x64-приложение;
- добавить группы, теги и избранные серверы;
- добавить настраиваемые alert rules и журнал уведомлений;
- добавить управляемую отдельную terminal key identity вместо зависимости только от обычных пользовательских SSH-ключей.
Этап 2 — постоянный Control и Agent
- ASP.NET Core Control Hub и SQLite;
- self-contained Agent/Control binaries для
linux-x64иlinux-arm64; - исходящие mTLS Agent sessions;
- одноразовые enrollment tokens не более чем на 10 минут;
- локальная генерация Agent private key и CSR;
- отдельные Agent, Operator и source-scoped Automation certificates;
- отзыв и повторная регистрация Node/Operator;
- подтверждение SHA-256 fingerprint Control CA;
- защищённый event stream для Desktop;
- ограниченный offline buffer Agent и downsampling;
- idempotency и replay protection;
- SQLite schema version, retention и backup/restore Control DB + CA;
- добавить Desktop UI управления Automation identities и токенами.
Этап 3 — управляемые Links
- направленные пары source -> destination;
- управление Links из Windows-клиента;
- политики по destination
/32, TCP/UDP и порту; - TTL и фоновое автоматическое истечение;
- состояния Connecting, Active, Disconnecting, Partial, Disabled и Failed;
- версия политики и подтверждение применения helper;
- обязательное восстановление disabled policy после reconnect;
- append-only audit операций Link;
- интеграционные тесты kill switch, process restart и helper failure;
- выполнить физический acceptance Hub + source Node + два destination Node с WireGuard/nftables/reboot.
Этап 4 — мониторинг и терминал
- CPU/load, RAM, swap, disk, inode, network и uptime;
- состояния SSH/WireGuard и latency;
- локальные предупреждения по ресурсам и доступности;
- автоматическое обновление каждые 30 секунд;
- локальная история до 240 точек на сервер;
- графики CPU, RAM и диска;
- экспорт redacted diagnostics;
- прямой SSH-терминал с явным выбором пользователя;
- source-scoped Automation API для AI-агента.
Этап 5 — качество и нагрузка
- HTTP authorization/integration tests;
- Linux Agent parser tests;
- Windows Desktop contract tests;
- тест 100 Node: concurrent heartbeat, inventory и replay;
- проверка TTL, retention, schema и backup/restore;
- CI Windows/Linux и проверка форматирования;
- выполнить полную физическую приёмку по
docs/three-server-acceptance.md; - добавить долговременный soak test и измеримые performance budgets.
Этап 6 — releases
- GitHub prerelease с test-signed Windows MSIX;
- SHA-256 для Windows package и Linux binaries;
- self-contained Control/Agent release artifacts;
- настроить постоянную доверенную Windows code-signing identity;
- синхронизировать все переводы README с текущим release status.
Этап 7 — собственный bootstrap Server Monitor Manager
- добавить bootstrap source в этот репозиторий;
- упаковывать bootstrap, checksum и compatibility manifest в release workflow;
- добавить криптографическую подпись compatibility manifest для production release;
- проверять Ubuntu 22.04/24.04 и Debian 12/13,
amd64/arm64; - добавить non-interactive install/update/rollback/uninstall;
- устанавливать Control/Agent, restricted helper и systemd units;
- локально создавать Agent key/CSR, выполнять mTLS enrollment и не сохранять token;
- добавить собственную установку WireGuard Hub/Node и выдачу внутренних адресов;
- реализовать nftables policy helper вместо временного deny-by-default helper;
- добавить native Ubuntu 22.04/24.04 x64/arm64 VM CI и повторную установку;
- добавить Debian 12/13 x64/arm64 systemd-container restart matrix;
- добавить полный reboot настоящих Debian VM;
- добавить локальную emergency recovery command для текущих Mesh/firewall-компонентов.
Этап 8 — Provisioning control plane
- модели и SQLite migration v2 для ProvisioningJob;
- state machine, confirmations, cancellation, retry и rollback;
- создание, чтение, подтверждение и отмена через Operator API;
- выполнение, retry, verification и rollback в полной state machine;
- обязательные idempotency key, audit reason и job TTL;
- атомарный Agent job channel только для собственного
node_id; - начальные строгие JSON schemas v1 для
preflightиsystem.base-install; - versioned JSON schemas для остальных action type;
- restricted root helper через Unix socket (первый allowlisted action
preflight); - structured redacted events, bounded Operator history и progress;
NeedsReconciliationпосле истечения execution TTL и неопределённого результата;- desired/factual configuration и drift;
- запрет параллельных активных заданий на одном Node (безопасный первый вариант).
Этап 9 — базовая настройка и пользователи
- preflight ОС, архитектуры, SSH, firewall, APT и capabilities;
- Desktop wizard timezone/locale/packages/swap/unattended upgrades;
- versioned package allowlist;
- root-only backups и symlink protection;
- user lifecycle без sudo по умолчанию;
- SSH public keys, fingerprints и permissions;
- sudo/passwordless sudo с отдельным подтверждением;
- block/unblock, sessions, services и безопасное удаление;
- verification и rollback для каждого action.
Этап 10 — firewall и безопасная миграция SSH
- редактор managed firewall rules IPv4/IPv6/CIDR;
- preflight port conflict и effective sshd config;
- managed
sshd_config.ddrop-in; sshd -t,sshd -Tи firewall dry-run;- второе SSH-подключение Desktop на новом порту;
- сохранение host key fingerprint;
- запрет закрытия порта 22 до успешной проверки;
- отдельное подтверждение закрытия старого порта;
- автоматический rollback без разрыва активной сессии.
Этап 11 — системный Xray VPN
- Node-specific encryption VPN subscription secrets;
- установка, update, disable и verification Xray;
- routing exclusions для Mesh, Control, SSH и VPN endpoint;
- automatic rollback timer;
- TCP/UDP/DNS/IPv6 probes и внешний IP до/после;
- system-wide kill switch с management exceptions;
- emergency disable без Control Hub;
- reboot/reconciliation tests.
Этап 12 — Xray VPN для пользователя
- UID/cgroup marking, fwmark, policy route и TPROXY;
- один активный VPN profile на UID;
- TCP, UDP, DNS и IPv6 policy;
- per-user kill switch;
- probes от назначенного UID;
- исключение Xray, Mesh и management traffic;
- отключение assignment при смене UID/удалении пользователя;
- UI assignment и audit;
- VM test: один пользователь через VPN, второй напрямую.
Этап 13 — hardening и дополнительные платформы
- threat-model review Provisioning и VPN;
- полная VM matrix и physical alpha acceptance;
- macOS и Linux Desktop после стабилизации Core/API;
- Android/iOS companion clients;
- push-уведомления без административных secrets у push provider.