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
Использование
- «Добавить сервер» — название, адрес, порт (8006), пользователь (
root@pam) - Способ авторизации: пароль или API-токен (
user@realm!tokenid=uuid) - «Проверить» — тест соединения, «Сохранить» — добавить в список
- Коснуться сервера — главный экран с узлами и ВМ/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, поэтому приложение берёт их из внешнего источника, который поднимается на узле.
- Установите зависимости на узле:
apt install lm-sensorsи выполнитеsensors-detect; для GPU нужен драйвер NVIDIA (nvidia-smi). -
Скопируйте скрипт и сделайте его исполняемым:
install -m 0755 host/pve-gpu-metrics.py /usr/local/bin/pve-gpu-metrics.py -
Установите и запустите службу:
install -m 0644 host/pve-gpu-metrics.service /etc/systemd/system/ systemctl daemon-reload systemctl enable --now pve-gpu-metrics - Проверьте ответ:
curl http://<узел>:9110/. - В приложении при редактировании сервера укажите 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