Задания, отчёты и патчи, лежавшие в 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>
141 lines
6.3 KiB
Markdown
141 lines
6.3 KiB
Markdown
# Установка на серверы — одной командой
|
||
|
||
Работает **после выпуска `v0.1.0-alpha.14`**. Сейчас опубликован `alpha.13`, а в нём подпись без сертификата, поэтому проверка на нём откажет. Выпуск alpha.14 — задание Hermes.
|
||
|
||
Проверить, что релиз вышел:
|
||
|
||
```bash
|
||
curl -fsSI https://github.com/ochenstarik-ui/server-monitor-manager/releases/download/v0.1.0-alpha.14/smm-setup.sh | head -1
|
||
```
|
||
|
||
Ответ `HTTP/2 200` — можно ставить. `404` — релиз ещё не опубликован.
|
||
|
||
---
|
||
|
||
## Роли
|
||
|
||
Нужны четыре машины: Hub плюс три Node. Hub и Node нельзя совмещать — оба пишут `/etc/wireguard/smm0.conf`.
|
||
|
||
| Машина | Роль | Требования |
|
||
|---|---|---|
|
||
| A, публичный IP | Control Hub | свободны TCP 7443, UDP 51820 |
|
||
| B | Node `ai-agent` | только исходящий доступ |
|
||
| C | Node `home` | только исходящий доступ |
|
||
| D | Node `second` | только исходящий доступ, годится домашняя ВМ |
|
||
|
||
Ниже всё для `x86_64`. Для `arm64` замените `linux-x64` на `linux-arm64`.
|
||
|
||
Снимите снапшоты у провайдера до начала.
|
||
|
||
---
|
||
|
||
## Hub — одна команда
|
||
|
||
Подставьте публичное имя сервера A вместо `ВАШ-ХОСТ`:
|
||
|
||
```bash
|
||
TAG=v0.1.0-alpha.14 ARCH=linux-x64 HOST=ВАШ-ХОСТ; \
|
||
B=https://github.com/ochenstarik-ui/server-monitor-manager/releases/download/$TAG; \
|
||
sudo apt-get update -qq && sudo apt-get install -y -qq --no-install-recommends curl ca-certificates openssl coreutils tar netcat-openbsd && \
|
||
mkdir -p ~/smm && cd ~/smm && \
|
||
for f in smm-setup.sh smm-setup.sh.sha256 server-monitor-manager-$ARCH.tar.gz server-monitor-manager-$ARCH.tar.gz.sha256 server-monitor-manager-manifest.json server-monitor-manager-manifest.sig server-monitor-manager-manifest.pem; do curl -fsSL -O "$B/$f"; done && \
|
||
sha256sum -c smm-setup.sh.sha256 && sha256sum -c server-monitor-manager-$ARCH.tar.gz.sha256 && \
|
||
sudo bash smm-setup.sh install-control server-monitor-manager-$ARCH.tar.gz "$HOST" 7443 && \
|
||
sudo bash smm-setup.sh mesh-init "$HOST" 51820
|
||
```
|
||
|
||
Команда скачивает установщик, архив и все три файла подписи, сверяет контрольные суммы, ставит Control и поднимает mesh. Проверка подписи manifest выполняется внутри `install-control` — если она не сойдётся, установка прервётся.
|
||
|
||
Затем откройте в панели хостера **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 отвечает"
|
||
```
|
||
|
||
---
|
||
|
||
## Node — одна команда
|
||
|
||
На каждом из B, C, D. Сначала на Hub выпустите код **непосредственно перед установкой** — он живёт 10 минут:
|
||
|
||
```bash
|
||
sudo bash ~/smm/smm-setup.sh node-code ai-agent
|
||
```
|
||
|
||
Для C — `home`, для D — `second`. Скопируйте строку `SMMNODE2....`.
|
||
|
||
Затем на Node:
|
||
|
||
```bash
|
||
TAG=v0.1.0-alpha.14 ARCH=linux-x64; \
|
||
B=https://github.com/ochenstarik-ui/server-monitor-manager/releases/download/$TAG; \
|
||
sudo apt-get update -qq && sudo apt-get install -y -qq --no-install-recommends curl ca-certificates openssl coreutils tar netcat-openbsd && \
|
||
mkdir -p ~/smm && cd ~/smm && \
|
||
for f in smm-setup.sh smm-setup.sh.sha256 server-monitor-manager-$ARCH.tar.gz server-monitor-manager-$ARCH.tar.gz.sha256 server-monitor-manager-manifest.json server-monitor-manager-manifest.sig server-monitor-manager-manifest.pem; do curl -fsSL -O "$B/$f"; done && \
|
||
sha256sum -c smm-setup.sh.sha256 && sha256sum -c server-monitor-manager-$ARCH.tar.gz.sha256 && \
|
||
sudo bash smm-setup.sh install-node server-monitor-manager-$ARCH.tar.gz
|
||
```
|
||
|
||
Установщик спросит код — вставьте `SMMNODE2....`, ввод скрытый. Сверьте показанный отпечаток CA с тем, что выдаёт Hub по команде `sudo bash ~/smm/smm-setup.sh control-ca-fingerprint`, и введите `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.
|
||
|
||
---
|
||
|
||
## Приёмка
|
||
|
||
С вашей машины, из WSL или Git Bash, в клоне репозитория:
|
||
|
||
```bash
|
||
export HUB_SSH_HOST=A HUB_SSH_USER=пользователь
|
||
export SOURCE_SSH_HOST=B SOURCE_SSH_USER=пользователь
|
||
export SSH_IDENTITY_FILE="$HOME/.ssh/id_ed25519"
|
||
export SOURCE_NODE_ID=ai-agent HOME_NODE_ID=home SECOND_NODE_ID=second
|
||
export HOME_WG_IP=10.77.0.x SECOND_WG_IP=10.77.0.y
|
||
export TARGET_PORT=22
|
||
bash tests/acceptance/three-server-mesh.sh
|
||
```
|
||
|
||
Адреса возьмите из `mesh-status`. Этот прогон ничего не перезагружает. Успех — `THREE_SERVER_ACCEPTANCE=PASS`.
|
||
|
||
Полная приёмка добавляет перезагрузку Hub и источника — делать в низкий трафик:
|
||
|
||
```bash
|
||
SMM_ACCEPT_RESTORE=1 SMM_ACCEPT_REBOOT=1 bash tests/acceptance/three-server-mesh.sh
|
||
```
|
||
|
||
---
|
||
|
||
## Откат
|
||
|
||
```bash
|
||
sudo bash ~/smm/smm-setup.sh uninstall-agent --purge
|
||
sudo bash ~/smm/smm-setup.sh uninstall-control --confirm-destroy-control
|
||
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
|
||
```
|
||
|
||
Аварийно отключить mesh, не трогая Control, Agent, SSH и 3x-ui:
|
||
|
||
```bash
|
||
sudo ochenstarik-smm-emergency mesh-disable
|
||
```
|