server-monitor-manager/agents/_salvage-2026-08-18/smm-deliverables/Старые задачи/smm-install-commands-2026-08-07.md
Ochenstarik 23eb3f5233 chore(agents): разбор рабочих папок с диска на 2026-08-18
Задания, отчёты и патчи, лежавшие в C:\Users\Ochenstarik\projects и в
домашней папке, перенесены в agents/. Разложено по агентам там, где имя
файла позволяло определить автора; остальное — в _salvage-2026-08-18/
и разбирается вручную.

Патчи в notes/salvage-2026-08-18/ — незакоммиченная работа из брошенных
рабочих копий: она существовала только на диске.

Тяжёлое (релизные архивы, инсталляторы, наборы данных) в репозиторий не
попало: оно лежит рядом, в Agent_projects/_archive и Agent_projects/_data.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 14:19:54 +07:00

10 KiB
Raw Blame History

Команды установки — копировать и выполнять

Машины

Роль Что ставим Требования
A — публичный IP Control Hub свободны TCP 7443, UDP 51820
B Node ai-agent только исходящий доступ к A
C Node home только исходящий доступ к A
D Node second только исходящий доступ к A

D может быть виртуалкой дома за NAT — входящие порты Node не нужны. Если четвёртой машины нет, приёмка пройдёт частично: два независимых назначения нужны, чтобы проверить, что отключение одного Link не рвёт второй.

Ниже всё для x86_64. Для arm64 замените linux-x64 на linux-arm64 во всех командах.


Шаг 0. На вашей Windows-машине: собрать артефакты

Опубликованный релиз v0.1.0-alpha.6 устарел — в нём нет реконсиляции Links, и приёмка на нём проверит не то. Собираем из текущего main.

gh workflow run "Linux release artifacts" --repo ochenstarik-ui/server-monitor-manager --ref main

Подождать ~3 минуты, затем:

gh run list --repo ochenstarik-ui/server-monitor-manager --workflow "Linux release artifacts" --limit 1

Взять ID из вывода и скачать:

gh run download <ID> --repo ochenstarik-ui/server-monitor-manager -D C:\Users\Ochenstarik\smm-artifacts

Получится три папки. Нужные файлы:

C:\Users\Ochenstarik\smm-artifacts\server-monitor-manager-bootstrap\ochenstarik-server-monitor-manager.sh
C:\Users\Ochenstarik\smm-artifacts\server-monitor-manager-bootstrap\ochenstarik-server-monitor-manager.sh.sha256
C:\Users\Ochenstarik\smm-artifacts\server-monitor-manager-linux-x64\server-monitor-manager-linux-x64.tar.gz
C:\Users\Ochenstarik\smm-artifacts\server-monitor-manager-linux-x64\server-monitor-manager-linux-x64.tar.gz.sha256

Скопировать на каждый из четырёх серверов:

$files = @(
  "C:\Users\Ochenstarik\smm-artifacts\server-monitor-manager-bootstrap\ochenstarik-server-monitor-manager.sh",
  "C:\Users\Ochenstarik\smm-artifacts\server-monitor-manager-bootstrap\ochenstarik-server-monitor-manager.sh.sha256",
  "C:\Users\Ochenstarik\smm-artifacts\server-monitor-manager-linux-x64\server-monitor-manager-linux-x64.tar.gz",
  "C:\Users\Ochenstarik\smm-artifacts\server-monitor-manager-linux-x64\server-monitor-manager-linux-x64.tar.gz.sha256"
)
foreach ($host_ in @("<A>","<B>","<C>","<D>")) {
  ssh <пользователь>@$host_ "mkdir -p ~/smm"
  scp $files <пользователь>@${host_}:~/smm/
}

Шаг 1. Зависимости и предпроверка — на каждом из четырёх серверов

Поддерживаются Ubuntu 22.04 и 24.04, Debian 12 и 13. На другой системе preflight откажет.

Установить зависимости:

sudo apt-get update
sudo apt-get install -y --no-install-recommends \
  openssl coreutils tar sudo util-linux ca-certificates

Дополнительно на сервере B (Node ai-agent, источник) — без него приёмка упадёт на последнем шаге:

sudo apt-get install -y --no-install-recommends netcat-openbsd

Проверка связности в приёмке выполняется командой nc на самом источнике, а скрипт этого не проверяет — он проверяет наличие nc только на вашей машине.

wireguard-tools, nftables и iproute2 ставит сам bootstrap на шаге mesh-init, отдельно их устанавливать не нужно.

Предпроверка:

cd ~/smm
. /etc/os-release; echo "ОС: $ID $VERSION_ID $(uname -m)"; ps -p 1 -o comm=
echo "--- порты 7443 / 51820 ---"; ss -lntup | grep -E ':7443|:51820' || echo "свободны"
echo "--- таблицы nftables ---"; nft list tables 2>/dev/null || echo "nft не установлен"
echo "--- интерфейсы WireGuard ---"; wg show interfaces 2>/dev/null || echo "нет"
echo "--- подсеть 10.77.0.0/24 ---"; ip -4 route | grep '10\.77\.' || echo "свободна"
echo "--- 3x-ui / xray ---"; ss -lntup | grep -Ei 'x-ui|xray' || echo "не найдено"

Продолжать, только если ОС — Ubuntu 22.04/24.04 или Debian 12/13, PID 1 это systemd, порты свободны и подсеть не занята.

