Гид по технологиям

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

• 5 min read • Виртуализация • Обновлено 25 Nov 2025
WebVirtCloud на Ubuntu 20.04 — установка
WebVirtCloud на Ubuntu 20.04 — установка

Иллюстрация WebVirtCloud

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

  1. Скачайте код из Git:
git clone https://github.com/retspen/webvirtcloud
  1. Перейдите в каталог и скопируйте шаблон настроек:
cd webvirtcloud
cp webvirtcloud/settings.py.template webvirtcloud/settings.py
  1. Сгенерируйте секретный ключ для Django:
openssl rand -base64 32

Пример ключа:

mTHhsUm5adG8DABJaIvmRLpQjNbL1vdeIpBDi/jQCV0=
  1. Откройте webvirtcloud/settings.py и вставьте SECRET_KEY, затем сохраните файл:
nano webvirtcloud/settings.py
# Измените строку SECRET_KEY = "..."
  1. Скопируйте конфигурации Supervisor и Nginx в систему:
cp conf/supervisor/webvirtcloud.conf /etc/supervisor/conf.d
cp conf/nginx/webvirtcloud.conf /etc/nginx/conf.d
  1. Переместите проект в /srv и установите владельца:
cd ..
mv webvirtcloud /srv/
chown -R www-data:www-data /srv/webvirtcloud/
  1. Создайте виртуальное окружение и активируйте его:
cd /srv/webvirtcloud/
virtualenv -p python3 venv
source venv/bin/activate
  1. Установите 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
  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 может включать опции, отмеченные предупреждениями — прочитайте их и при необходимости измените перед запуском в продакшн.

  1. Деактивируйте виртуальное окружение и ещё раз установите владельца на /srv/webvirtcloud:
deactivate
chown -R www-data:www-data /srv/webvirtcloud/
  1. Удалите дефолтный сайт 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 будет доступна.

Страница входа WebVirtCloud

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

Панель управления WebVirtCloud

Критерии приёмки

  • Веб-интерфейс доступен по HTTP(S) и принимает логин admin.
  • Демон libvirtd активен и отвечает на запросы.
  • /dev/kvm доступен пользователю www-data.
  • Supervisor запустил процессы Gunicorn/WSGI для WebVirtCloud.

Чек-листы по ролям

Администратор (перед установкой)

  • Проверить поддержку VT-x/AMD-V в BIOS.
  • Убедиться в наличии резервной копии конфигураций.
  • Подготовить домен/сертификаты для HTTPS.

Оператор (пост-установка)

  • Проверить статус libvirtd, nginx, supervisor.
  • Создать админ-учётную запись в Django если требуется.
  • Добавить гипервизоры в конфигурацию WebVirtCloud.

Мини-методология шага за шагом

  1. Подготовка системы: обновление, проверка виртуализации.
  2. Установка KVM/libvirt/инструментов.
  3. Установка зависимостей и Nginx/Supervisor.
  4. Развёртывание WebVirtCloud в виртуальном окружении.
  5. Миграции и настройка доступа.
  6. Финальные проверки и тестирование создания ГМ.

Безопасность и рекомендации

  • Запускать интерфейс под отдельным системным пользователем (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.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро