| docs | ||
| src/ServerMonitorManager.Desktop | ||
| .gitignore | ||
| README.md | ||
Server Monitor Manager
Лёгкая система мониторинга и безопасного управления Linux-серверами с одного ПК. Первый клиент создаётся для Windows; после стабилизации протокола появятся клиенты для других настольных систем и мобильных устройств.
Основные задачи
- единая панель для нескольких личных и рабочих серверов;
- CPU/load, память, корневой диск, задержка и uptime через ограниченный SSH forced-command;
- SSH-терминал и сохранённые подключения без передачи приватных ключей серверу управления;
- группы серверов, теги, избранное и сводные предупреждения;
- явное включение и ручное отключение защищённых связей между серверами;
- ограниченный доступ любого AI-агента к выбранному серверу разработки;
- маленький Linux-агент без тяжёлой панели, Docker и отдельной базы данных на каждом узле.
Архитектура
Windows client -- ограниченный SSH --> главный WireGuard Hub с белым IP
^
| исходящие WireGuard-соединения
|
AI-агент / Home / другие серверы
Hub объединяет узлы в приватной подсети, но по умолчанию запрещает транзит между ними. Каждая связь источник → цель включается и отключается отдельно. Поэтому можно оставить AI-агент → Home, отключив только AI-агент → Server2. Обратное направление не появляется автоматически.
Подробности: архитектура, модель безопасности, план разработки и контракт Linux-установщика.
Планируемая структура
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 под именем ochenstarik-server-monitor-manager.sh. Он устанавливает режим Hub или Node, создаёт отдельного пользователя ochenstarik-monitor и SSH forced-command: ключ приложения не получает shell, PTY, port forwarding или право выполнять произвольные команды.
Быстрый тест на трёх серверах
- Запустите Windows-клиент и нажмите
SSH-ключ→Копировать. - На сервере с белым IP скачайте установщик и выберите режим Hub:
curl -fLO https://raw.githubusercontent.com/ochenstarik-ui/lightweight-server/agent/server-monitor-installer/ochenstarik-server-monitor-manager.sh
chmod 700 ochenstarik-server-monitor-manager.sh
sudo ./ochenstarik-server-monitor-manager.sh hub
- Откройте выбранный UDP-порт WireGuard (по умолчанию
51820) и создайте коды узлов:
sudo ochenstarik-smm node-code ai-agent
sudo ochenstarik-smm node-code home
sudo ochenstarik-smm node-code server2
- На каждом вторичном сервере запустите
sudo ./ochenstarik-server-monitor-manager.sh node, вставьте SSH-ключ приложения и код именно этого узла. Белый IP вторичным серверам не нужен. - В приложении добавьте главный сервер с пользователем
ochenstarik-monitorи отметьтеЭто главный Mesh Hub. - Нажмите обновление в панели связей, выберите источник и цель, затем
РазрешитьилиОтключить.
Приватный ключ хранится в локальном каталоге packaged-приложения Windows. Первый SSH-host key принимается в режиме accept-new, затем проверяется по отдельному known_hosts приложения.
Для предварительной проверки вместо запуска через pipe скачайте файл, выполните bash -n и просмотрите его содержимое.
Код Node содержит приватный ключ WireGuard узла. Считайте его секретом, используйте только на предназначенном сервере и не сохраняйте в Git или истории сообщений.
Принципы безопасности
- никаких общих root-паролей и приватных SSH-ключей на Hub;
- отдельный ключ мониторинга и pinned
known_hosts; код регистрации Node передаётся один раз вручную; - отдельная идентичность для пользователя, устройства, агента и автоматизации;
- опасные действия требуют повторного подтверждения и попадают в неизменяемый аудит;
- доступ AI-агенту выдаётся отдельному Unix-пользователю и SSH-ключу с минимальными правами;
- отключение Link сразу удаляет разрешённую пару из nftables на Hub, не затрагивая другие связи узла.
Лицензия и секреты
Лицензия будет выбрана до публикации первого исходного релиза. Токены регистрации, ключи WireGuard, SSH-ключи, сертификаты устройств и production-конфигурация не должны попадать в Git.