91 lines
7.1 KiB
Markdown
91 lines
7.1 KiB
Markdown
# Server Monitor Manager
|
||
|
||
Лёгкая система мониторинга и безопасного управления Linux-серверами с одного ПК. Первый клиент создаётся для Windows; после стабилизации протокола появятся клиенты для других настольных систем и мобильных устройств.
|
||
|
||
## Основные задачи
|
||
|
||
- единая панель для нескольких личных и рабочих серверов;
|
||
- CPU/load, память, корневой диск, задержка и uptime через ограниченный SSH forced-command;
|
||
- SSH-терминал и сохранённые подключения без передачи приватных ключей серверу управления;
|
||
- группы серверов, теги, избранное и сводные предупреждения;
|
||
- явное включение и ручное отключение защищённых связей между серверами;
|
||
- ограниченный доступ автоматизированных инструментов, например Hermes, к выбранному серверу разработки;
|
||
- маленький Linux-агент без тяжёлой панели, Docker и отдельной базы данных на каждом узле.
|
||
|
||
## Архитектура
|
||
|
||
```text
|
||
Windows client
|
||
|
|
||
| HTTPS / WebSocket, mTLS
|
||
v
|
||
Control node (может работать на одном из ваших серверов)
|
||
^
|
||
| только исходящие соединения агентов
|
||
|
|
||
Linux agents ---- управляемые WireGuard links ---- Linux agents
|
||
```
|
||
|
||
Мониторинг и межсерверные связи разделены. Регистрация агента не создаёт сетевого туннеля и не выдаёт доступ к SSH. Каждая связь создаётся отдельно, имеет список разрешённых адресов и портов, может иметь срок действия и всегда поддерживает ручной `Disconnect`.
|
||
|
||
Подробности: [архитектура](docs/architecture.md), [модель безопасности](docs/security-model.md), [план разработки](docs/roadmap.md) и [контракт Linux-установщика](docs/installer-contract.md).
|
||
|
||
## Планируемая структура
|
||
|
||
```text
|
||
src/
|
||
ServerMonitorManager.Desktop/ WinUI 3, Windows-first
|
||
ServerMonitorManager.Core/ общие модели и сценарии
|
||
ServerMonitorManager.Agent/ лёгкий Linux-агент
|
||
ServerMonitorManager.Control/ API, события, аудит и координация
|
||
docs/
|
||
deploy/
|
||
tests/
|
||
```
|
||
|
||
## Текущий статус
|
||
|
||
Проект находится на стадии первого тестируемого Windows MVP. Репозиторий переименован из `mobile-server-manager`, потому что первой целевой платформой теперь является Windows. Клиент создаёт отдельный Ed25519-ключ, сохраняет профили локально и получает живые метрики серверов через системный OpenSSH.
|
||
|
||
Установочный скрипт Linux-части хранится в репозитории [`ochenstarik-ui/lightweight-server`](https://github.com/ochenstarik-ui/lightweight-server) под именем `ochenstarik-server-monitor-manager.sh`. Его копия находится в [`deploy/`](deploy/). Скрипт создаёт отдельного пользователя `ochenstarik-monitor` и SSH forced-command: ключ мониторинга не получает shell, PTY, port forwarding или право выполнять произвольные команды.
|
||
|
||
## Быстрый тест на трёх серверах
|
||
|
||
1. Запустите Windows-клиент и нажмите `SSH-ключ` → `Копировать`.
|
||
2. На каждом Ubuntu/Debian-сервере запустите одну команду:
|
||
|
||
```bash
|
||
curl -fsSL \
|
||
https://raw.githubusercontent.com/ochenstarik-ui/lightweight-server/agent/server-monitor-installer/ochenstarik-server-monitor-manager.sh \
|
||
| sudo bash -s -- install
|
||
```
|
||
|
||
3. Вставьте скопированный публичный ключ по запросу скрипта.
|
||
4. В приложении нажмите `Добавить сервер`, укажите IP/домен, текущий SSH-порт и пользователя `ochenstarik-monitor`.
|
||
5. Повторите для остальных серверов и нажмите `Обновить`.
|
||
|
||
Приватный ключ хранится в локальном каталоге packaged-приложения Windows. Первый SSH-host key принимается в режиме `accept-new`, затем проверяется по отдельному `known_hosts` приложения.
|
||
|
||
Для повторяемой установки без ручного ввода публичный ключ можно передать через окружение. Это публичная часть ключа, не секрет:
|
||
|
||
```bash
|
||
curl -fsSL \
|
||
https://raw.githubusercontent.com/ochenstarik-ui/lightweight-server/agent/server-monitor-installer/ochenstarik-server-monitor-manager.sh \
|
||
| sudo env SERVER_MONITOR_PUBLIC_KEY='ssh-ed25519 AAAA... server-monitor-manager' \
|
||
bash -s -- install
|
||
```
|
||
|
||
Для предварительной проверки вместо запуска через pipe скачайте файл, выполните `bash -n` и просмотрите его содержимое.
|
||
|
||
## Принципы безопасности
|
||
|
||
- никаких общих root-паролей и приватных SSH-ключей в control node;
|
||
- на первом SSH-MVP — отдельный ключ мониторинга и pinned `known_hosts`; enrollment tokens появятся вместе с постоянным агентом;
|
||
- отдельная идентичность для пользователя, устройства, агента и автоматизации;
|
||
- опасные действия требуют повторного подтверждения и попадают в неизменяемый аудит;
|
||
- доступ Hermes выдаётся отдельному Unix-пользователю и SSH-ключу с минимальными правами;
|
||
- отключение Link удаляет маршруты и peer-конфигурацию, а не только скрывает кнопку в интерфейсе.
|
||
|
||
## Лицензия и секреты
|
||
|
||
Лицензия будет выбрана до публикации первого исходного релиза. Токены регистрации, ключи WireGuard, SSH-ключи, сертификаты устройств и production-конфигурация не должны попадать в Git.
|