Версия проекта была обновлена до 0.10.0: тесты, CI и документация образа

- tests/: 55 тестов web-панели, авторизации, сети и обновлений,
  все страницы рендерятся на замоканных virsh/systemctl;
- GitHub Actions: pyflakes + pytest на Python 3.11–3.13, shellcheck,
  сборка ISO amd64/arm64 по тегу v* или вручную;
- Makefile: make check / make test / make iso;
- docs/IMAGE.md и README: установка с ISO, продакшен-настройки,
  разработка;
- updates/versions.json: описание версии 0.10.0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019LEUXMcdZo7b87mjkUsPgg
Этот коммит содержится в:
Claude
2026-09-25 06:36:26 +00:00
родитель 85648739dc
Коммит 110a37f435
13 изменённых файлов: 749 добавлений и 5 удалений
+57 -4
Просмотреть файл
@@ -4,7 +4,7 @@
Цель проекта — собрать понятную, компактную и расширяемую систему для управления виртуальными машинами, ISO-образами, NAT/bridge-сетью, пробросом портов, диагностикой, web-console/noVNC, backup/snapshot-функциями и будущей кластеризацией.
> Текущий статус: ранняя стадия разработки. Уже есть one-command установка, автоопределение профиля хоста, web-панель, авторизация через Linux-пользователя, ISO-менеджер, создание VM из интерфейса, журнал операций, NAT Router для VPS/ARM edge nodes и port forwarding.
> Текущий статус: версия 0.10 — код панели покрыт тестами, есть установочный ISO-образ. Уже есть one-command установка, автоопределение профиля хоста, web-панель, авторизация через Linux-пользователя, ISO-менеджер, создание VM из интерфейса, журнал операций, NAT Router для VPS/ARM edge nodes и port forwarding.
---
@@ -35,6 +35,19 @@ generic-arm64 # другая ARM64-плата
---
## Установка с ISO-образа
Для установки на «голое» железо собирается загрузочный ISO на базе Ubuntu Server 24.04: установщик спрашивает только сеть, диск и пользователя, а при первой загрузке нода настраивается сама.
```bash
make iso # dist/virtuality-<версия>-ubuntu-24.04-amd64.iso
make iso ARCH=arm64
```
Подробно: [`docs/IMAGE.md`](docs/IMAGE.md).
---
## Быстрая установка одной командой
Одна команда работает и под `root`, и под обычным пользователем с `sudo`:
@@ -186,6 +199,8 @@ curl -fsSL https://raw.githubusercontent.com/viktor138irk/virtuality/main/instal
/var/lib/virtuality/backups # backups
/var/log/virtuality # логи установки и диагностики
/var/log/virtuality/operations # JSON/log фоновых операций
/var/lib/virtuality/config/web.env # настройки ноды: порт, пользователь, автообновление
/var/lib/virtuality/disk-images # загруженные образы дисков
/etc/virtuality/nftables/virtuality.nft # nftables-правила Virtuality
```
@@ -375,6 +390,8 @@ sudo virsh pool-refresh virtuality-iso
## Обновление
Из web-панели: раздел `/update`. Вручную:
```bash
cd /opt/virtuality/source
sudo git pull
@@ -382,6 +399,8 @@ sudo bash scripts/install_web_panel.sh
sudo systemctl restart virtuality-web
```
Порт панели, пользователь и режим автообновления сохраняются в `/var/lib/virtuality/config/web.env` и не сбрасываются при обновлениях.
Полная повторная установка компонентов ноды:
```bash
@@ -392,6 +411,41 @@ sudo bash scripts/install_web_panel.sh
---
## Продакшен-настройки
Настройки ноды — `/var/lib/virtuality/config/web.env`:
```text
VIRTUALITY_WEB_PORT=8088 # порт панели
VIRTUALITY_WEB_HOST=0.0.0.0 # 127.0.0.1, если панель стоит за reverse proxy
VIRTUALITY_AUTH_USER=admin # Linux-пользователь для входа
VIRTUALITY_AUTO_UPDATE=1 # 0 — отключить ночное автообновление с GitHub
VIRTUALITY_COOKIE_SECURE=0 # 1 — cookie только по HTTPS (за reverse proxy с TLS)
```
После изменения: `cd /opt/virtuality/source && sudo bash scripts/install_web_panel.sh`. Любой параметр можно передать и переменной окружения при установке, например `VIRTUALITY_AUTO_UPDATE=0`.
Рекомендации:
- для продакшена отключите автообновление (`VIRTUALITY_AUTO_UPDATE=0`) и обновляйтесь вручную через `/update` после проверки версии;
- открывайте панель наружу только через HTTPS reverse proxy (nginx/Caddy) с `VIRTUALITY_WEB_HOST=127.0.0.1` и `VIRTUALITY_COOKIE_SECURE=1`;
- мониторинг: `GET /healthz` без авторизации возвращает `{"ok": true, "version": "..."}`;
- после 5 неверных паролей вход с этого адреса блокируется на 5 минут; сессия живёт 12 часов;
- правила проброса портов восстанавливаются после перезагрузки сервисом `virtuality-network.service`.
---
## Разработка
```bash
pip install -r web/requirements.txt -r requirements-dev.txt
make check # pyflakes + shellcheck + pytest
```
Код панели лежит в `web/` целиком и устанавливается как есть. Патчить `app.py` во время установки больше не нужно: изменения вносятся прямо в `web/` и покрываются тестами в `tests/`. GitHub Actions запускает проверки на Python 3.11–3.13 и собирает ISO по тегу `v*`.
---
## Полезные команды
```bash
@@ -416,14 +470,13 @@ journalctl -u virtuality-web -f
- ARM64 cloud-image templates;
- cloud-init для быстрых VM;
- web-console/noVNC;
- управление storage pools;
- backup/snapshot manager;
- сетевой менеджер bridge/VLAN;
- роли и права пользователей;
- журнал событий;
- автообновление;
- кластеризация.
- кластеризация;
- готовые образы для Raspberry Pi / Orange Pi 5.
---