Снимите снапшоты у провайдера перед следующим шагом.


Шаг 2. Сервер A — Control Hub

cd ~/smm
sha256sum -c ochenstarik-server-monitor-manager.sh.sha256
chmod 700 ochenstarik-server-monitor-manager.sh
sudo ./ochenstarik-server-monitor-manager.sh preflight
sudo ./ochenstarik-server-monitor-manager.sh verify-release ./server-monitor-manager-linux-x64.tar.gz

Замените <A-хост> на публичный IP или DNS-имя сервера A:

sudo ./ochenstarik-server-monitor-manager.sh install-control ./server-monitor-manager-linux-x64.tar.gz <A-хост> 7443
sudo ./ochenstarik-server-monitor-manager.sh mesh-init <A-хост> 51820
sudo ./ochenstarik-server-monitor-manager.sh status

Откройте во внешнем firewall провайдера TCP 7443 и UDP 51820.

Проверьте, что 3x-ui работает, прежде чем идти дальше.


Шаг 3. Регистрация Node — по одному

Для каждого Node цикл одинаковый: код выпускается на A, вводится на Node, обратный код возвращается на A.

3.1. На A — выпустить код для ai-agent

sudo ./ochenstarik-server-monitor-manager.sh node-code ai-agent
sudo ./ochenstarik-server-monitor-manager.sh control-ca-fingerprint

Скопируйте строку SMMNODE2.... и отпечаток CA.

3.2. На B — установить Node

cd ~/smm
sha256sum -c ochenstarik-server-monitor-manager.sh.sha256
chmod 700 ochenstarik-server-monitor-manager.sh
sudo ./ochenstarik-server-monitor-manager.sh preflight
sudo ./ochenstarik-server-monitor-manager.sh install-node ./server-monitor-manager-linux-x64.tar.gz

Вставьте SMMNODE2.... в скрытый запрос. Сверьте показанный отпечаток CA с тем, что выдал A, и введите yes.

На выходе будет строка SMMPEER1.... — скопируйте её.

3.3. На A — активировать peer

sudo ./ochenstarik-server-monitor-manager.sh peer-add 'SMMPEER1....'
sudo ./ochenstarik-server-monitor-manager.sh mesh-status

3.4. Повторить 3.13.3 для C и D

Для C — node-code home, для D — node-code second.

После всех трёх на A:

sudo ./ochenstarik-server-monitor-manager.sh mesh-status

Должны быть три строки со статусом active и свежими handshake. Запишите адреса home и second — они понадобятся дальше.


Шаг 4. Проверка перед приёмкой

На A:

sudo systemctl is-active ochenstarik-smm-control.service
sudo curl --fail --silent --cacert /etc/ochenstarik-server-monitor-manager/control-ca.crt https://127.0.0.1:7443/healthz && echo " Control OK"

На B, C, D:

sudo systemctl is-active ochenstarik-smm-agent.service
sudo systemctl is-active ochenstarik-smm-provisioning-helper.service
sudo wg show smm0

На каждом — убедитесь, что 3x-ui и Xray живы:

sudo systemctl is-active x-ui 2>/dev/null || sudo systemctl list-units --type=service | grep -i 'x-ui\|xray'

Шаг 5. Приёмка — с вашей машины

Запускать из WSL (Ubuntu) или Git Bash. В WSL поставить зависимости:

sudo apt-get update
sudo apt-get install -y --no-install-recommends curl jq openssl openssh-client netcat-openbsd coreutils
cd /путь/к/клону/server-monitor-manager

export HUB_SSH_HOST=<A>
export HUB_SSH_USER=<пользователь>
export SOURCE_SSH_HOST=<B>
export SOURCE_SSH_USER=<пользователь>
export SSH_IDENTITY_FILE="$HOME/.ssh/id_ed25519"
export SOURCE_NODE_ID=ai-agent
export HOME_NODE_ID=home
export SECOND_NODE_ID=second
export HOME_WG_IP=10.77.0.<из mesh-status>
export SECOND_WG_IP=10.77.0.<из mesh-status>
export TARGET_PORT=22

bash tests/acceptance/three-server-mesh.sh

Этот прогон ничего не перезагружает. Успех — строка THREE_SERVER_ACCEPTANCE=PASS.

Полная приёмка добавляет перезагрузку A и B — делать в низкий трафик:

SMM_ACCEPT_RESTORE=1 SMM_ACCEPT_REBOOT=1 bash tests/acceptance/three-server-mesh.sh

Откат, если что-то пошло не так

На Node:

sudo ochenstarik-server-monitor-manager.sh uninstall-agent --purge

На Hub:

sudo ochenstarik-server-monitor-manager.sh uninstall-control --confirm-destroy-control

На любом сервере — полная зачистка следов mesh:

sudo systemctl disable --now wg-quick@smm0 2>/dev/null || true
sudo rm -f /etc/wireguard/smm0.conf /etc/sysctl.d/90-ochenstarik-smm-mesh.conf
sudo nft delete table inet ochenstarik_smm 2>/dev/null || true
sudo sysctl --system

Аварийно отключить mesh, не трогая Control, Agent, SSH и 3x-ui:

sudo ochenstarik-smm-emergency status
sudo ochenstarik-smm-emergency mesh-disable