Обзор развертывания KVM на сервере¶
Данная инструкция описывает процесс установки и настройки среды виртуализации KVM, панели управления Cockpit и инфраструктуры для работы с SSL-сертификатами.
Предварительные требования¶
Для корректной работы системы требуются следующие параметры:
-
Операционная система: Ubuntu (версии 24.04 и выше поддерживаются с учетом специфики установки пакетов Python).
-
Права доступа: Права суперпользователя (
root) для управления системными службами и установкой пакетов. -
Порты:
-
80/443: Для работы веб-интерфейса через SSL (используется Certbot standalone). -
9090: Стандартный порт для доступа к панели управления Cockpit. -
3000: Внутренний порт приложения.
FDQN итоговой панели на домене hostkey.in¶
Для доступа к веб-интерфейсу используется динамически формируемый доменное имя:
| Параметр | Значение |
|---|---|
| Префикс | kvm |
| Домен | hostkey.in |
| Полный шаблон | kvm{Server_ID}.hostkey.in |
Процесс установки приложения¶
Процесс развертывания включает в себя установку системных компонентов виртуализации и настройку веб-интерфейса управления:
-
Установка базовых пакетов:
-
Устанавливаются компоненты виртуализации:
qemu-kvm,libvirt-daemon-system,libvirt-clients,bridge-utils,virtinst. -
Устанавливается панель управления
cockpitи модуль для работы с виртуальными машинамиcockpit-machines. -
Для систем Ubuntu 24.04+ дополнительно устанавливаются модули
qemu-system-modules-spice. -
Устанавливается
certbotдля управления SSL-сертификатами. -
Настройка системы:
-
Устанавливается имя хоста (hostname) на основе FQDN.
-
В файл
/etc/hostsдобавляется запись для корректного разрешения локального имени. -
Служба
libvirtdи сокетcockpit.socketпереводятся в состояние запущены (started) и добавлены в автозагрузку (enabled). -
Настройка безопасности Cockpit:
-
Если используется Ubuntu 24.04+, из файла
/etc/cockpit/disallowed-usersудаляется ограничение на вход под пользователемroot. -
Подготовка к получению SSL:
-
Останавливаются и отключают службы
nginxиapache2, если они установлены. -
Принудительно останавливаются все Docker-контейнеры, занимающие порты
80и443. -
Получение сертификатов Let's Encrypt:
-
Выполняется получение SSL-сертификата через режим
--standalone. -
Сертификаты копируются в директорию
/etc/cockpit/ws-certs.d/с преобразованием форматов для совместимости с Cockpit. -
Устанавливаются соответствующие права доступа (
chown root:cockpit-ws,chmod 640). -
Дополнительное ПО:
-
Через менеджер пакетов Python (
pip3) устанавливается утилитаtracer.
Права доступа и безопасность¶
-
Пользователи: Доступ к Cockpit разрешен для пользователя
root(на современных версиях ОС настройка выполняется автоматически). -
Сертификаты: Файлы ключей в директории
/etc/cockpit/ws-certs.d/имеют ограниченный доступ (владелецroot, группаcockpit-ws). -
Брандмауэр: Порт управления Cockpit должен быть открыт для внешнего доступа.
Базы данных¶
В данной конфигурации специализированные базы данных не развертываются; управление виртуальными машинами осуществляется через подсистему libvirt.
Контейнеры Docker и их запуск¶
Для обеспечения работы веб-прокси с автоматическим обновлением сертификатов используется контейнер:
| Параметр | Значение |
|---|---|
| Имя образа | jonasal/nginx-certbot:latest |
| Сеть | host (режим использования сетевого стека хоста) |
| Тома (volumes) | - nginx_secrets:/etc/letsencrypt- /data/nginx/user_conf.d:/etc/nginx/user_conf.d |
| Политика перезапуска | unless-stopped |
| Переменные окружения | CERTBOT_EMAIL=hkadm@hostkey.com |
Кастомные скрипты и дополнительные настройки¶
В процессе развертывания выполняются следующие действия:
-
Настройка проксирования: В конфигурационные файлы Nginx вносятся изменения для перенаправления трафика (proxy_pass) на внутренний порт
127.0.0.1:3000. -
Очистка окружения: Выполняется принудительный выход из Docker Swarm (
docker swarm leave --force), если он был активен, для предотвращения конфликтов сетевых мостов.
Инструкция по обновлению приложения¶
Для обновления компонентов системы необходимо:
-
Обновить системные пакеты через
apt update && apt upgrade. -
Перезапустить службы управления виртуализацией и панель Cockpit:
Расположение конфигурационных файлов и данных¶
-
/etc/cockpit/ws-certs.d/— директория с SSL-сертификатами для панели управления. -
/data/nginx/user_conf.d/— директория с пользовательскими конфигурациями Nginx. -
/root/nginx/compose.yml— файл конфигурации Docker Compose для прокси-сервера.
Доступные порты для подключения¶
| Порт | Назначение | Протокол |
|---|---|---|
443 | Веб-интерфейс (через SSL) | HTTPS |
9090 | Панель управления Cockpit | HTTP/HTTPS |