5.1 KiB
Контракт Linux-установщика
Единственный исходный файл ochenstarik-server-monitor-manager.sh хранится в ochenstarik-ui/lightweight-server. В репозитории desktop client не должна находиться устаревающая копия.
Поддерживаемые роли
Monitor only
Режим install устанавливает SSH monitoring endpoint без WireGuard:
- Ubuntu/Debian с systemd;
- публичный ключ
ssh-ed25519из Windows-клиента; - отдельный системный пользователь
ochenstarik-monitorбез пароля; - root-owned forced-command;
- сохранение существующего SSH-порта;
- отсутствие нового публичного API.
Hub
Режим hub дополнительно:
- устанавливает WireGuard и nftables;
- запрашивает публичный IPv4/домен и UDP-порт;
- создаёт
smm0с адресом10.77.0.1/24; - включает IPv4 forwarding;
- устанавливает минимальный root helper и systemd restore unit;
- хранит публичные identities Node и политики Links;
- разрешает транзит только по явной политике.
Node
Режим node:
- локально генерирует WireGuard keypair;
- принимает одноразовый enrollment token;
- отправляет Hub только публичный ключ;
- получает внутренний адрес и аутентифицированное подтверждение конфигурации;
- создаёт только исходящее WireGuard-соединение;
- не требует белого IP или входящего публичного порта.
Постоянный control layer (alpha)
После установки существующих ролей отдельные действия добавляют постоянные сервисы:
install-control-hubскачивает release-архив под amd64/arm64, проверяет SHA-256, создаёт локальный CA, HTTPS-сертификат Hub, SQLite-каталог и изолированный systemd service;control-code NAMEсоздаёт десятиминутный token и кодSMMCTL1, содержащий URL Hub и только публичный CA;install-control-agentпроверяет CA, локально создаёт ключ и CSR, регистрирует сертификат и запускает исходящий mTLS Agent через systemd.
Приватный ключ Control CA не включается в SMMCTL1, а приватный ключ Agent не покидает Node. По умолчанию Control Hub слушает TCP 7443.
Команды жизненного цикла
Целевой интерфейс:
install-monitor
install-hub
install-node
install-control-hub
install-control-agent
control-code NAME
status
update
rollback
uninstall-monitor
uninstall-node
uninstall-hub
Каждая установка и обновление должны быть идемпотентными. Перед изменением рабочей конфигурации создаётся root-only backup. Ошибка проверки или запуска автоматически восстанавливает последнюю рабочую версию.
Удаление роли должно убрать только принадлежащие ей файлы, units, интерфейсы и правила. Удаление Hub требует отдельного подтверждения и не должно молча оставлять включённый forwarding или nftables ACL.
Forced-command
Ключ мониторинга допускает только:
metrics;- read-only
mesh nodes,mesh links,mesh statusна Hub; - строго типизированные изменения Link с проверкой параметров.
Он не должен позволять shell, PTY, agent forwarding, TCP forwarding или произвольную команду. Полный SSH-терминал использует отдельную identity.
Минимальный metrics snapshot
PROTOCOL=1
HOSTNAME=server-name
UPTIME_SECONDS=12345
LOAD1=0.42
CPU_COUNT=4
MEM_TOTAL_KB=...
MEM_AVAILABLE_KB=...
SWAP_TOTAL_KB=...
SWAP_FREE_KB=...
DISK_TOTAL_KB=...
DISK_AVAILABLE_KB=...
DISK_INODES_TOTAL=...
DISK_INODES_FREE=...
NETWORK_RX_BYTES=...
NETWORK_TX_BYTES=...
KERNEL=...
Проверки перед применением
bash -nи ShellCheck;- проверка SSH-ключа через
ssh-keygen; sshd -tперед reload;wg-quick stripи пробный запуск конфигурации;nft --checkперед заменой таблицы;- проверка systemd unit;
- сохранение активной SSH-сессии до подтверждения нового доступа.