Установка WebVirtCloud на Ubuntu 20.04

WebVirtCloud — веб-инструмент для управления виртуализацией на базе KVM. Он позволяет администраторам и пользователям создавать, управлять и удалять виртуальные машины на гипервизоре KVM через веб-интерфейс. Проект основан на Django и поддерживает авторизацию и аутентификацию пользователей. С помощью WebVirtCloud можно управлять несколькими QEMU/KVM гипервизорами, сетями гипервизоров и пулами хранилища из одной установки.
Основные понятия
- KVM: модуль ядра Linux для аппаратной виртуализации.
- libvirt: API/демон для управления виртуальными машинами.
- WebVirtCloud: Django-приложение с веб-интерфейсом для libvirt.
Требования
- Сервер с Ubuntu 20.04.
- Доступ root или пользователь с sudo.
- Подключение к интернету для загрузки пакетов и репозитория.
Начало работы
Сначала обновите пакеты системы:
apt-get update -yПосле обновления переходите к следующим шагам.
Проверка поддержки виртуализации
Нужно убедиться, что процессор поддерживает аппаратную виртуализацию:
grep -E -c "vmx|svm" /proc/cpuinfoЕсли вывод больше 0 — поддержка есть. Пример вывода:
2Далее проверьте, способна ли система запускать KVM ГМ (cpu-checker):
apt-get install cpu-checker -y
kvm-okОжидаемый пример вывода:
INFO: /dev/kvm exists
KVM acceleration can be usedВажно: если /dev/kvm отсутствует или kvm-ok сообщает об ошибках, проверьте включение виртуализации в BIOS/UEFI и загрузку модулей kvm_intel/kvm_amd.
Установка KVM и связанных инструментов
Установите QEMU/KVM, libvirt и базовые инструменты:
apt-get install qemu qemu-kvm libvirt-daemon bridge-utils virt-manager virtinst -yПроверьте, загружены ли модули KVM:
lsmod | grep -i kvmПример вывода:
kvm_intel 286720 0
kvm 663552 1 kvm_intelПроверьте статус демона libvirtd:
systemctl status libvirtdПример вывода (усечён):
? libvirtd.service - Virtualization daemon
Loaded: loaded (/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2021-08-01 04:57:14 UTC; 1min 3s ago
TriggeredBy: ? libvirtd-admin.socket
? libvirtd-ro.socket
? libvirtd.socket
Docs: man:libvirtd(8)
https://libvirt.org
Main PID: 5236 (libvirtd)
Tasks: 19 (limit: 32768)
Memory: 16.2M
CGroup: /system.slice/libvirtd.service
??5236 /usr/sbin/libvirtdЕсли libvirtd не активен, проверьте журналы: sudo journalctl -u libvirtd.
Установка Nginx и прочих пакетов
Установите Python, Nginx, Supervisor и зависимости для сборки модулей:
apt-get install git virtualenv python3-virtualenv python3-dev python3-lxml libvirt-dev zlib1g-dev libxslt1-dev nginx supervisor libsasl2-modules gcc pkg-config python3-guestfs libsasl2-dev libldap2-dev libssl-dev -yПосле установки можно переходить к установке WebVirtCloud.
Установка и настройка WebVirtCloud
- Скачайте код из Git:
git clone https://github.com/retspen/webvirtcloud- Перейдите в каталог и скопируйте шаблон настроек:
cd webvirtcloud
cp webvirtcloud/settings.py.template webvirtcloud/settings.py- Сгенерируйте секретный ключ для Django:
openssl rand -base64 32Пример ключа:
mTHhsUm5adG8DABJaIvmRLpQjNbL1vdeIpBDi/jQCV0=- Откройте webvirtcloud/settings.py и вставьте SECRET_KEY, затем сохраните файл:
nano webvirtcloud/settings.py
# Измените строку SECRET_KEY = "..."- Скопируйте конфигурации Supervisor и Nginx в систему:
cp conf/supervisor/webvirtcloud.conf /etc/supervisor/conf.d
cp conf/nginx/webvirtcloud.conf /etc/nginx/conf.d- Переместите проект в /srv и установите владельца:
cd ..
mv webvirtcloud /srv/
chown -R www-data:www-data /srv/webvirtcloud/- Создайте виртуальное окружение и активируйте его:
cd /srv/webvirtcloud/
virtualenv -p python3 venv
source venv/bin/activate- Установите Python-зависимости:
pip install -r conf/requirements.txtПример фрагмента вывода при успешной установке:
Successfully built libvirt-python qrcode rwlock websockify
Installing collected packages: sqlparse, pytz, asgiref, Django, soupsieve, beautifulsoup4, django-bootstrap5, django-icons, django-login-required-middleware, django-otp, segno, django-qr-code, gunicorn, six, libsass, libvirt-python, lxml, qrcode, rwlock, numpy, websockify, zipp, pyasn1, ldap3
Successfully installed Django-3.2.5 asgiref-3.4.1 ... libvirt-python-7.4.0 lxml-4.6.3 numpy-1.21.1- Выполните миграции базы данных Django:
python3 manage.py migrateЧасть вывода миграций (усечённо):
Applying otp_totp.0001_initial... OK
Applying otp_totp.0002_auto_20190420_0723... OK
Applying sessions.0001_initial... OK
* Creating default admin user
! SHOW_PROFILE_EDIT_PASSWORD is found inside settings.py
* Applying permission can_change_password for all usersВнимание: шаблон settings.py может включать опции, отмеченные предупреждениями — прочитайте их и при необходимости измените перед запуском в продакшн.
- Деактивируйте виртуальное окружение и ещё раз установите владельца на /srv/webvirtcloud:
deactivate
chown -R www-data:www-data /srv/webvirtcloud/- Удалите дефолтный сайт Nginx и перезапустите сервисы:
rm /etc/nginx/sites-enabled/default
systemctl restart nginx
systemctl restart supervisorПроверьте статус Nginx:
systemctl status nginxПример вывода (усечённо):
? nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2021-08-01 10:35:57 UTC; 12s agoНастройка KVM и libvirt скриптом
Автоматизируйте финальные настройки (по оригиналу):
wget -O - https://bit.ly/36baWUu | shПример вывода (усечённо):
Length: 151 [text/plain]
Saving to: ‘/etc/supervisor/conf.d/gstfsd.conf’
/etc/supervisor/conf.d/gstfsd.conf 100%[==================================================================>] 151 --.-KB/s in 0s
* INFO: Found function daemons_running_ubuntu
* DEBUG: DAEMONS_RUNNING_FUNC=daemons_running_ubuntu
* INFO: Running daemons_running_ubuntu()Наконец, добавьте пользователя www-data в группу kvm, чтобы веб-приложение могло работать с /dev/kvm:
adduser www-data kvmДоступ к WebVirtCloud
Откройте в браузере http://your-server-ip. Страница входа WebVirtCloud будет доступна.

По умолчанию используйте admin/admin и нажмите Sign In. После входа вы увидите панель управления:

Критерии приёмки
- Веб-интерфейс доступен по HTTP(S) и принимает логин admin.
- Демон libvirtd активен и отвечает на запросы.
- /dev/kvm доступен пользователю www-data.
- Supervisor запустил процессы Gunicorn/WSGI для WebVirtCloud.
Чек-листы по ролям
Администратор (перед установкой)
- Проверить поддержку VT-x/AMD-V в BIOS.
- Убедиться в наличии резервной копии конфигураций.
- Подготовить домен/сертификаты для HTTPS.
Оператор (пост-установка)
- Проверить статус libvirtd, nginx, supervisor.
- Создать админ-учётную запись в Django если требуется.
- Добавить гипервизоры в конфигурацию WebVirtCloud.
Мини-методология шага за шагом
- Подготовка системы: обновление, проверка виртуализации.
- Установка KVM/libvirt/инструментов.
- Установка зависимостей и Nginx/Supervisor.
- Развёртывание WebVirtCloud в виртуальном окружении.
- Миграции и настройка доступа.
- Финальные проверки и тестирование создания ГМ.
Безопасность и рекомендации
- Запускать интерфейс под отдельным системным пользователем (www-data — по умолчанию).
- На боевом сервере обязательно настроить HTTPS и ограничить доступ по IP/фаерволу.
- Уберите тестовые учётные данные (admin/admin) и создайте сильные пароли.
- По возможности используйте SELinux/AppArmor профили для защиты процессов.
Important: не оставляйте приложение открытым в интернет без HTTPS и без смены дефолтных данных.
Отладка и типичные проблемы
- /dev/kvm отсутствует: проверьте включение виртуализации в BIOS и загруженные модули kvm_intel/kvm_amd.
- libvirtd не запускается: смотрите journalctl -u libvirtd и логи /var/log/libvirt.
- Ошибки при pip install: убедитесь, что установлены все -dev пакеты (libvirt-dev, libssl-dev и т.д.).
- Проблемы прав доступа: проверьте, входит ли www-data в группу kvm и права на /srv/webvirtcloud.
Когда этот подход не подходит (альтернативы)
- Если вам нужен кластерный, корпоративный продукт — рассмотрите oVirt или OpenNebula.
- Для лёгкого графического управления на локальной рабочей станции можно использовать Cockpit с модулем Virtual Machines или virt-manager.
- Если нужна тонкая интеграция с OpenStack — используйте Nova/Libvirt в составе OpenStack.
Совместимость и миграция
- WebVirtCloud работает с KVM/libvirt на Linux.
- Для перехода с другого веб-интерфейса потребуется экспорт/импорт конфигураций гипервизоров и дисков вручную.
Шаблон проверки (Acceptance)
- Веб-интерфейс отвечает и доступны страницы пула хранения, сети и список виртуальных машин.
- Создание тестовой виртуальной машины из ISO проходит успешно (сеть и диск функционируют).
- Рестарт сервисов не приводит к потерям конфигурации.
Краткие команды для быстрого восстановления
- Перезапуск сервисов:
systemctl restart libvirtd nginx supervisor- Проверка логов Nginx:
journalctl -u nginx -n 200Глоссарий в одну строку
- libvirt: демон и API для управления гипервизорами; KVM: модуль ядра для виртуализации; QEMU: эмулятор/виртуальная машина.
Заключение
Поздравляю — WebVirtCloud установлен и базово настроен на Ubuntu 20.04. Проверьте безопасность, смените дефолтные пароли и протестируйте создание виртуальных машин. Если возникнут вопросы по отладке или интеграции с существующими гипервизорами, опишите проблему и конфигурацию — можно детально разбирать пошагово.
Краткое руководство для соцсетей: WebVirtCloud установлен — управления KVM через веб-интерфейс доступно на вашем сервере. Перейдите на http://your-server-ip и выполните первый вход под admin, затем обновите учётные записи и настройте HTTPS.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента