README.md

Proxmox VE для Авроры

Клиент для подключения и управления серверами Proxmox VE на операционной системе Аврора.

Возможности

  • Несколько серверов — авторизация по паролю или API-токену, проверка подключения, фоновая проверка доступности с индикатором состояния
  • Главный экран — сводка кластера (версия, узлы, ВМ/CT, нагрузка CPU/память/диски), inline-списки узлов и ВМ с поиском и автообновлением
  • Узлы — модель CPU, количество ядер, ОЗУ занято/всего, диски хранилищ занято/всего, аптайм; перезагрузка и выключение; графики нагрузки (CPU/память/сеть) за час/день/неделю/месяц
  • GPU и температуры — загрузка/память GPU и температура CPU/GPU: на главном экране, в списке узлов, на странице узла и в графиках (за час/день/неделю/месяц) — из внешнего источника метрик на узле, см. раздел ниже
  • Настройки графиков — что показывать (CPU, память, сеть, GPU, температуры) и интервал автообновления 1–60 с (страница «Графики» → меню → «Настройки графиков»)
  • ВМ и контейнеры — фильтрация по типу, мониторинг CPU/ОЗУ/диска, управление питанием (запуск, выключение, перезагрузка, стоп, пауза/возобновление), клонирование, снапшоты
  • Резервные копии — просмотр vzdump-бэкапов, удаление, восстановление в новую ВМ/контейнер
  • Гостевой агент — IP-адреса гостевой системы, версия агента, завершение работы через агента
  • Консоль VNC — встроенная консоль для виртуальных машин (мышь, клавиатура, спецклавиши, Ctrl+Alt+Del)
  • Конфигурация ВМ — просмотр и редактирование имени, памяти, ядер, сокетов, swap, автозапуска, описания
  • Задачи — список задач узла и просмотр журнала выполнения
  • Хранилища — список хранилищ узла с заполненностью
  • Копирование VMID в буфер обмена
  • Проверка TLS-сертификата настраивается для каждого сервера; автопереподключение при истечении сессии (401/403)

Требования

  • ОС Аврора (4.x / 5.x)
  • Сервер Proxmox VE с включённым API (порт 8006)
  • Пользователь с областью авторизации (root@pam) или API-токен

Сборка

Проект собирается через Qt Creator с Aurora SDK или из командной строки:

mb2 build

Результат — RPM-пакет в каталоге RPMS/.

Стек: C++ / Qt 5.6 / QML / Sailfish Silica (auroraapp, Qt5Network, Qt5Quick)

Установка

pkcon install-local ./RPMS/ru.yurasov.proxmox-*.rpm

Использование

  1. «Добавить сервер» — название, адрес, порт (8006), пользователь (root@pam)
  2. Способ авторизации: пароль или API-токен (user@realm!tokenid=uuid)
  3. «Проверить» — тест соединения, «Сохранить» — добавить в список
  4. Коснуться сервера — главный экран с узлами и ВМ/CT

Примечания

  • Сертификаты TLS не проверяются — это необходимо для подключения к Proxmox с самоподписанным сертификатом (настройка по умолчанию).
  • Учётные данные (пароль/токен) хранятся в JSON-файле servers.json в обфусцированном виде (XOR + Base64). Это защита от случайного чтения, а не полноценное шифрование: для большей безопасности используйте API-токен с ограниченными правами.
  • Есть флаг useHttp для отладки по HTTP (не для продакшена).

Структура проекта

src/                 C++ backend
  ProxmoxApi         HTTP-клиент API Proxmox (билет + CSRF, API-токен, ретраи)
  ServerManager      хранение списка серверов (JSON)
  WsClient           минимальный WebSocket-клиент (RFC 6455) без QtWebSockets
  VncClient          RFB 3.8-клиент (консоль noVNC) поверх WebSocket
  VncItem            QQuickPaintedItem — отрисовка кадра и ввод консоли
  main.cpp           точка входа
qml/                 интерфейс (Sailfish Silica)
  pages/             экраны приложения
  components/        BarRow, LineChart, диалоги
  ProxmoxRequest.js  отправка и отмена запросов к API
  ProxmoxUtils.js    форматирование (байты, CPU, аптайм, статусы)
host/                скрипт-источник метрик GPU/температур для узла Proxmox
tests/               юнит-тесты (ServerManager)
rpm/                 spec-файл для сборки RPM
icons/               иконки приложения
translations/        файлы перевода (Qt Linguist)

Метрики GPU и температур

Стандартный API Proxmox VE не отдаёт температуру CPU и данные GPU, поэтому приложение берёт их из внешнего источника, который поднимается на узле.

  1. Установите зависимости на узле: apt install lm-sensors и выполните sensors-detect; для GPU нужен драйвер NVIDIA (nvidia-smi).
  2. Скопируйте скрипт и сделайте его исполняемым:

    install -m 0755 host/pve-gpu-metrics.py /usr/local/bin/pve-gpu-metrics.py
    
  3. Установите и запустите службу:

    install -m 0644 host/pve-gpu-metrics.service /etc/systemd/system/
    systemctl daemon-reload
    systemctl enable --now pve-gpu-metrics
    
  4. Проверьте ответ: curl http://<узел>:9110/.
  5. В приложении при редактировании сервера укажите URL метрик (например http://192.168.2.134:9110/). На странице узла появится блок «GPU и температуры». В URL можно использовать подстановку {node} — например http://{node}:9110/ для кластера.

Формат ответа источника:

{
  "time": 1789500000,
  "cpu": { "temp": 48.0, "cores": [45.0, 47.0] },
  "gpu": [
    { "index": 0, "name": "NVIDIA GeForce RTX 2060 SUPER",
      "util": 37.0, "mem_used": 6766.0, "mem_total": 8192.0,
      "temp": 62.0, "power": 120.5, "fan": 45.0 }
  ]
}

Помимо текущих значений источник отдаёт историю (кольцевой буфер в памяти, запись каждые 15 с): http://узел:9110/history?minutes=60&points=240 (или /?history=1&minutes=60&points=240):

{ "time": 1789500000,
  "points": [ { "t": 1789499700, "cpu": 45.0, "gpu": 37.0,
                "gpu_temp": 62.0, "gpu_mem": 6766.0 } ] }

Графики GPU и температур на странице «Графики» строятся по этой истории; при перезапуске службы история обнуляется.

Безопасность: по умолчанию служба слушает 0.0.0.0:9110 без авторизации. Ограничьте доступ файрволом или задайте токен: поместите секрет в /etc/pve-gpu-metrics.env (права 0600)

PVE_METRICS_TOKEN=<секрет>

юнит подхватывает его через EnvironmentFile=-/etc/pve-gpu-metrics.env. В приложении укажите URL вида http://узел:9110/?token=<секрет> (либо заголовок X-Auth-Token).

Лицензия

MIT

Описание
Клиент для подключения к Proxmox с Аврора
Конвейеры
0 успешных
0 с ошибкой
Разработчики