server-monitor-manager/agents/_salvage-2026-08-18/smm-deliverables/smm-cleanup-and-install-2026-08-15.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

204 lines
9.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Очистка и установка — готовые блоки
## 1. Очистка · выполнить на каждом сервере
Безопасно на машине, где SMM никогда не стояло: всё пропускается молча. Порядок важен — сначала остановка служб, потом удаление юнитов, иначе процесс осиротеет и продолжит держать порт.
```bash
sudo systemctl disable --now \
ochenstarik-smm-control.service \
ochenstarik-smm-agent.service \
ochenstarik-smm-provisioning-helper.service \
ochenstarik-smm-firewall.service \
wg-quick@smm0.service 2>/dev/null || true
for u in ochenstarik-smm-control ochenstarik-smm-agent ochenstarik-monitor; do
sudo pkill -u "$u" 2>/dev/null || true
done
sleep 2
for u in ochenstarik-smm-control ochenstarik-smm-agent ochenstarik-monitor; do
sudo pkill -9 -u "$u" 2>/dev/null || true
done
sudo rm -f /etc/systemd/system/ochenstarik-smm-*.service
sudo rm -rf /usr/local/lib/ochenstarik-server-monitor-manager
sudo rm -f /usr/local/libexec/ochenstarik-smm-policy-apply /usr/local/libexec/ochenstarik-smm-metrics
sudo rm -f /usr/local/sbin/ochenstarik-smm-emergency /usr/local/sbin/ochenstarik-server-monitor-manager.sh
sudo rm -f /etc/sudoers.d/ochenstarik-smm-control
sudo rm -rf /var/lib/ochenstarik-server-monitor-manager \
/var/lib/ochenstarik-server-monitor-manager-enrollment \
/var/lib/ochenstarik-monitor \
/etc/ochenstarik-server-monitor-manager \
/opt/smm
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
for u in ochenstarik-smm-control ochenstarik-smm-agent ochenstarik-monitor; do
sudo userdel "$u" 2>/dev/null || true
sudo groupdel "$u" 2>/dev/null || true
done
sudo systemctl daemon-reload
sudo systemctl reset-failed 2>/dev/null || true
sudo sysctl --system >/dev/null
```
Проверка — все четыре строки должны сообщить, что пусто:
```bash
ss -lntu | grep -E ':7443|:51820' || echo "порты свободны"
ip -4 route | grep '10\.77\.0\.' || echo "подсеть свободна"
ls /etc/systemd/system/ochenstarik-smm-*.service 2>/dev/null || echo "юнитов нет"
getent passwd ochenstarik-smm-control >/dev/null && echo "пользователь остался" || echo "пользователей нет"
```
Если порт всё ещё занят — процесс осиротел, найдите и снимите:
```bash
sudo ss -lntup | grep -E ':7443|:51820'
sudo kill -9 <PID>
```
---
## 2. Зависимости · на каждом сервере
```bash
sudo apt-get update && sudo apt-get install -y --no-install-recommends \
curl ca-certificates openssl coreutils tar netcat-openbsd
```
## 2b. cosign · на каждом сервере · временный шаг
Установщик проверяет подпись manifest через `cosign`, но `alpha.14` его не поставляет, а в репозиториях Ubuntu его нет. Без этого шага установка обрывается на строке `ERROR: Required command is missing: cosign`.
Для `arm64` замените `amd64` на `arm64` в обеих строках.
```bash
cd /tmp && \
COSIGN_VER=v3.1.3 && \
curl -fsSLO https://github.com/sigstore/cosign/releases/download/$COSIGN_VER/cosign-linux-amd64 && \
curl -fsSLO https://github.com/sigstore/cosign/releases/download/$COSIGN_VER/cosign_checksums.txt && \
grep ' cosign-linux-amd64$' cosign_checksums.txt | sha256sum -c - && \
sudo install -m 0755 cosign-linux-amd64 /usr/local/bin/cosign && \
cosign version
```
Ставится в `/usr/local/bin`, потому что этот каталог входит в `secure_path` sudo — иначе установщик всё равно не увидит бинарь.
Шаг исчезнет в `v0.1.0-alpha.15`: cosign будет обеспечивать сам установщик.
---
## 3. Установка Hub · только на сервере с публичным IP
Путь проверен живой установкой 2026-08-15 на Ubuntu 24.04 x86_64. Команду `smm-setup.sh install-hub` **не используем**: она качает 24 МБ молча, а разбор аргументов делает уже после скачивания. Ниже — по шагам, с видимым прогрессом; заодно окно SSH не засыпает.
Для `arm64` замените `linux-x64` на `linux-arm64` во всех строках.
**3.1. Установщик**
```bash
mkdir -p ~/smm && cd ~/smm && B=https://github.com/ochenstarik-ui/server-monitor-manager/releases/download/v0.1.0-alpha.14 && curl -fsSL -O "$B/smm-setup.sh" -O "$B/smm-setup.sh.sha256" && sha256sum -c smm-setup.sh.sha256
```
**3.2. Пять релизных файлов.** Manifest, подпись и сертификат обязаны лежать **рядом с архивом** — установщик ищет их в каталоге архива
```bash
cd ~/smm && B=https://github.com/ochenstarik-ui/server-monitor-manager/releases/download/v0.1.0-alpha.14 && for f in server-monitor-manager-linux-x64.tar.gz server-monitor-manager-linux-x64.tar.gz.sha256 server-monitor-manager-manifest.json server-monitor-manager-manifest.sig server-monitor-manager-manifest.pem; do printf '>>> %s\n' "$f"; curl -fL --progress-bar -o "$f" "$B/$f"; done && sha256sum -c server-monitor-manager-linux-x64.tar.gz.sha256
```
**3.3. Проверка подписи отдельным шагом** — быстрая, и сразу видно, работает ли cosign
```bash
cd ~/smm && bash smm-setup.sh verify-manifest server-monitor-manager-manifest.json server-monitor-manager-manifest.sig server-monitor-manager-manifest.pem
```
Ожидается `Manifest signature is valid`. Если нет — дальше не идти.
**3.4. Control.** Вместо `ВАШ-ХОСТ` — публичный IP или DNS-имя
```bash
cd ~/smm && bash smm-setup.sh install-control server-monitor-manager-linux-x64.tar.gz ВАШ-ХОСТ 7443
```
**3.5. Mesh**
```bash
cd ~/smm && bash smm-setup.sh mesh-init ВАШ-ХОСТ 51820
```
Шаг 3.4 выведет отпечаток CA — запишите, он понадобится при регистрации каждого Node. Повторно его можно получить так:
```bash
bash ~/smm/smm-setup.sh control-ca-fingerprint
```
### Установленный Hub
- `178.212.13.102` (`host1885995-3.hostland.pro`), Ubuntu 24.04 x86_64, поставлен 2026-08-15 из `v0.1.0-alpha.14`;
- отпечаток CA: `EB:05:E5:16:42:EE:97:28:C2:E9:EA:6F:3E:48:3C:0C:1C:1E:02:E0:ED:9B:AF:7B:BF:24:2C:19:D4:4B:11:C4`;
- публичный ключ WireGuard: `AjN8XwPB11bRQa0fO5ljPlAWc0FxU+fxbeUT8AZczHk=`;
- mesh: `10.77.0.1/24` на `smm0`.
Откройте у хостера **TCP 7443** и **UDP 51820**, и если включён `ufw`:
```bash
sudo ufw allow 7443/tcp comment 'SMM Control' && sudo ufw allow 51820/udp comment 'SMM WireGuard'
```
Проверка:
```bash
sudo curl -sf --cacert /etc/ochenstarik-server-monitor-manager/control-ca.crt \
https://ВАШ-ХОСТ:7443/healthz && echo " — Control отвечает"
```
---
## 4. Установка Node · на каждом из трёх остальных серверов
**Сначала на Hub** выпустите код — он живёт 10 минут, поэтому делайте это непосредственно перед установкой:
```bash
sudo bash ~/smm/smm-setup.sh node-code ai-agent
```
Имена по одному на сервер: `ai-agent`, `home`, `second`. Скопируйте строку `SMMNODE2....`.
**Затем на Node** — шаги 1, 2b и 3.13.3 из этого документа, затем:
```bash
cd ~/smm && sudo bash smm-setup.sh -- install-node server-monitor-manager-linux-x64.tar.gz
```
Разделитель `--` обязателен. У обёртки `smm-setup.sh` есть собственная команда `install-node` **без аргументов**, которая качает всё заново молча; `--` заставляет передать вызов дальше, в bootstrap, где `install-node` принимает путь к уже скачанному архиву. Без `--` получите `install-node takes no arguments`.
Установщик запросит код — вставьте `SMMNODE2....`, ввод скрытый. Сверьте показанный отпечаток CA с тем, что выдал Hub, введите `yes`.
На выходе появится `SMMPEER1....` — скопируйте и активируйте **на Hub**:
```bash
sudo bash ~/smm/smm-setup.sh peer-add 'SMMPEER1....'
```
После всех трёх, на Hub:
```bash
sudo bash ~/smm/smm-setup.sh mesh-status
```
Три строки со статусом `active` и свежими handshake — mesh собран.
---
## Порядок целиком
1. Очистка на всех четырёх машинах.
2. Зависимости на всех четырёх.
3. Hub на сервере с публичным IP, открыть порты.
4. Node на трёх остальных, по одному: код на Hub → установка на Node → `peer-add` на Hub.
5. `mesh-status` — три `active`.
6. Приёмка с вашей машины.
Установка не начнётся, пока не выпущен `v0.1.0-alpha.14`. Проверка:
```bash
curl -fsSI https://github.com/ochenstarik-ui/server-monitor-manager/releases/download/v0.1.0-alpha.14/smm-setup.sh | head -1
```